У меня есть большой набор данных, в котором я хочу разбить на 13 частей (по Subsetor
). В каждом из них я запускаю 4 разных plm
, меняя только зависимую переменную.
Я также хотел бы использовать кластерные робастные стандартные ошибки, используя coeftest
и vcovHC
. Вот некоторые примеры данных:
library(tidyverse)
library(lmtest)
library(sandwich)
library(broom)
df <- structure(list(Subsetor = c("Footwear", "Footwear", "Machinery",
"Machinery"), mmc = c(31028, 22902, 33013, 35017), MassaSalarial_SM_Real = c(0,
0, 0, 2758.78039259859), Ano = c(1990, 1990, 1991, 1991, 1992), Vinculos = c(0, 0, 0, 536), Estab = c(0,
0, 1, 8), salario_real_capita_SM = c(NaN, NaN, NaN, 5.14697834440035
), tarifa_peso_VAB_1990 = c(0.193475, 0.5756, 0.258589287604088,
0.258589287604088)), row.names = c(NA, -4L), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"), groups = structure(list(Subsetor = c("Footwear",
"Machinery"), .rows = list(1:2, 3:4)), row.names = c(NA, -2L), class = c("tbl_df",
"tbl", "data.frame"), .drop = TRUE))
Сначала я запустил регрессии с учетом каждой зависимой переменной для каждого типа в Subsetor
:
Model_Vinculos <- df %>%
mutate(salario_real_capita_SM = salario_real_capita_SM %>%
replace(., is.na(.), 0)) %>%
group_by(Subsetor) %>%
nest() %>%
mutate(model = map(data,
~plm(log(Vinculos + 1) ~ log(tarifa_peso_VAB_1990),
data = . ,
model = 'within',
effects = 'twoways',
index = c('mmc', 'Ano'))),
erros.padrao = map(model, ~coeftest(., vcovHC(., type = 'HC0',
cluster = 'group'))),
inf = map(model, broom::tidy)) %>%
select(Subsetor, inf, erros.padrao, model)
Я повторил этот процесс, создав 3 других объекта : Model_Estab
, Model_MassaSalarial
и Model_Salario
.
После этого я связал их, а также извлек желаемую информацию, а именно коэффициенты и устойчивые стандартные ошибки:
Models_Subsetor <- list(
Estabelecimentos = Model_Estab,
Massa_Salarial = Model_MassaSalarial,
Remuneracao = Model_Salario,
Vinculos = Model_Vinculos
) %>%
bind_rows(.id = 'id') %>%
select(Subsetor, inf, erros.padrao, id) %>%
unnest(cols = c(inf)) %>%
select(Subsetor, estimate, erros.padrao, id) %>%
mutate(erros.padrao = map(erros.padrao, broom::tidy)) %>%
mutate(se = erros.padrao %>% map_dbl(~ .x[['std.error']])) %>%
select(id, Subsetor, estimate, se) %>%
gather(estimate:se, key = 'key', value = 'value') %>%
spread(id, value)
Теперь я хотел бы использовать эти результаты с stargazer
. Простое печатание Models_Subsetor
не было бы идеальным, поскольку таблица не была бы точно отформатирована как таблица регрессии.
Поэтому мой вопрос заключается в том, как проще всего получить таблицу звездного наблюдателя, которая похожа на эту. один, но это похоже на таблицу регрессии (со звездочками в соответствии с p-значениями, удалением частей, где написано 'se', помещением стандартных ошибок в скобках, что позволяет мне добавлять строки с некоторыми другими пользовательскими наблюдениями и т. д.).