【问题标题】:Why does Stata calculate different sums depending on aggregation of variables?为什么Stata会根据变量的聚合计算不同的总和?
【发布时间】:2023-04-09 10:20:01
【问题描述】:

我注意到,Stata 估计的总和略有不同,具体取决于总和的聚合级别。

举个例子,我有 4 个变量(Var1、Var2、Var3、Var4)。

Var1        Var2        Var3        Var4
420966      10804428    21982560    1055822272
207381      20133238    69127000    580531008
217297.6    7946694.5   23631250    554597952
327553.2    7505444     10898800    261170592
119776.4    715082.75   607820.3125 414926752
3758613     2533234.5   225734784   88380432

首先,我估计所有 4 个变量的总和:

gen sumVars1234 = Var1 + Var2 + Var3 + Var4 
   // this calculates the same sum as `egen rowtotal`

然后我分别估计变量 1 和 2 以及变量 3 和 4 的总和:

gen sumVars12 = Var1 + Var2 
gen sumVars34 = Var3 + Var4 

当我将sumVars12sumVars34 相加时,会生成sumVars12_34

gen sumVars12_34 = sumVars12 + sumVars34
gen dif = sumVars12_34 - sumVars1234    // I calculate difference between both sums

但是,sumVars12_34 不等于 sumVars1234,我不明白为什么。

sumVars12   sumVars34   sumVars12_34    sumVars1234     dif
11225394    1077804800  1089030144      1089030272      -128
20340618    649657984   669998592       669998656       -64
8163992     578229184   586393152       586393216       -64
7832997     272069376   279902368       279902400       -32
834859.125  415534560   416369408       416369440       -32
6291848     314115200   320407040       320407072       -32

我知道这些差异非常小,我确信有一个简单的解释,但我不确定它是什么!任何见解将不胜感激。谢谢!

【问题讨论】:

  • 您默认使用浮动存储类型。要准确地保存非常大的整数,您需要 long 或 double 类型。请注意,差异是 2 的幂,这是精度问题的标志。
  • 我会检查原件。数据也有可能在输入时四舍五入。

标签: stata


【解决方案1】:

这很可能是由于“混合数学”(整数和实数浮点类型变量)。您在也包含整数的输入数据中具有数字精度,因此可能是由于四舍五入所致。我会在 Excel 中复制计算,但前提是 .0 添加到您的整个整数中。如您所知,在 Excel 中,您可以选择单元格区域中的所有数据,单击鼠标右键,然后选择“设置单元格格式”-->“数字”,并将“小数位数”指定为 1。然后进行求和。

【讨论】:

  • 有没有办法在不四舍五入的情况下在 Stata 中生成总和?谢谢!
  • 正如 Nick Cox 上面提到的,如果您确保将具有大整数的变量存储为 longdouble 类型,那么舍入应该不是问题。用于确保变量类型正确的方法取决于您将数据导入 Stata 的方式(例如 import excelimport delimited)。有关如何在导入数据时指定变量类型的详细信息,请参阅每个命令的帮助文件。
猜你喜欢
  • 1970-01-01
  • 2019-08-06
  • 2020-03-26
  • 1970-01-01
  • 2013-12-10
  • 1970-01-01
  • 1970-01-01
  • 2020-01-03
  • 1970-01-01
相关资源
最近更新 更多