我有一个回归模型列表,但我想逐步使用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上修改内置函数?
提前非常感谢你。
答案 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")})