首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R- loess预测返回NA

R- loess预测返回NA
EN

Stack Overflow用户
提问于 2015-01-06 18:10:37
回答 2查看 10.5K关注 0票数 11

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

代码语言:javascript
复制
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)

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-06 18:19:25

predict.loess的手册页

当使用

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

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

例如,这将会起作用(附带说明:绘制预测后,我的感觉是您应该稍微增加loess调用中的span参数):

代码语言:javascript
复制
lo <- loess(y~x, control=loess.control(surface="direct"))
predict(lo, newdata=x.all)
票数 25
EN

Stack Overflow用户

发布于 2015-01-06 18:33:10

除了尼科的回答:我建议拟合一个gam (它使用惩罚回归样条)。然而,如果你没有一个基于科学的模型,那么推断是不可取的。

代码语言:javascript
复制
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")

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

https://stackoverflow.com/questions/27796368

复制
相关文章

相似问题

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