[英]Problem While Calculating Correlation Coefficient in R
我试图计算 R 中一些变量之间的相关系数。数据在 excel 文件中,excel 文件是通过在 Python 中使用 Pandas 数据框生成的。 这里的问题是 R 可以读取数据,但无法正确计算相关系数,如所附屏幕截图所示。
以前我可以使用如图所示的相同代码从其他 excel 文件数据计算 R 中的相关系数。 这里有什么问题? 请告诉我。 提前致谢。
虽然您提供的数据/代码是图像,但我想我可以为这种情况提供解决方案。
首先说明问题的原因,你的相关矩阵看起来很奇怪的原因是complete.obs
用na.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 != x2
和y1 != 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.