如何将 TexReg (1.36.4) 用于使用 Zelig (v. 5.0-13) 估计的 "relogit" 模型?

How can I use TexReg (1.36.4) for a "relogit" model estimated using Zelig (v. 5.0-13)?

我知道 Zelig 是一个包装器...但是,它仍然提供了很好的模拟功能(我自己无法做到)。

假设我有这个数据,

set.seed(123)
x1 = rnorm(5)         
x2 = rnorm(5)
z = 1 + 2*x1 + 3*x2
pr = 1/(1+exp(-z))
y = rbinom(5,1,pr)

df = data.frame(y=y,x1=x1,x2=x2)

现在,我们估计模型,

library(Zelig)    
relogit <- zelig(y ~ x1 + x2, model = "relogit", data = df)

现在,我们(尝试)制作 table

library(texreg)
texreg(relogit)

...只是得到这个错误。

Error in (function (classes, fdef, stable):
unable to find an inherited method for function ‘extract’ for 
signature ‘"Zelig-relogit"’

我知道 $getvcov()$getcoef() 函数。但是我想知道如何使用 texreg 来直接 table。任何建议将不胜感激。谢谢!

texreg 使用一个名为 extract 的通用函数从模型对象中提取相关数据,然后处理生成的 texreg 对象以创建回归 table。为了扩大texreg适用的机型范围,可以自己编写extract函数的方法。

Zelig-relogit 对象显然存储了一个 glm 对象以及对象内部某处的相关数据,并为其附加了一个不同的 class 名称。因此,创建此子对象的副本、固定其 class 名称并将现有的 extract.glm 方法应用于此对象以提取数据应该相对简单。更具体地说:

# extension for Zelig-relogit objects (Zelig package >= 5.0)
extract.Zeligrelogit <- function(model, include.aic = TRUE, include.bic = TRUE, 
    include.loglik = TRUE, include.deviance = TRUE, include.nobs = TRUE, ...) {
  g <- model$zelig.out$z.out[[1]]
  class(g) <- "glm"
  e <- extract(g, include.aic = include.aic, include.bic = include.bic, 
      include.loglik = include.loglik, include.deviance = include.deviance, 
      include.nobs = include.nobs, ...)
  return(e)
}

setMethod("extract", signature = className("Zelig-relogit", "Zelig"), 
    definition = extract.Zeligrelogit)

这段代码为 extract 函数创建了一个 Zelig-relogit 方法。您可以通过键入类似 screenreg(relogit) 的内容来使用它,其中 relogit 是您的 Zelig-relogit 对象的名称。结果应如下所示:

==================================
                Model 1           
----------------------------------
(Intercept)     -9446502571.59 ***
                     (62615.78)   
x1              19409089045.70 ***
                    (141084.20)   
x2                856836055.47 ***
                     (98175.65)   
----------------------------------
AIC                       6.00    
BIC                       4.83    
Log Likelihood           -0.00    
Deviance                  0.00    
Num. obs.                 5       
==================================
*** p < 0.001, ** p < 0.01, * p < 0.05

更一般地说,如果您想使任何 Zelig 模型与 texreg 一起使用,您应该查看 model$zelig.out$z.out[[1]] 以找到相关信息。我将在下一个 texreg 版本中包含 Zelig-relogit extract 方法。