要做很多相关测试
A lot of correlation test to do
我有这样的 df,其中包含 15 个数字列(值是随机的,不是我的真实数据):
Val(numeric): val.2: Val.3 .... Val.15
1.698 1.689 5.478 5.68
4.98 0.65 69.47 4.78
0.123 3 12 .698 6.98
-----------------------------------------------------------
0.047 65.98 123.47 1.547
我计算了每个变量之间的相关性:
val val.2 ... val.15
val 1 0.32 0.1256
val.2 0.9 1 0.125
...
val.15 0.36 0.12 1
但我想在每列之间进行相关测试 ( cor.test() )。
有没有一种方法可以自动执行此操作而不是进行大量测试,例如:
cor.test(df$val, df$val.2, 方法 = 'spearman')
cor.test(df$val, df$val.3, 方法 = 'spearman')
......等等
cor.test(df$val.14, df$val.15, 方法 = 'spearman')
你可以试试
library(Hmisc)
rcorr(as.matrix(df), type='spearman')$P
任何时候你想对所有对(或其他组合)做某事,combn
函数是一种方法。它将创建对和可选的 运行 每个对的函数:
> combn(1:4, 2, FUN=function(x) cor.test(iris[,x[1]], iris[,x[2]])$p.value)
[1] 1.518983e-01 0.000000e+00 0.000000e+00
[4] 4.513314e-08 4.073229e-06 0.000000e+00
> p.adjust(.Last.value)
[1] 1.518983e-01 0.000000e+00 0.000000e+00
[4] 1.353994e-07 8.146457e-06 0.000000e+00
我有这样的 df,其中包含 15 个数字列(值是随机的,不是我的真实数据):
Val(numeric): val.2: Val.3 .... Val.15
1.698 1.689 5.478 5.68
4.98 0.65 69.47 4.78
0.123 3 12 .698 6.98
-----------------------------------------------------------
0.047 65.98 123.47 1.547
我计算了每个变量之间的相关性:
val val.2 ... val.15
val 1 0.32 0.1256
val.2 0.9 1 0.125
...
val.15 0.36 0.12 1
但我想在每列之间进行相关测试 ( cor.test() )。
有没有一种方法可以自动执行此操作而不是进行大量测试,例如:
cor.test(df$val, df$val.2, 方法 = 'spearman')
cor.test(df$val, df$val.3, 方法 = 'spearman')
......等等
cor.test(df$val.14, df$val.15, 方法 = 'spearman')
你可以试试
library(Hmisc)
rcorr(as.matrix(df), type='spearman')$P
任何时候你想对所有对(或其他组合)做某事,combn
函数是一种方法。它将创建对和可选的 运行 每个对的函数:
> combn(1:4, 2, FUN=function(x) cor.test(iris[,x[1]], iris[,x[2]])$p.value)
[1] 1.518983e-01 0.000000e+00 0.000000e+00
[4] 4.513314e-08 4.073229e-06 0.000000e+00
> p.adjust(.Last.value)
[1] 1.518983e-01 0.000000e+00 0.000000e+00
[4] 1.353994e-07 8.146457e-06 0.000000e+00