如何在 R 中获得与 Stata 中相同的 AIC 和 BIC 值?
How to get the same values for AIC and BIC in R as in Stata?
假设我有一个非常简单的模型
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
return结果如下
estat ic
如何让 R 达到 return 与 Stata 的 AIC 和 BIC 完全相同的值?
AIC 计算为 -2*log likelihood + 2* number of parameters
BIC 的计算公式为 -2*log likelihood + log(n)* number of parameters
,其中 n
是样本大小。
您的线性回归具有三个参数 - 两个系数和方差 - 因此您可以将 AIC
和 BIC
计算为
ll = logLik(smoking.reg)
aic = -2*ll + 2* 3 # 6520.26
bic = -2*ll + log(nrow(smoke))* 3 # 6534.34
(正如 Ben Bolker 在评论中提到的,logLik
对象有几个属性,您可以使用这些属性来获取参数的数量("df"
)和观察的数量("nobs"
). 参见 attr(ll, "df")
和 attr(ll, "nobs")
)
Stata不包含方差参数,只包含系数个数。这通常不会成为问题,因为信息标准通常用于比较模型 (AIC_of_model1 - AIC_of_model2
),因此如果在两次计算中都省略此参数,则不会有任何区别。在 Stata 中计算是
aic = -2*ll + 2* 2 # 6518.26
bic = -2*ll + log(nrow(smoke))* 2 # 6527.647
假设我有一个非常简单的模型
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
return结果如下
estat ic
如何让 R 达到 return 与 Stata 的 AIC 和 BIC 完全相同的值?
AIC 计算为 -2*log likelihood + 2* number of parameters
BIC 的计算公式为 -2*log likelihood + log(n)* number of parameters
,其中 n
是样本大小。
您的线性回归具有三个参数 - 两个系数和方差 - 因此您可以将 AIC
和 BIC
计算为
ll = logLik(smoking.reg)
aic = -2*ll + 2* 3 # 6520.26
bic = -2*ll + log(nrow(smoke))* 3 # 6534.34
(正如 Ben Bolker 在评论中提到的,logLik
对象有几个属性,您可以使用这些属性来获取参数的数量("df"
)和观察的数量("nobs"
). 参见 attr(ll, "df")
和 attr(ll, "nobs")
)
Stata不包含方差参数,只包含系数个数。这通常不会成为问题,因为信息标准通常用于比较模型 (AIC_of_model1 - AIC_of_model2
),因此如果在两次计算中都省略此参数,则不会有任何区别。在 Stata 中计算是
aic = -2*ll + 2* 2 # 6518.26
bic = -2*ll + log(nrow(smoke))* 2 # 6527.647