如何使用TexReg(1.36.4)作为使用Zelig估计的“relogit”模型(v.5.0-13)?

时间:2016-04-29 20:44:20

标签: r latex texreg

我知道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)

现在,我们(尝试)制作表格

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制作一个简单的表格。任何建议将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:4)

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

Zelig-relogit个对象显然存储了一个glm对象,其中包含对象内部的相关数据,并为其附加了不同的类名。因此,创建此子对象的副本,修复其类名,并将现有的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)

此代码为Zelig-relogit函数创建extract方法。您可以通过键入screenreg(relogit)之类的内容来使用它,其中relogitZelig-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]]以查找相关信息。我会在下一个Zelig-relogit版本中添加extract texreg方法。