我正在通过几个回归循环,并且旨在得到具有不同模型,它们各自的系数和统计数据以及一些一般结果的最终结果,如调整的r平方,AIC等。这个循环是在考虑到的一些子组中完成的。数据库。
当我使用plm估计结果时,扫帚包产生了一些很好的结果,可以将所有内容打包到一个整洁的数据库中。但是,他们的选择是有限的。或者你得到系数及其统计数据(使用整洁 - 提供p值,t统计等),或者你得到了大量的模型统计数据(使用一瞥 - 提供R平方,调整后的R平方,AIC等)。 / p>
我知道我可以合并最终结果,但这将涉及每次回归的双重计算,这在计算上是昂贵的。我知道最终结果会重复每行系数的汇总统计数据,但我不介意。
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"
)
)
)
答案 0 :(得分:1)
使用来自@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")