r - 在 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
and y1 != y2
)。
因此,在这种情况下,如果您的目的是使用具有完整观察的样本,则该结果可能正确。
它必须是1
或-1
反对,N4
但如果您需要其他人之间适当的相关系数,请尝试使用pairwise.complete.obs
参数 for 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
推荐阅读
- sql - 应用分区后的派生列
- python - 在均衡块之间均匀拆分数据
- r - 在 r 中使用 scale_linetype_manual 错误地显示名称
- jdbc - 多个线程可以共享同一个数据库连接来同时执行多个prepareStatement吗?
- javascript - 无法生成 Prisma 客户端,outputDir.endsWith 不是函数
- javascript - 在 React 中返回 undefined 的 Fetch 方法
- python - 在嵌套的“try”语句中,哪个“except”具有优先权?
- sql - 按“类型”列从表中获取数据时出现 SQL 错误
- jquery - 用淡入淡出替换 attr 链接 - jQuery
- javascript - 在 JavaScript 中设置 WebSocket Origin 标头