2016-04-29 8 views
2

私はZeligがラッパーであることを知っています...しかし、それでも素晴らしいシミュレーション機能を提供します(私は自分ではできません)。Zelig(v。5.0-13)を使用して推定された「relogit」モデルにTexReg(1.36.4)を使用するにはどうすればよいですか?

​​

そして今、我々は(しよう)テーブル

library(texreg) 
texreg(relogit) 

を行い、

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) 

今、私たちはモデルを推定し、私はこのデータを持っているとしましょう...このエラーを出すためだけに。

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

私は$getvcov()$getcoef()機能を認識しています。しかし、私はtexregを使って簡単なテーブルを作る方法を知りました。アドバイスをいただければ幸いです。ありがとう!

答えて

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) 

このコードは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 

をより一般的にはあなたがtexreg持つ任意のZeligモデルの仕事をしたい場合、あなたは、関連する情報を見つけるためにmodel$zelig.out$z.out[[1]]をご覧ください。私は、次のtexregリリースにZelig-relogitextractメソッドを含める予定です。

+0

ありがとう@PhilipLeifeld、それは働いた! –

関連する問題