首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >svd()与调用svd、R和IML之间的差异

svd()与调用svd、R和IML之间的差异
EN

Stack Overflow用户
提问于 2015-06-29 21:12:54
回答 1查看 154关注 0票数 0

我正在将一个包从R翻译到IML,这将在网上免费完成:)。我从分解一个大矩阵得到不同的结果,这两个结果看起来都是一样的,但是,例如,如果我取U的前2列并做U'*U,我的2x2矩阵将是完全不同的(U_11 = 1.1e-17和U_11 =1.4e-17)。差别很小(3e-18),这让我认为这可能与每个软件使用的小数有关,SAS IML和R。有人知道这个话题吗?我怎么测试这个?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-30 10:25:58

在统计学中,我们将非常小的差异描述为“统计上微不足道”。对于数值分析人员来说,小于“机器epsilon”(R中的.Machine$double.eps或SAS中的常量(“macep”))的差异几乎总是“数字上没有意义的”。

SAS和R都使用双精度计算,并且可能正在调用类似的数字库。对于这么小的差异,我猜想原因不是算法,而是每个软件使用不同的编译器标志和优化标志。

即使在单个产品中,计算出两个不同订单的结果也会导致这样的小差异。例如,运行以下数据步骤:

代码语言:javascript
复制
data _null_;
x = (1 + 1 + 1 + 1 + 1 + 1 + 1) / 7;
y = (1/7 + 1/7 + 1/7 + 1/7 + 1/7 + 1/7 + 1/7);
diff = x - y;
put diff=;
run;

我的建议是在比较不同的软件时忽略“数字不重要”的结果。有关浮点计算的详细信息,请参阅浮点指南。有关真正的细节,请参见“每一个计算机科学家都应该知道浮点算法的知识”

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31125666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档