繁体   English   中英

在 R 中计算相关系数时的问题

[英]Problem While Calculating Correlation Coefficient in R

我试图计算 R 中一些变量之间的相关系数。数据在 excel 文件中,excel 文件是通过在 Python 中使用 Pandas 数据框生成的。 这里的问题是 R 可以读取数据,但无法正确计算相关系数,如所附屏幕截图所示。

R 代码和结果

以前我可以使用如图所示的相同代码从其他 excel 文件数据计算 R 中的相关系数。 这里有什么问题? 请告诉我。 提前致谢。

虽然您提供的数据/代码是图像,但我想我可以为这种情况提供解决方案。

首先说明问题的原因,你的相关矩阵看起来很奇怪的原因是complete.obsna.omit做同样的工作,在你的data_cor ,只有两行在每个变量中都没有NA

例如,让我们如下定义数据dummy并查看结果。

dummy <- data.frame(
  N0 = rnorm(10),
  N1 = runif(10),
  N2 = c(.3,.4,rep(NA,8)),
  N3 = rchisq(10,3)
)
dummy

            N0         N1  N2       N3
1  -1.38246690 0.38116217 0.3 5.144132
2   0.77977538 0.06383890 0.4 3.195502
3  -1.08709820 0.28024669  NA 3.890352
4   0.34685457 0.71857164  NA 2.816047
5  -1.58245449 0.39671123  NA 5.136402
6  -0.38614131 0.02491107  NA 3.103611
7  -1.38644384 0.86949460  NA 4.255433
8  -0.87290110 0.39692126  NA 1.454483
9   0.01181121 0.31394631  NA 2.802918
10 -0.97159797 0.05254728  NA 1.458610

cor(dummy, method = "pearson", use = "complete.obs")
   N0 N1 N2 N3
N0  1 -1  1 -1
N1 -1  1 -1  1
N2  1 -1  1 -1
N3 -1  1 -1  1

cor(na.omit(dummy))
   N0 N1 N2 N3
N0  1 -1  1 -1
N1 -1  1 -1  1
N2  1 -1  1 -1
N3 -1  1 -1  1

如您所知,相关系数是如何计算的,如果每个变量只存在两个样本,( x1,x2 vs y1,y2 ) 为1-1 (假设x1 != x2y1 != y2 )。

因此,在这种情况下,如果您的目的是使用具有完整观察结果的样本,则该结果可能是正确的。

对于N4它必须是1-1 ,但如果您需要其他人之间的适当相关系数,请尝试使用pairwise.complete.obs参数use =

cor(dummy, method = "pearson", use = "pairwise.complete.obs")

           N0         N1 N2         N3
N0  1.0000000 -0.2408998  1 -0.4259661
N1 -0.2408998  1.0000000 -1  0.3043064
N2  1.0000000 -1.0000000  1 -1.0000000
N3 -0.4259661  0.3043064 -1  1.0000000

在这种情况下,这将为其他变量提供正确的结果。

cor(dummy[,-3])

           N0         N1         N3
N0  1.0000000 -0.2408998 -0.4259661
N1 -0.2408998  1.0000000  0.3043064
N3 -0.4259661  0.3043064  1.0000000

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM