使用 gam 函数拟合平滑样条

fit a smoothing spline using gam function

我想使用 gam 函数拟合平滑样条。尝试绘制拟合值会导致错误 -object$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

谢谢。此致,玛丽 A. 马里恩

您的 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)