2
检查差异是否小于机器精度的正确/标准方法是什么?
我经常遇到必须检查所获得的差异是否超出机器精度的情况。为此,R似乎有一个方便的变量:.Machine$double.eps。但是,当我转向R源代码获取有关使用此值的准则时,会看到多种不同的模式。 例子 以下是stats库中的一些示例: 检验 if(stderr < 10 *.Machine$double.eps * abs(mx)) chisq.test if(abs(sum(p)-1) > sqrt(.Machine$double.eps)) 整合 rel.tol < max(50*.Machine$double.eps, 0.5e-28) 影响力 e[abs(e) < 100 * .Machine$double.eps * median(abs(e))] <- 0 PRINCOMR if (any(ev[neg] < - 9 * .Machine$double.eps * ev[1L])) 等等 问题 一个如何理解这些不同背后的理由10 *,100 *,50 *和sqrt()修饰? 是否有关于.Machine$double.eps用于调整由于精度问题引起的差异的准则?