如何在R中编写一个一次测试多个参数的循环?
我编写了下面的循环来选择最佳的df,x,这样我就可以得到lm模型的最低AIC如何在R中编写一个一次测试多个参数的循环?,r,loops,R,Loops,我编写了下面的循环来选择最佳的df,x,这样我就可以得到lm模型的最低AIC aic<-rep(NA,20) for(i in 1:20){ cb1 <- crossbasis(AFH6, lag=24, argvar=list(fun="ns",df=8, cen=200), arglag=list(knots= logknots(24, 3))) cb2 <- crossbasis(OutT, lag=24, argvar=list(fun="poly", degree=
aic<-rep(NA,20)
for(i in 1:20){
cb1 <- crossbasis(AFH6, lag=24, argvar=list(fun="ns",df=8, cen=200), arglag=list(knots= logknots(24, 3)))
cb2 <- crossbasis(OutT, lag=24, argvar=list(fun="poly", degree=3, cen=12.28), arglag=list(knots= logknots(24, 3)))
cb3 <- crossbasis(OutRH, lag=24, argvar=list(fun="poly", degree=3, cen=68.5), arglag=list(knots= logknots(24, 3)))
aic[i]<-AIC(lm(NH3cH6~cb1+cb2+cb3+ns(DenH6,i)+ns(HenageH6,6)+ns(MweightH6,7)+ns(Time,5)+as.factor(LightH6)+ as.factor(MoltH6)))}
谢谢你的帮助 可能使用三重循环并将结果存储在三维数组中?您可能需要考虑
mgcv()
包中的gam()
函数,该函数将自动调整平滑项的复杂程度(将通过s()
而不是ns()表示)
为了最大化广义交叉验证分数(几乎等同于最小化AIC),是的,我想尝试一下,但我不知道如何编写代码……@flodel
lm( NH3cH6 ~ cb1+cb2+cb3+ns(DenH6,i)+ns(HenageH6,j)+ns(MweightH6,k)+ns(Time,5)+as.factor(LightH6)+ as.factor(MoltH6)