r - 黄土预测返回NA

时间:2015-01-06 10:10:37

标签: r prediction loess

我正在努力使用loess进行“样本外”预测。我得到原始样本之外的新x的NA值。我可以得到这些预测吗?

x <- c(24,36,48,60,84,120,180)
y <- c(3.94,4.03,4.29,4.30,4.63,4.86,5.02)
lo <- loess(y~x)
x.all <- seq(3,200,3)
predict(object = lo,newdata = x.all)

我需要模拟完整的收益率曲线,即不同期限的利率。

2 个答案:

答案 0 :(得分:15)

来自predict.loess的手册页:

  

当使用surface =“interpolate”(默认值)进行拟合时,predict.loess将不会外推 - 因此封闭原始数据的轴对齐超立方体外的点将具有缺失(NA)预测和标准误差

如果将曲面参数更改为“直接”,则可以推断值。

例如,这将起作用(在旁注:绘制预测之后,我的感觉是你应该稍微增加span调用中的loess参数:

lo <- loess(y~x, control=loess.control(surface="direct"))
predict(lo, newdata=x.all)

答案 1 :(得分:4)

除了尼科的回答:我建议改为使用gam(使用惩罚回归样条)。但是,如果您没有基于科学的模型,则不建议进行推断。

x <- c(24,36,48,60,84,120,180)
y <- c(3.94,4.03,4.29,4.30,4.63,4.86,5.02)
lo <- loess(y~x, control=loess.control(surface = "direct"))
plot(x.all <- seq(3,200,3),
     predict(object = lo,newdata = x.all),
     type="l", col="blue")
points(x, y)

library(mgcv)
fit <- gam(y ~ s(x, bs="cr", k=7, fx =FALSE), data = data.frame(x, y))
summary(fit)

lines(x.all, predict(fit, newdata = data.frame(x = x.all)), col="green")

resulting plot