【问题标题】:Presenting Zelig Logistic Regression in Knitr with Stargazer or Other Package使用 Stargazer 或其他软件包在 Knitr 中呈现 Zelig Logistic 回归
【发布时间】:2016-02-09 22:13:33
【问题描述】:

Stargazer 似乎采用除了逻辑回归之外的大多数 Zelig 模型对象:

m1 <- zelig(voted ~ . - weight_full - by,
        weights = mydata$weight_full,
        data=mydata,
        model="logit",
        cite = FALSE)

我从上面的代码中收到以下警告:

# Error in envRefInferField(x, what, getClass(class(x)), selfEnv)  
# ‘result’ is not a valid field or method name for reference class “Zelig-logit”

任何人都可以使用 Knitr 在回归输出表中呈现这样的模型以生成 .tex/.Rnw 文件吗?

【问题讨论】:

  • 你能提供一个可重现的例子吗?
  • 此问题的标题与实际问题不符。示例中没有关于 stargazer 的内容...

标签: r latex knitr


【解决方案1】:

在康斯坦丁的有用回答的基础上,我创建了一个简单的函数unzelig 来获取一个 glm zelig 对象并返回一个传统的 glm 对象:

# extract data + model + family zelig object, return glm object
unzelig <- function(zelig_model) {
  z_out <- zelig_model$zelig.out$z.out[[1]]
  z_family <- z_out[["family"]][["family"]]

  # when zelig(model = 'ls') assign family <- "gaussian"
  if(is.null(z_family)) {z_family <- "gaussian"}

  glm(z_out, 
      family = z_family) 
  }

# simple example
z1 <- zelig(mpg ~ cyl, model = 'ls', data = mtcars, cite = FALSE)
z2 <- zelig(I(mpg > 15) ~ cyl, model = 'logit', data = mtcars, cite = FALSE)
z3 <- zelig(as.integer(mpg) ~ cyl, model = 'poisson', data = mtcars, cite = FALSE)

g1 <- unzelig(z1)
g2 <- unzelig(z2)
g3 <- unzelig(z3)

stargazer(g1, g2, g3, type = 'text')  

# error check 
g1 <- glm(mpg ~ cyl, data = mtcars)
g2 <- glm(I(mpg > 15) ~ cyl, family = binomial, data = mtcars)
g3 <- glm(as.integer(mpg) ~ cyl, family = poisson, data = mtcars)

stargazer(g1, g2, g3, type = 'text')  

此外,还有一个正在开发中的功能,可以使用命令to_zelig 将一些非 Zelig 对象转换为 Zelig 友好的对象。这将允许使用lmglm 等标准R 函数估计模型,使用stargazer 或其他包生成表,然后将对象转换为使用Zelig 函数,如setxsim。查看更多,在这里: http://docs.zeligproject.org/reference/to_zelig.html

【讨论】:

    【解决方案2】:

    这可能来得太晚了,但解决方案是使用基础 R 中的 glm() 重新估计模型。以下代码对我有用,使用 Zelig 的新参考类语法估计的逻辑回归。

    mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv")
    model1 <- zlogit$new()
    model1$zelig(admit ~ gpa,
                 data=mydata)
    library(stargazer)
    stargazer(glm(model1$zelig.out$z.out[[1]], family=binomial(link = "logit")))
    

    使用 Zelig 估计线性回归时,同样的策略也适用。

    【讨论】:

      【解决方案3】:

      Zelig 包现在包含一个方便的函数,可以轻松提取拟合模型对象:

      stargazer(from_zelig_model(m1))
      

      应该会产生预期的结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-06
        相关资源
        最近更新 更多