与BIC的正向程序

Vin*_*ent 2 r

我正在尝试使用前向逐步算法和BIC标准为线性模型选择变量.正如帮助文件所示,并且像往常一样,我写了以下内容:

model.forward<-lm(y~1,data=donnees)
model.forward.BIC<-step(model.forward,direction="forward", k=log(n), scope=list(lower = ~1, upper = ~x1+x2+x3), data=donnees)
Run Code Online (Sandbox Code Playgroud)

k=log(n)表明我使用BIC.但R回归:

Error in extractAIC.lm(fit, scale, k = k, ...) : object 'n' not found
Run Code Online (Sandbox Code Playgroud)

我从来没有真正问过自己这个问题,但我认为n应该在函数中定义step(它是每次迭代中模型中变量的数量)....无论如何,这个问题从来没有发生在我之前!重新启动R不会改变任何内容,我承认我不知道会导致此错误的原因.

这是一些要测试的代码:

y<-runif(20,0,10)
x1<-runif(20,0,1)
x2<-y+runif(20,0,5)
x3<-runif(20,0,1)-runif(20,0,1)*y
donnees<-data.frame(x1,x2,x3,y)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Ben*_*ker 5

step(model.forward,direction="forward", 
         k=log(nrow(donnees)), scope=list(lower = ~1, upper = ~x1+x2+x3), 
         data=donnees)
Run Code Online (Sandbox Code Playgroud)

或更一般地......

... k=log(nobs(model.forward)) ...
Run Code Online (Sandbox Code Playgroud)

(例如,如果NA数据中有值,那么nobs(model.forward)将与之不同nrow(donnees).另一方面,如果预测变量中NA值,则无论如何都会在进行模型选择时遇到麻烦.)