これがCrossValidatedでより適している場合はお詫びします。
Rのmgcvパッケージを使用してGAMモデルを二項データに適合させています。共変量の1つは周期的であるため、bs = "cc"
循環3次スプラインを指定しています。相互検証フレームワークでこれを行っていますが、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に該当するノットを手動で指定しますか?