繁体   English   中英

在R中循环以为统计模型选择最低的AIC

[英]Loop in R to select lowest AIC for a statistical model

我想编写一个循环,通过更改自由度来获得以下模型的最低AIC值,例如varknots1的定义中的df=2

我在这里只使用随机数据,因为我不知道如何上传数据。 我正在尝试学习编写自己的循环,但是,目前我还没有成功实现这一目标。

有人可以帮我解决这个问题吗?

library(dlnm)
library(splines)

A = rnorm(500)
B = rnorm(500)
C = rnorm(500)
D = rnorm(500)
varknots1 <- equalknots(B,fun="bs",df=5,degree=2)
lagknots1 <- logknots(24, 3)
cb1 <-crossbasis(B,lag=24,argvar=list(fun="bs",knots=varknots1),arglag=list(knots=lagknots1))   

varknots2 <- equalknots(C,fun="bs",df=5,degree=2)
lagknots2 <- logknots(24, 3)
cb2 <- crossbasis(C, lag=24, argvar=list(fun="bs",knots=varknots2), arglag=list(knots=lagknots2))

model<-lm(A~cb1+cb2+D)
AIC(model)
aic<-rep(NA,8)  
for(i in 1:8){
    varknots1 <- equalknots(B,fun="bs",df=(i+2),degree=2)
    lagknots1 <- logknots(24, 3)
    cb1 <-crossbasis(B,lag=24,argvar=list(fun="bs",knots=varknots1),arglag=list(knots=lagknots1))   
    varknots2 <- equalknots(C,fun="bs",df=(i+2),degree=2)
    lagknots2 <- logknots(24, 3)
    cb2 <- crossbasis(C, lag=24, argvar=list(fun="bs",knots=varknots2),  arglag=list(knots=lagknots2))
    aic[i]<-AIC(lm(A~cb1+cb2+D))
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM