[英]Is there a way to catch both Coefficient and R-squared using Broom?
我通过一些回归进行循环,目的是使用不同的模型,其各自的系数和统计量以及一些常规结果(如调整后的r平方,AIC等)得出最终结果。此循环是考虑数据库中的某些子组完成的。
当我使用plm估计结果时,broom软件包会产生一些不错的结果,以将所有内容打包到一个整洁的数据库中。 但是,它们的选择是一种限制。 或者,您是否获得系数及其统计信息(使用整洁的-提供p值,t统计等),或者您获得总体模型统计信息(使用一览表-提供R平方,调整后的R平方,AIC等)。
我知道我可以合并最终结果,但这将涉及到两次回归的双重计算,而且计算量大。 我知道最终结果将重复系数的每一行的汇总统计信息,但是我不介意。
MWE遵循:
library(dplyr)
library(broom)
library(plm)
library(lmtest)
library(magrittr)
data("Grunfeld")
#To generate coefficients by model
reg<- mutate(Grunfeld,
group = ifelse(firm<6,1,2)) %>%
group_by(., group) %>%
do(
tidy(
coeftest(plm(as.formula(inv ~ value + capital)
,data= .
,model = "pooling"
)
,vcov.= vcovHC(plm(as.formula(inv ~ value + capital)
,data= .
,model = "pooling"
)
,method= "arellano"
)
)
)
)
#To generate r-squared by model
reg<- mutate(Grunfeld,
group = ifelse(firm<6,1,2)) %>%
group_by(., group) %>%
do(
glance(
plm(as.formula(inv ~ value + capital)
,data= .
,model = "pooling"
)
)
)
使用@Gregor的输入,我可以为我的问题创建令人满意的答案。
这是MWE:
library(dplyr)
library(broom)
library(plm)
library(lmtest)
library(magrittr)
data("Grunfeld")
plm_reg<- mutate(Grunfeld,
group = ifelse(firm<6,1,2)) %>%
group_by(., group) %>%
do(reg=
plm(as.formula(inv ~ value + capital)
,data= .
,model = "pooling"
)
)
robust_est <- function(x){
return(tidy(coeftest(x, vcov.= vcovHC(x, method= "arellano"))))
}
robust_coef <- bind_rows(lapply(plm_reg[[2]], robust_est), .id = "group")
r_squared <- bind_rows(lapply(plm_reg[[2]], glance), .id = "group")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.