You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中计算AIC与BIC的疑问:step函数k参数设置是否正确?

关于R中step函数AIC/BIC判定的问题

核心结论

  • 当你设置k = log(nrow(S1901Income2022))时,实际在使用BIC
  • 当你修改为k = 2时,输出结果基于标准AIC

原理说明

AIC和BIC的核心差异在于模型复杂度的惩罚项系数:

  • 标准AIC公式:AIC = -2 * log(似然值) + 2 * p,其中p是模型参数数量
  • BIC公式:BIC = -2 * log(似然值) + log(n) * p,其中n是样本量

R的step()函数中,k参数就是用来指定这个惩罚项的系数:

  • 默认k=2,对应标准AIC计算逻辑
  • 当把k设为log(n)时,完全匹配BIC的惩罚规则,哪怕输出标注为"AIC",本质是BIC数值

对应你的代码场景

第一次的代码:

step(burglary_intercept_model , direction = 'forward' , scope = formula(burglary_income_model) , trace = 1 , k = log(nrow(S1901Income2022)))

这里用样本量的对数作为k值,执行的是基于BIC的逐步回归。

修改后的代码:

step(burglary_intercept_model , direction = 'forward' , scope = formula(burglary_income_model) , trace = 1 , k = 2)

k=2对应AIC的标准惩罚系数,此时逐步回归的模型选择逻辑完全基于AIC。

内容的提问来源于stack exchange,提问作者Steven Morrison

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 13:08:15