首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从lm_robust对象中获取AIC

如何从lm_robust对象中获取AIC
EN

Stack Overflow用户
提问于 2019-08-28 16:20:55
回答 2查看 740关注 0票数 5

如何从AIC对象(包estimatr)获得lm_robust?我使用lm_robust是因为我想使用一个健壮的估计器来计算SE。与lm函数不同,在运行摘要函数并在lm_robust对象上运行AIC函数会产生错误时,不提供AIC。下面是我试图运行的模型的一个玩具示例。

代码语言:javascript
复制
library(estimatr)

fake_data<-data.frame(outcome=rnorm(100,3.65,1),
                      pred1=rnorm(100,15,7),
                      pred2=as.factor(sample(1:5, 100, replace = T)))

mod1<-lm_robust(outcome~pred1+pred2,data=fake_data)
AIC(mod1)

以下是错误消息的内容:

代码语言:javascript
复制
> AIC(mod1)
Error in UseMethod("logLik") : 
  no applicable method for 'logLik' applied to an object of class "lm_robust"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-28 17:14:49

如果你必须用lm_robust来计算它,你可以选择按下面的方式计算,

AIC公式,

代码语言:javascript
复制
AIC = 2*k + n [Ln( 2(pi) RSS/n ) + 1]

# n : Number of observation
# k : All variables including all distinct factors and constant
# RSS : Residual Sum of Square

如果我们把它应用到R上,

代码语言:javascript
复制
# Note that, I take k=7 since you have, 5 factors + 1 continuous and 1 constant

AIC_calculated <- 2*7 + 100* (log( 2*pi* (1-mod1$r.squared)*mod1$tss/100 ) + 1)


[1] 332.2865

这与lmglm输出都是一样的。

代码语言:javascript
复制
mod2<-lm(outcome~pred1+pred2,data=fake_data)

> AIC(mod2)
[1] 332.2865

最后,当然,您可以将此计算放入一个函数中,随时调用,只需在其中提供lm_robust模型,而不必为任何给定的数据设置Nk参数,例如,

代码语言:javascript
复制
myAIC <- function(data) {

    2*(data$k+1) + data$N * (log(2*pi* (1-data$r.squared)*data$tss/data$N ) + 1)

}

> myAIC(mod1)
[1] 332.2865

注意:在您的计算机中可能会显示不同的结果,因为在dataframe中运行sample()函数时会出现不同的种子。

票数 4
EN

Stack Overflow用户

发布于 2019-08-28 16:44:20

这里有个解决办法

代码语言:javascript
复制
mod1 = lm_robust(outcome ~ pred1 + pred2, data = fake_data)

#Create any fitted model using 'lm' as a placeholder
mod2 = with(list(x = rnorm(10), y = rnorm(10)), lm(y ~ x))

#Copy values in `mod2` from `mod1`
mod2[names(mod2)] = mod1[names(mod2)]

#Calculate residuals in `mod2`
mod2$residuals = mod2$fitted.values - fake_data$outcome

AIC(mod2)
#[1] 326.6092
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57696549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档