【发布时间】:2020-06-11 17:18:36
【问题描述】:
假设我有一个非常简单的模型
library(foreign)
smoke <- read.dta("http://fmwww.bc.edu/ec-p/data/wooldridge/smoke.dta")
smoking.reg <- lm(cigs ~ educ, data=smoke)
AIC(smoking.reg)
BIC(smoking.reg)
在 R 中我得到以下结果:
> AIC(smoking.reg)
[1] 6520.26
> BIC(smoking.reg)
[1] 6534.34
但在 Stata 中运行相同的回归
use http://fmwww.bc.edu/ec-p/data/wooldridge/smoke.dta
reg cigs educ
返回以下结果
estat ic
如何让 R 返回与 Stata 的 AIC 和 BIC 完全相同的值?
【问题讨论】:
-
看起来状态正在将参数的数量计算为两个,因此可能不包括错误参数。因此,在 r 中重现 stata 设置编号。参数为两个。
-
... 对于 aic R 使用
ll = logLik(smoking.reg); -2*ll + 2*3 # 3 == attr(ll, "df"))但状态使用-2*ll + 2*2 -
@user20650,您想将此作为答案发布吗?更彻底的是,可以创建
AIC.lm和BIC.lm,它们将基于 df+1 重新计算(loglik 对象还有一个“nobs”属性,可以计算 BIC ...