有没有办法在R中快速有效地比较3个或更多相关系数?我知道用于比较2个相关系数的 cocor
包,但我正在寻找一种方法来一次运行所有成对比较,而不是单独进行每一个 .
我想通过使用以下代码比较相关系数来为每个成对比较生成p值:
p_Value = (2*(1-pnorm(abs(((0.5*log((1+r1)/(1-r1)))-(0.5*log((1+r2)/(1-r2))))/(((1/(n1-3))+(1/(n2-3)))^0.5)))))
# r1 = first correlation coefficient in the comparison
# r2 = second correlation coefficient in the comparison
# n1 = number of observations that went in to generating r1
# n2 = number of observations that went in to generating r2
上述代码首先将相关系数转换为z分数,然后计算它们之间的差异(由观察数量加权),最后确定p值 .
这是一个示例数据集:
Relationship <- c("A", "B", "C")
CorrCoeff <- c(0.985, 0.743, 0.430)
CorrCoeff <- as.data.frame(cbind(Comparison, CorrCoeff))
CorrCoeff$nSamples <- 32
> CorrCoeff
Relationship CorrCoeff nSamples
1 A 0.985 32
2 B 0.743 32
3 C 0.43 32
我想要的输出是:
> Results
Pairwise_Comparison p_Value
1 A-B 1.543237e-08
2 A-C 4.352074e-14
3 B-C 0.0582968
或者,更好的是,我正在寻找的功能可以为相关系数分配分离字母:
> Separation_Lettering
Relationship Letter
1 A a
2 B b
3 C b
同样,我可以使用 cocor
包中的函数生成这些结果,但我希望能够在一次以上的一对比较中运行此测试 .
谢谢!
1 回答
您可以创建相关矩阵 . 这是一个例子,
上述代码的输出:
现在按命令创建相关矩阵:
上述计划的输出: