越来越多变量的平均成对相关性(R)

时间:2017-10-31 16:11:38

标签: r correlation

我有一个名为"变量的矩阵"包括9个变量(9列)。我已经用这段代码获得了成对相关矩阵:

matrix.cor <- cor(variables, method="kendall", use="pairwise")

现在我想获得平均成对相关性作为所考虑变量数量的函数。我的意思是,2个变量,3个变量,4个变量的所有可能相关性的平均值......直到9个变量才能看到添加变量的效果。我有这个R代码(从一篇文章中提取出更多的因子和列),但它运行不好,我只考虑9个变量得到平均值。

pairwisecor.df = ddply(data,c("Exp"),function(x) {
Smax = unique(x$Rich)
x = x[,variables]
cormat = cor(t(x),use="complete.obs",method=c("kendall"))
data.frame(
Smax = Smax,
no.fn = nrow(x),
avg.cor = mean(cormat[lower.tri(cormat)]) ) } )

我认为创建一个分析累积变量数的函数并不是很困难......但我只有一篇文章的参考资料,其中数据要复杂得多。 任何的想法? 谢谢

1 个答案:

答案 0 :(得分:0)

这是一个虚构的例子,从左上角开始计算下三角矩阵增大的平均值:

> (cormat <- matrix((1:25)/25, 5, 5))
     [,1] [,2] [,3] [,4] [,5]
[1,] 0.04 0.24 0.44 0.64 0.84
[2,] 0.08 0.28 0.48 0.68 0.88
[3,] 0.12 0.32 0.52 0.72 0.92
[4,] 0.16 0.36 0.56 0.76 0.96
[5,] 0.20 0.40 0.60 0.80 1.00
> avg.cor = c()
> for (i in 2:dim(cormat)[1]) {
+   avg.cor=cbind(avg.cor,mean(cormat[1:i,1:i][lower.tri(cormat[1:i,1:i])]))
+ }
> avg.cor
     [,1]      [,2]      [,3] [,4]
[1,] 0.08 0.1733333 0.2666667 0.36