使用Base R与broom::glance计算AIC结果不一致的技术问询
AIC数值差异的原因解析
- 核心差异来源:
step()输出的是逐步筛选后最终简化模型的AIC,而glance()输出的是初始全变量模型的AIC,二者针对的是完全不同的模型,所以数值差异巨大:step(lm(mpg~disp+hp+drat+wt+qsec), direction="backward")会从全模型开始逐步剔除冗余变量,最终保留的最优模型是mpg ~ drat + wt + qsec,这个模型的AIC为63.89。glance(lm(mpg~disp+hp+drat+wt+qsec))直接计算的是包含全部5个自变量的全模型AIC,数值为158。
- 验证方式:对最终简化模型调用
glance(),就能得到和step()一致的结果:glance(lm(mpg ~ drat + wt + qsec)) # 输出的AIC会与63.89一致 - 补充相关知识点:
- AIC(赤池信息准则)的计算结合了模型的似然值与参数数量,变量越多的模型,参数惩罚项越大,全模型因包含冗余变量,AIC远高于简化后的最优模型是正常现象。
- 逐步向后法的逻辑是从全模型出发,每次剔除会让AIC上升最少(或下降最多)的变量,直到无法通过剔除变量降低AIC为止。
- 你提到的“逐步回归结果会因变量进入顺序不同而变化”是向前/逐步法的典型特性,向后法因从全模型开始,变量剔除顺序对最终结果的影响相对更小,但仍可能存在多个AIC相近的候选模型。
内容的提问来源于stack exchange,提问作者Yann peacelover
相关产品推荐
相关产品推荐

