【发布时间】:2014-12-17 15:22:28
【问题描述】:
我正在尝试使用 loess 拟合模型,但我遇到了诸如“使用 3 处的伪逆”、“邻域半径 1”和“倒数条件数 0”之类的错误。这是一个 MWE:
x = 1:19
y = c(NA,71.5,53.1,53.9,55.9,54.9,60.5,NA,NA,NA
,NA,NA,178.0,180.9,180.9,NA,NA,192.5,194.7)
fit = loess(formula = y ~ x,
control = loess.control(surface = "direct"),
span = 0.3, degree = 1)
x2 = seq(0,20,.1)
library(ggplot2)
qplot(x=x2
,y=predict(fit, newdata=data.frame(x=x2))
,geom="line")
我意识到我可以通过选择更大的跨度值来修复这些错误。但是,我正在尝试使这种拟合自动化,因为我有大约 100,000 个与此类似的时间序列(每个长度约为 20)。有没有一种方法可以自动选择一个跨度值来防止这些错误,同时仍然为数据提供相当灵活的拟合?或者,谁能解释这些错误的含义?我在 loess() 和 simpleLoess() 函数中做了一些探索,但在调用 C 代码时我放弃了。
【问题讨论】:
-
您可能会发现这篇文章很有用:stat.ethz.ch/pipermail/r-help/2005-November/082853.html。您可以计算具有多个不同跨度的黄土拟合的 AIC,并选择具有最小 AIC 的跨度。
-
@bdemarest 感谢您的链接!但是,我试图找出一种“数学”选择跨度而不是通过 AIC/交叉验证/等的方法。对于我的场景来说,多次运行每个拟合的计算成本太高。
-
请告诉我您最终使用的解决方案。我自己的努力使我相信黄土优化问题的封闭式解决方案是不可能的,但我很想学习一种更好/更快的选择跨度的方法。