Таблица регрессии для байесглм?
stargazer
отличный инструмент для создания таблицы регрессии, если вы не используете bayesglm
, Например, предположим, у меня есть следующие данные:
library(dplyr)
set.seed(9782)
N<-1000
df1 <- data.frame(v1=sample(c(0,1),N,replace = T),
v2=sample(c(0,1),N,replace = T),
Treatment=sample(c("A", "B", "C"), N, replace = T),
noise=rnorm(N)) %>%
mutate(Y=0.5*v1-0.7*v2+2*I(Treatment=="B")+3*I(Treatment=="C")+noise)
я могу бежать lm
и затем создайте html (или текстовый) вывод для моей уценки r:
lm(data = df1, formula = Y~Treatment+v1+v2) %>%
stargazer::stargazer(type="html", style = "qje")
Есть ли способ сделать что-то подобное для bayesglm
? В этом случае, pointEstimate
имеет коэффициенты и standardError
стандартные ошибки
library(arm)
fit <- bayesglm(data = df1, formula = Y~Treatment+v1+v2)
posteriorDraws <- coef(sim(fit, n.sims=5000))
pointEstimate <- colMeans(posteriorDraws)
standardError <- apply(posteriorDraws, 2, sd)
3 ответа
Похоже, это делает трюк:
library(texreg)
htmlreg(fit)
и для текста:
screenreg(list(fit))
Как @rawr указывает в комментариях stargazer
это - хотя и полезно - к сожалению, написано в довольно монолитном, трудно расширяемом стиле. Пакет метлы (IMO) - это хорошо разработанная модульная / объектно-ориентированная среда для извлечения сводной информации из большого количества типов моделей, но она не ориентирована на создание текстовых / табличных сводок. Для тех, кто любит такие вещи, было бы здорово, если бы stargazer
передний конец может быть привит на broom
задний конец, но это было бы много работы. В то же время, если не считать взлома внутреннего stargazer:::.stargazer.wrap
функция, этот метод (обман stargazer
верить, что fit
на самом деле lm()
модель) вид работ:
class(fit) <- c("glm","lm")
fit$call[1] <- quote(lm())
stargazer(fit)
Он представляет коэффициенты и стандартные ошибки, которые встроены в fit
объект, а не результат ваших задних розыгрышей, но в этом примере, по крайней мере, эти ответы чрезвычайно похожи.
Если у вас все в порядке с уценкой, то общий pander
Метод S3 обычно выполняет довольно хорошую работу:
> pander(fit, round = 4)
--------------------------------------------------------------
Estimate Std. Error t value Pr(>|t|)
----------------- ---------- ------------ --------- ----------
**(Intercept)** 0.0864 0.0763 1.131 0.2581
**TreatmentB** 1.951 0.0826 23.62 0
**TreatmentC** 3.007 0.0802 37.49 0
**v1** 0.4555 0.0659 6.915 0
**v2** -0.6845 0.0659 -10.39 0
--------------------------------------------------------------
Table: Fitting generalized (gaussian/identity) linear model: Y ~ Treatment + v1 + v2
Обратите внимание, что в этом примере я принудительно округлил числа, так как некоторые значения P были крайне низкими, поэтому по умолчанию digits
и другие глобальные варианты привели бы к чрезвычайно широкой таблице. Но есть несколько других параметров, которые вы можете использовать, например:
> pander(summary(fit), round = 4, add.significance.stars = TRUE, move.intercept = TRUE, summary = TRUE, split.cells = Inf)
----------------------------------------------------------------------
Estimate Std. Error t value Pr(>|t|)
----------------- ---------- ------------ --------- ---------- -------
**TreatmentB** 1.951 0.0826 23.62 0 * * *
**TreatmentC** 3.007 0.0802 37.49 0 * * *
**v1** 0.4555 0.0659 6.915 0 * * *
**v2** -0.6845 0.0659 -10.39 0 * * *
**(Intercept)** 0.0864 0.0763 1.131 0.2581
----------------------------------------------------------------------
(Dispersion parameter for gaussian family taken to be 1.083267 )
-------------------- -----------------------------------
Null deviance: 2803 on 999 degrees of freedom
Residual deviance: 1078 on 995 degrees of freedom
-------------------- -----------------------------------