2017-04-26 12 views
3

您是否知道如何将矩阵转换为R中所谓的双中心矩阵?这样变换矩阵的总和(col)和总和(行)全部为零向量。谢谢。R中的双中心

+2

你有没有在别的地方做过这个事情的例子?任何链接的教程或东西? – Rodrigo

+0

我想将矩阵A转换成双中心矩阵 | 1 4 7 | A = | 2 5 8 | | 3 6 9 | – Azizah

+0

我期待更清楚的解释。 – Rodrigo

回答

3

双定心的矩阵M与下面的算法来完成:

1)生成相同的尺寸比包含在行和列方向手段原始矩阵的两个矩阵。让我们称这两个矩阵R和C:

| mean(M[1,1:3]) mean(M[1,1:3]) mean(M[1,1:3]) | 
R = | mean(M[2,1:3]) mean(M[2,1:3]) mean(M[2,1:3]) | 
    | mean(M[3,1:3]) mean(M[3,1:3]) mean(M[3,1:3]) | 

| mean(M[1:3,1]) mean(M[1:3,2]) mean(M[1:3,3]) | 
C = | mean(M[1:3,1]) mean(M[1:3,2]) mean(M[1:3,3]) | 
    | mean(M[1:3,1]) mean(M[1:3,2]) mean(M[1:3,3]) | 

2)他们对减去M和添加总均值:M - C - R + grand_mean(M)

这里是执行该代码:

# example data 
M = matrix(runif(9),nrow=3,ncol=3) 

# compute the row-wise and column-wise mean matrices 
R = M*0 + rowMeans(M) # or `do.call(cbind, rep(list(rowMeans(tst)),3))` 
C = t(M*0 + colMeans(M)) # or `do.call(rbind, rep(list(colMeans(tst)),3))` 

# substract them and add the grand mean 
M_double_centered = M - R - C + mean(M[]) 

您可以检查,这给通过计算rowMeans(M_double_centered)colMeans(M_double_centered)正确的答案。

+0

感谢Jealie的解释。 – Azizah