我在R中有一个矩阵,如下所示:
(72 -- 90 -- 60)
(60 83 -- -- --)
(50 -- 77 83 --)
(-- 40 -- 84 65)
可重复如下:
B = matrix(c(72,60,50,NA,NA,83,NA,40,90,NA,77,NA,NA,NA,83,84,60,NA,NA,65),nrow=4,ncol=5)
在某种意义上,它是一个稀疏矩阵,并非所有元素都被填充。我想要做的是找到一个调整矩阵(或向量,添加到每列),以便行的平均值等于列的平均值。答案是:
(13.04, 10.93, -14.68, -22.70, 5.90)
我迭代地计算了这个并且也被舍入到2dp所以并不完全等同,但是,例如,如果你将调整添加到原始矩阵应该是这样的情况:
A = t(t(B)+c(13.04,10.93,-14.68,-21.70,5.9))
那么行平均值的平均值应该等于列平均值的平均值:
mean(colMeans(A, na.rm = TRUE, dims = 1))
mean(rowMeans(A, na.rm = TRUE, dims = 1))
然而,我认为这是一个最小二乘的问题,可以代数解决,但我不知道该怎么做或如何设置它。问题是,有没有办法使用矩阵计算而不是迭代地代数地找到调整。有人可以帮忙吗?