Таблица регрессии для байесглм?

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)

--------------------------------------------------------------
     &nbsp;        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)

----------------------------------------------------------------------
     &nbsp;        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  
-------------------- -----------------------------------
Другие вопросы по тегам