首页 > 解决方案 > 当所有变量都不显着时,逐步回归会崩溃循环

问题描述

我正在尝试使用 OLSRR 对几列数据作为不同的 Y 变量和相同的五列数据作为潜在的 X 进行一系列逐步回归。我的代码可以正常工作,直到我遇到所有五个 X 都不重要的 Y。然后代码崩溃并且不会继续循环遍历剩余的数据列。我收到消息:解析错误(文本 = x,keep.source = FALSE)::2:0:输入意外结束

有解决办法吗?

```    
library(olsrr)

for (i in 7:26) {

  model<-lm(data=PFAS,PFAS[[i]]~SumPCBs+PCBratio+sumBDEs+BDEratio+Hg)
  FWDfit.p<-ols_step_forward_p(model,penter=0.05)
  print(names(PFAS)[i])
  print(FWDfit.p[["model"]][["coefficients"]])
  BWDfit.p<-ols_step_backward_p(model,penter=0.05)
  print(BWDfit.p[["model"]][["coefficients"]])
  }
``` 

标签: rloops

解决方案


我认为格雷戈尔是对的。我猜测这个错误是ols_step_backward_p在向后消除的结果没有产生显着结果的情况下引发的。如果这个猜测是正确的,那么只需测试这些系数的长度是否大于 1 并提供一条替代消息:

for (i in 7:26) {

  model<-lm(data=PFAS,PFAS[[i]]~SumPCBs+PCBratio+sumBDEs+BDEratio+Hg)

    FWDfit.p<-ols_step_forward_p(model,penter=0.05)
    print(names(PFAS)[i])
    print(FWDfit.p[["model"]][["coefficients"]])
    BWDfit.p<-ols_step_backward_p(model,penter=0.05)
    if( length( coef(BWDfit.p) > 1) {
       print(BWDfit.p[["model"]][["coefficients"]])
                                } else { 
       cat( i, " no vars sig\n") }
  }

推荐阅读