2017-04-26 14 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