使用gam函数拟合平滑样条曲线

时间:2016-07-19 05:45:22

标签: r gam

我想使用gam函数拟合平滑样条曲线。尝试绘制拟合值会导致错误 - 对象$ nsdf?我想知道这是否是一个必要的输入,如果是这样,df指的是什么?如何修复此代码。

gam.fit=gam(y~s(disp,6)+s(hp,5)+s(wt,5), data=train.dat)
mean((test.dat$y - gam.pred)^2)  # 0.0002282536
plot(gam.fit, se=TRUE, col="blue",main="10.3f.gam")
# Error in 1:object$nsdf : argument of length 0

谢谢。真诚的,Mary A. Marion

1 个答案:

答案 0 :(得分:2)

您的gam()通话语法:

gam.fit=gam(y~s(disp,6)+s(hp,5)+s(wt,5), data=train.dat)

建议您使用包gam而不是mgcv。但是,您收到的object$nsdf错误是由mgcv包产生的。 不要同时将两个包加载到R会话中!!

library(gam)
set.seed(0)
dat <- data.frame(x1 = rnorm(100), x2 = rnorm(100), x3 = rnorm(100),
                  y = rnorm(100))
fit <- gam(y ~ s(x1,6) + s(x2,5) + s(x3,5), data = dat)
par(mfrow = c(1,3)); plot.gam(fit)

enter image description here