【发布时间】:2017-12-13 15:06:33
【问题描述】:
我有以下代码。创建的数据集是test_means 和test_sql。两者都取您选择的变量的简单平均值。
两者都通过eye创建完全相同的数字。
为什么proc compare 说这些值不等于一个愚蠢的小值,比如 0E-14?这与两个过程中数字的存储方式有关吗?
%let var=; *Insert numeric variable to check;
%let dsn=; *Insert dataset name;
proc means noprint mean data=&dsn.;
var &var.;
output out=test_means (keep=_STAT_ &var. where=(_STAT_="MEAN"));
run;
proc sql;
create table test_sql as select
"MEAN" as _STAT_ length=8,
mean(&var.) as &var.
from &dsn.
;
quit;
proc compare data=test_means compare=test_sql;
run;
【问题讨论】:
-
查看 PROC COMPARE 的文档。特别是 METHOD= 选项。
-
我认为这只是使用浮点数引起的舍入误差。最近不是有一篇帖子有人展示了数据处理顺序影响操作结果的示例吗?
-
这些不是显着差异。查看 PROC COMPARE 中的 FUZZ 选项或软件中的数值精度。
-
我完全理解它们不是显着差异,但它们仍然是差异,我可能会被要求解释它们。操作顺序听起来不错,我会阅读的。
-
E-14级别的差异不是任何有意义的差异——不仅不是显着,而且它们不是实际差异。低于E-12的任何内容都应该被视为计算机存储事物的人工制品,除非您专门从事的工作预计会有如此大的差异。
标签: sql sas compare mean sas-macro