【发布时间】:2021-12-24 13:24:02
【问题描述】:
我试图计算 R 中某些变量之间的相关系数。这里的问题是 R 可以读取数据但无法正确计算相关系数,如所附屏幕截图所示。
以前我可以使用与图中所示相同的代码从其他 excel 文件数据中计算 R 中的相关系数。这里有什么问题?
【问题讨论】:
-
最好将代码作为文本而不是图像提供。
-
好的。感谢您的善意建议。
我试图计算 R 中某些变量之间的相关系数。这里的问题是 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)。
因此,在这种情况下,如果您的目的是使用具有完整观察的样本,则该结果可能正确。
它必须是1 或-1 与N4,但如果您需要其他之间适当的相关系数,请尝试使用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
【讨论】: