【问题标题】:Problem While Calculating Correlation Coefficient in R在 R 中计算相关系数时的问题
【发布时间】:2021-12-24 13:24:02
【问题描述】:

我试图计算 R 中某些变量之间的相关系数。这里的问题是 R 可以读取数据但无法正确计算相关系数,如所附屏幕截图所示。

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

【问题讨论】:

  • 最好将代码作为文本而不是图像提供。
  • 好的。感谢您的善意建议。

标签: r excel


【解决方案1】:

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

首先说明问题的原因,您的相关矩阵看起来很奇怪的原因是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)。

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

它必须是1-1N4,但如果您需要其他之间适当的相关系数,请尝试使用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

【讨论】:

  • 是的。这是关于NA值。现在它起作用了。谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-05-30
  • 2017-08-18
  • 2012-09-18
  • 1970-01-01
  • 2018-09-10
  • 2012-06-25
  • 1970-01-01
  • 2019-12-10
相关资源
最近更新 更多