我想使用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
答案 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)