2014-02-17 1 views
1

Я хочу написать цикл, чтобы получить наименьшее значение AIC для следующей модели, изменив степень свободы, например df=2 в определении varknots1.Петля в R, чтобы выбрать самый низкий AIC для статистической модели

Я просто использую случайные данные здесь, так как не знаю, как загрузить мои данные. Я пытаюсь научиться писать петли себе, однако, мне так и не удалось сделать это в настоящее время.

Может ли кто-нибудь здесь помочь мне с этой проблемой?

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) 

ответ

2
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)) 
} 
+0

Большое вам спасибо за вашу помощь !!! @RStudent – user26221

Смежные вопросы