【发布时间】: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
当我将sumVars12 和sumVars34 相加时,会生成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