R代码:修改lapply列表中的内置函数

时间:2013-08-23 13:06:11

标签: r regression

我有一个回归模型列表,但我想逐步使用forward方法。 我尝试用lapply修改这个函数,但它确实没有用。

我有数据

test<-data.frame(X1=rnorm(50,mean=50,sd=10),
             X2=rnorm(50,mean=5,sd=1.5),
             X3=rnorm(50,mean=200,sd=25))
test$X1[10]<-5
test$X2[10]<-5
test$X3[10]<-530

我运行回归模型

varlist <- names(test)

models <- lapply(varlist, function(x) {
lm(substitute(i~., list(i = as.name(x))), data = data 
})

然后逐步运行..

lapply(models, function(x){step(x,direction="forward")})

然而,它并没有影响我对逐步方法的修改 - 转发.. 如何在lapply上修改内置函数?

提前非常感谢你。

1 个答案:

答案 0 :(得分:0)

对于逐步使用'forward'或'both',您需要包含scope参数。对你而言,范围将类似于完整的潜在等式。例如,在X1:scope='X1~X2+X3'上。但是,在模型的第1步之后,您有3个方程的列表,其中每个方程使用所有可能的变量。因此,逐步不可能添加任何新变量。

相反,尝试“向后”。这不需要scope参数,它表明语法是正确的。我已在下面更正了您的代码:

models <- lapply(varlist, function(x) {
  lm(substitute(i~., list(i = as.name(x))), data = test) 
})

然后逐步,但后退。

lapply(models, function(x){step(x,direction="backward")})