比较 - 当值完全相同时,为什么我会得到微小的差异?

时间:2014-08-12 10:42:40

标签: compare sas

我正在进行基本的比较:

PROC COMPARE BASE=dset1
           COMPARE=dset2 LISTALL;
  ID description;
RUN;

当两个数据集中的值完全相同时,我会得到一些数值变量的差异。

例如,

         dset1.variable1 = 1.0988718715
         dset2.variable1 = 1.0988718715

proc compare为variable1显示以下内容:

Base       Compare    Diff.
1.0989     1.0989     -1.07E-13

我从基础中删除了所有格式和信息并比较了数据集,并且两个数据集中variable1的长度相同。

当值完全相同时,为什么会有差异?

1 个答案:

答案 0 :(得分:1)

计算机上的数字精确度并不完美,这就是为什么proc compare可以报告“相同”数字的微小差异。

您可以使用几个选项来忽略这些小差异(取自文档): METHOD = ABSOLUTE |确切| PERCENT |相对<δ> 指定判断数值相等的方法。常量(delta)是介于0和1之间的数字,指定在计算相等度量时要添加到分母的值。默认情况下,为0。 除非您使用CRITERION =选项,否则默认方法是EXACT。如果使用CRITERION =选项,那么默认方法是RELATIVE(),其中(phi)是一个小数字,它取决于运行SAS的计算机的数值精度以及CRITERION =的值。

FUZZ =数 更改小于数字的数字的值比较结果。 PROC COMPARE打印:

0表示任何小于数字的变量值。

如果小于数字

,则差异或百分比差异为空白

0表示任何小于数字的摘要统计量。

默认为0 范围:0 - 1 提示:包含许多微不足道的差异的报告在此表单中更易于阅读。 http://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#a000146741.htm