用上三角矩阵求平均值

时间:2016-10-19 16:54:09

标签: r

如何按行计算“一致性”元素的平均值(不考虑等于1或1.0的值):

x=matrix(c(1,1,0,1,0,1,1,1,1,0,1,1,1,0,1,0,1,1,1,0),4,5)
ncolumn=dim(x)[2]
concordance = matrix(1,ncolumn,ncolumn)
concordancevec = rep(0,(ncolumn*(ncolumn-1))/2)
for (i in 1:(ncolumn-1)){
        y=t((t(x[,i])))
        z=x[,(i+1):ncolumn]
                for (j in 1:(ncolumn-i)){
                m=(t(t(z)))
                        concordance[i,j+i] = mean(y*(m[,j])+(1-y)*(1-m[,j]))
                        concordancevec[i*j] = mean(y*(m[,j])+(1-y)*(1-m[,j]))
                }
        }
concordance

1 个答案:

答案 0 :(得分:0)

以下为您提供行方式(这是您想要的):

> sapply(1:4, function(i){mean(concordance[i,-(1:i)])})
[1] 0.4375000 0.4166667 0.6250000 0.7500000

1:4是上三角形部分中的行,对于任何此类行,concordance[i,-(1:i)]是您想要取平均值的行的一部分。只需将采用这些方法的函数应用于向量1:4

获得上三角形部分的整体平均值更容易:

> mean(concordance[upper.tri(concordance)])
[1] 0.5