【发布时间】:2016-01-15 21:39:56
【问题描述】:
我已经运行了 R 函数 stl() 函数并将其生成的残差用于 grubbs 测试。代码如下:
stl.res = stl(dataset, s.windows='periodic')
residuals = as.numeric(strl.res$time.series[, "remainder"])
grubbs.result = grubbs.test(residuals)
strsplit(grubbs.result$alternative," ")[[1]][3]
## [1] "38.4000349179783"
outlier = as.numeric(strsplit(grubbs.result$alternative," ")[[1]][3])
outlier
## [1] 38.40003492
which(residuals == outlier)
## integer(0)
我的问题是为什么which() 的返回值为0。实际上residuals[1920] = 38.4000349179783。所以which()的调用应该返回1921的值,而不是0。我猜这是精度的问题。我尝试了很多方法,但没有设法解决它。
【问题讨论】:
-
which(abs(residuals - outlier) < 1e-9)这样的东西怎么样?
标签: r