有没有办法在R中快速有效地比较3个或更多相关系数?我知道用于比较2个相关系数的cocor
包,但我正在寻找一种方法来同时运行所有成对比较,而不是单独进行每个比较。
这种成对相关系数比较在以下期刊文章中描述:
Levy,K.J。成对比较涉及与相关性,比例或方差相关的不等样本量。 BR。 J. Math。统计。心理学。 30:137-139
我想通过使用以下代码来比较相关系数,以便为每个成对比较生成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
包中的函数生成这些结果,但我希望能够在不止一次成对比较的情况下运行此测试。
谢谢!
答案 0 :(得分:0)
您可以创建相关矩阵。这是一个例子,
# Load data
data("mtcars")
my_data <- mtcars[, c(1,3,4,5,6,7)]
# print the first 6 rows
head(my_data, 6)
输出上述代码:
mpg disp hp drat wt qsec
Mazda RX4 21.0 160 110 3.90 2.620 16.46
Mazda RX4 Wag 21.0 160 110 3.90 2.875 17.02
Datsun 710 22.8 108 93 3.85 2.320 18.61
Hornet 4 Drive 21.4 258 110 3.08 3.215 19.44
Hornet Sportabout 18.7 360 175 3.15 3.440 17.02
Valiant 18.1 225 105 2.76 3.460 20.22
现在通过命令创建相关矩阵:
res <- cor(my_data, method = "pearson", use = "complete.obs")
# or just by using res <- cor(my_data)
round(res,2)
以上程序的输出:
mpg disp hp drat wt qsec
mpg 1.00 -0.85 -0.78 0.68 -0.87 0.42
disp -0.85 1.00 0.79 -0.71 0.89 -0.43
hp -0.78 0.79 1.00 -0.45 0.66 -0.71
drat 0.68 -0.71 -0.45 1.00 -0.71 0.09
wt -0.87 0.89 0.66 -0.71 1.00 -0.17
qsec 0.42 -0.43 -0.71 0.09 -0.17 1.00
答案 1 :(得分:0)
我编写了一个函数(Comparing_Correlation_Coefficients
),它仅使用基本R函数来完成此任务。它需要7个参数(前三个参数是必需的):
Correlation_Coefficients
:包含要分析的相关系数的数值向量
Numbers_of_Observations
:一个数字或整数矢量,其中包含进入每个相应相关系数的观测值的数量
Identifiers
:一个字符或因子向量,其中包含用于标识每个相应相关系数的名称
Data_Frame
:要包括的可选数据框,以便可以为前三个自变量提供列名(应为此Data_Frame
自变量提供这些列所来自的数据框)>
Alpha = 0.05
:可以测试其显着性的alpha值(默认为0.05
)
Control_for_Experimentwise_Error = TRUE
:一个参数,指定此函数是否应给出保守估计(即,将实验错误率保持在给定的alpha值)或自由估计(即,对每个函数使用给定的alpha值)成对比较);默认值为TRUE
,将实验错误率保持在alpha并根据成对比较的次数计算比较错误率
The_Strength_of_the_Correlation_is_More_Important_Than_the_Sign_of_the_Correlation = FALSE
:一个参数,指定是否要比较相关系数的绝对值;默认值FALSE
将在不取相关系数绝对值的情况下计算出显着差异(换句话说,默认情况是将相关系数的符号视为比相关强度更重要)>
以下是此功能的GitHub页面链接:
https://github.com/davidblakneymoore/Comparing-3-or-More-Correlation-Coefficients-in-R
享受!