2

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然后为我的 r 降价创建 html(或文本)输出:

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)
4

3 回答 3

2

看起来这样可以解决问题:

library(texreg)
htmlreg(fit)

对于文本:

screenreg(list(fit))
于 2016-03-25T17:09:55.220 回答
1

正如@rawr 在评论中指出的那样stargazer——虽然有用——但不幸的是,它是以一种相当单一、难以扩展的风格编写的。broom 包是 (IMO) 一个精心设计的模块化/面向对象的框架,用于从大量模型类型中提取摘要信息,但它并不面向生成文本/表格摘要。对于喜欢这种东西的人来说,如果stargazer前端能嫁接到broom后端就好了,但工作量很大。与此同时,除了破解内部stargazer:::.stargazer.wrap函数之外,这种方法(欺骗stargazer相信它fit实际上是一个lm()模型)有点工作:

class(fit) <- c("glm","lm")
fit$call[1] <- quote(lm())
stargazer(fit)

它显示了内置在fit对象中的系数和标准误差,而不是您的后验图的输出,但在这个例子中,至少这些答案非常相似。

于 2016-03-25T17:29:34.583 回答
1

如果你对 markdown 没问题,那么通用panderS3 方法通常会做得很好:

> 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  
-------------------- -----------------------------------
于 2016-03-25T19:47:27.217 回答