求解R

时间:2018-01-20 22:53:26

标签: r matrix solver

我有来自官方政府机构的大量数据集,这些数据集存在扰动数据。但是,相同的数据集具有来自原始未受干扰的数据的行和列总计,因此表中的行和列不会累加到它们各自的总数中 - 如下表所示,当从表中添加单元格时存在差异。公布的总数(总和)。

     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中)。您建议使用哪些软件包/功能可以快速简便地实现这一目标?在上面的例子中,解决方案是:

      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

我已经研究过有关stackoverflow的问题,google和避难所已经能够很好地指导如何在R中有效地完成这项工作。

非常感谢任何建议。感谢。

1 个答案:

答案 0 :(得分:0)

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

  • 众所周知的RAS算法
  • 二次规划公式
  • 熵制定(link)

我完全不了解您的数据。即第一行加起来为156.差异不是2而是9(或-9)。另一个问题是,您已知的行总和和已知的列总和不会相加到相同的数字。

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