【问题标题】:R regression stepwise - Change entry/removal criteria, and model variable significanceR 逐步回归 - 更改输入/删除标准和模型变量显着性
【发布时间】:2020-11-23 16:04:15
【问题描述】:

我一直在使用 lm 回归函数并使用逐步回归。不幸的是,逐步似乎并没有太大的灵活性。进入/移除标准和重要性无法调整。

使用 mtcars,我运行这些代码

FitAll <- lm(mpg ~ . ,data=mtcars) # Fit reg model with all variables
FitStart <- lm(mpg~1,data=mtcars) # Fit reg model with just intercept
step(FitStart, direction = "both"  , scope=formula(FitAll)) # stepwise, "both"=forward&backward

它告诉我模型中有 3 个变量 wt + cyl + hp 的逐步停止。当我使用这些运行回归模型时,我发现一些变量在 5% 时并不显着。

fit <- lm(formula = mpg ~ wt + cyl + hp, data = mtcars)
summary(fit)

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 38.75179    1.78686  21.687  < 2e-16 ***
wt          -3.16697    0.74058  -4.276 0.000199 ***
cyl         -0.94162    0.55092  -1.709 0.098480 .  
hp          -0.01804    0.01188  -1.519 0.140015    

有没有办法使用这个 lm 和 step 函数来指定进入和退出标准。此外,有时我想将所有变量的严格性提高到 1%。有没有办法用这种方法指定进入/退出标准和重要性级别?有没有更好的包可以使用? 非常感谢任何帮助。谢谢

【问题讨论】:

  • 我快速浏览了文档,看起来 step() 使用 Akakie 信息标准 (AIC) 来选择模型,而不是 p 值阈值。
  • @Bill - 感谢您指出它是 AIC。我找到了this thread,它可以解决问题。

标签: r regression lm


【解决方案1】:

你可能想试试 StepReg 包,它似乎提供了你想要的选项

# install.packages("StepReg")

library(StepReg)

stepwise(mtcars, 
         y = "mpg", 
         selection = "bidirection", 
         select = "SL", 
         sle = .01, 
         sls = .01)
#> $process
#>   Step EffectEntered EffectRemoved EffectNumber    Select
#> 1    0     intercept                          1  1.000000
#> 2    1            wt                          2 -9.859915
#> 3    2           cyl                          3 -2.914801
#> 
#> $variate
#> [1] "intercept" "wt"        "cyl"

【讨论】:

  • 接近完美,但有没有办法指定“不拦截”?
  • 我看不到,不是我的包裹,而且我不使用它。显然,您可以在模型完成后计算模型,但不确定放弃截距有什么好处,除非您确定不存在。
  • 进一步看,如果您更改 sle 和 sls 值,它实际上并没有做任何事情。我已经在另一个统计软件中并行运行了这个(调整 sle 和 sls),看看会发生什么结果。如果你降低 sle/sls 你应该得到更多的变量。我认为这可能是一个错误的包/功能?如果有人在使用它,我建议彻底测试标准,看看它是否真的在做任何事情。
  • @H.Cheung 感谢您使用 StepReg R 包,我是 StepReg 的作者。很抱歉回复你晚了。实际上,在将 StepReg 上传到 CRAN 之前,我已经使用 StepReg 和 SAS 软件运行了一些数据集,结果总是一致的。我不知道您使用此软件包为您的测试更改了哪些确切的 sle 和 sls 值,结果的“选择”列是 log10(pvalue),当我尝试将 sle 和 sls 降低到 0.001 时,结果发生了变化。如果您可以与另一个统计软件并行共享您的测试结果(调整 sle 和 sls),那就太好了。如果有不同的输出,我可以调试它。谢谢
  • @H.Cheung 另外,如果你降低 sls/sle,它会输出更少的变量。 sls/sle 是保持/进入的显着水平,较低的 sls/sle 意味着模型中变量进入/停留的阈值更严格。谢谢!
猜你喜欢
  • 2011-04-11
  • 1970-01-01
  • 1970-01-01
  • 2021-04-06
  • 2022-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-04
相关资源
最近更新 更多