如何找到非线性模型的最佳结

时间:2018-02-23 18:58:29

标签: r gam mgcv

我想找出gam模型的最佳结点,以下是代码:

s<-c(3:20)
n<-1
aic<-0
kt<-""
for(i in s){g<-gam(data$y~data$x1+ 
s(data$t,bs="cr",k=i)+as.factor(data$DOW),family=poisson
               ,method="REML")
aic[n]<-AIC(g)
kt[n]<-paste("A",i)
n<-n+1
}
result<-data.frame(aic,kt)
result

我得到了每个模型的AIC列表,有3到20节。然后我试图得到AIC vs knots的散点图;代码:

plot(s,aic, xlab="number of knot",ylab="AIC",main="AIC~no.of knot")

情节看起来不像U形,所以我增加了结数,3:50然后3:100。但他们仍然没有接近U形。 AIC正在减少到结数= 20。然后它对于下一个增加的结来说保持不变。 here is the plot

编辑: 为了解决这个问题,我尝试使用以下代码对此gam模型进行交叉验证:

 library(caret)
 b<-
 train(data$y~data$x1+data$t+data$DOW,method = "gam",family="poisson",
 na.action = na.pass,
 trControl = trainControl(method = "LOOCV", number = 1, repeats = 1),
 tuneGrid = data.frame(method = "GCV.Cp", select = FALSE))

问题是,它显示错误,因为y包含几个缺失值。我是新的gam,mgcv和交叉验证。任何人都可以帮我处理这些代码吗?

0 个答案:

没有答案