【发布时间】:2012-07-31 22:06:11
【问题描述】:
抱歉,如果这更适合 CrossValidated。
我正在使用 R 中的 mgcv 包将 GAM 模型拟合到二项式数据。协变量之一是周期性的,因此我指定了 bs = "cc" 循环三次样条。我在交叉验证框架中执行此操作,但是当我使用 predict 函数拟合我的保留数据时,我收到以下错误:
Error in pred.mat(x, object$xp, object$BD) :
can't predict outside range of knots with periodic smoother
下面是一些应该复制错误的代码:
# generate data:
x <- runif(100,min=-pi,max=pi)
linPred <- 2*cos(x) # value of the linear predictor
theta <- 1 / (1 + exp(-linPred)) #
y <- rbinom(100,1,theta)
plot(x,theta)
df <- data.frame(x=x,y=y)
# fit gam with periodic smoother:
gamFit <- gam(y ~ s(x,bs="cc",k=5),data=df,family=binomial())
summary(gamFit)
plot(gamFit)
# predict y values for new data:
x.2 <- runif(100,min=-pi,max=pi)
df.2 <- data.frame(x=x.2)
predict(gamFit,newdata=df.2)
任何关于我哪里出错的建议将不胜感激。也许手动指定结落在 -pi 和 pi 上?
【问题讨论】:
-
好问题,但是当您生成数据时,请确保使用
set.seed,以便每次都获得相同的数据。例如,在代码顶部使用set.seed(2),您将重新生成错误。