求解 R 中的最佳缩放矩阵

Solving for optimal scaling matrix in R

我有大量来自官方政府机构的数据集,这些数据集扰乱了数据。然而,相同的数据集具有来自原始未扰动数据的行和列总计,因此 table 中的行和列加起来不等于它们各自的总计 - 正如下面的 table 所示,有一个将已发布总数中的单元格相加时的差异(总和)。

     X1  X2  X3  X4  SUM DIFF
Y1   27  45  54  31  165   -2
Y2   17  26  38  47  126   -2
Y3   44  42  40  50  178    1
Y4   46  16  22  15   98   -1
SUM 146 126 178  98
DIFF  0   0  -4  -1

我需要缩放扰动数据以使行和列添加到行和列总计中(最好在 R 中)。您建议哪个 packages/functions 可以让这一切变得又快又简单?在上面的例子中,解决方案是:

      X1    X2    X3    X4 
Y1  1.01  1.01  1.04  0.97
Y2  0.96  1.04  1.04  1.01
Y3  1.00  0.97  0.98  1.02
Y4  1.00  0.97  1.04  1.01

我研究了关于 Whosebug 和 google 的问题,但未能获得有关如何在 R 中有效完成此操作的良好指南。

非常感谢任何建议。谢谢

这叫做matrix balancing。有几种方法可以解决这个问题,包括:

  • 著名的RAS算法
  • 二次规划公式
  • 熵公式(link)

我不完全理解你的数据。 IE。第一行加起来是 156。差值不是 2,而是 9(或 -9)。另一个问题是您已知的行总和和已知列总和加起来不相同。

无论如何,RAS 算法很容易用 R 编写。还有一个包 mipfp 可以提供帮助。