私がやろうとしていることはかなり簡単なはずです: R パッケージZeligを使用して tobit モデルを推定します。これから、 texregを使用して tex 出力を作成したいと思います。しかし、私が返すのはエラーメッセージです:
(function (classes, fdef, mtable) のエラー: シグネチャ '"Zelig-tobit"' の関数 'extract' の継承されたメソッドが見つかりません</p>
texregにはtobitモデルの抽出方法があるため、これはかなり奇妙です。私も自分で関数を指定しようとしましたが、機能させることができませんでした。コード例を次に示します。
library(Zelig)
library(texreg)
a <- c(2, 2, 2, 4, 3, 5, 9, 9, 9)
b <- c(18, 20, 19, 17, 22, 48, 12, 22, 37)
c <- c(0.1, 0.02, 0.5, 1.2, 0.9, 0.1, 1.1, 0.7, 0.6)
dat <- data.frame(a, b, c)
model <- zelig(a ~ b + c, below = 2, above = 9, model = "tobit", data = dat)
texreg(model)
Windows コンピューターでR Studioを使用しています。texregのバージョンは 1.36.4 で、Zelig のバージョンは 5.0-11 です。
この質問は、私の問題と密接に関連しているようでした: texreg-ing Tobit output from zelig package (R)
ただし、これによれば、数バージョン前に修正されているはずですが、私には当てはまりません。
よろしくお願いします。
(ちなみに、 texregの代わりにstargazerを使用してみましたが、別のエラー メッセージが表示されました。)
私は独自の抽出関数を作成しようとしましたが、関数の作成が素人であるために機能しません。これが私がしたことです:
extract.tob <- function(model, include.iterations = TRUE, include.loglik = TRUE,
include.wald = TRUE, ...) {
s <- model
names <- rownames(s$coef)
co <- s$coef[, 1]
se <- s$coef[, 2]
pval <- s$coef[, 4]
gof <- numeric()
gof.names <- character()
gof.decimal <- logical()
if (include.iterations == TRUE) {
it <- s$iterations
gof <- c(gof, it)
gof.names <- c(gof.names, "Number of\\iterations")
gof.decimal <- c(gof.decimal, TRUE)
}
if (include.loglik == TRUE) {
ll <- s$logLik
gof <- c(gof, ll)
gof.names <- c(gof.names, "Log-\\likelihood")
gof.decimal <- c(gof.decimal, TRUE)
}
if (include.wald == TRUE) {
wd <- s$wald
gof <- c(gof, wd)
gof.names <- c(gof.names, "Wald-\\statistic")
gof.decimal <- c(gof.decimal, TRUE)
}
tr <- createTexreg(
coef.names = names,
coef = co,
se = se,
pvalues = pval,
gof.names = gof.names,
gof = gof,
gof.decimal = gof.decimal
)
return(tr)
}
setMethod("extract", signature = className("Zelig-tobit", "Zelig"),
definition = extract.tob)
ご覧のとおり、zelig モデルは既に「要約」されています。そのため、例のように summary(model) の代わりに s <- model を設定しています。私の主な問題は、それらに対処する方法がわからないため、必要な統計 (対数尤度、wald ...) をモデルから取得できないことです。str() などの出力は、これには役立ちません。単に統計の「名前」がわからないだけでなく、それらに対処する方法にも問題があるようです。
「model $ coef」のようなものを試すと、次のようになります。
envRefInferField(x, what, getClass(class(x)), selfEnv) のエラー:
「coef」は参照クラス「Zelig-tobit」の有効なフィールドまたはメソッド名ではありません</p>
「model@coef」を使用すると、次のようになります。
エラー: クラス「Zelig-tobit」のこのオブジェクトの名前「coef」のスロットがありません
そして model[,1] は私をもたらします:
modelt6[, 1] のエラー: タイプ 'S4' のオブジェクトはサブセット化できません
抽出機能を機能させる方法を知っている人はいますか? または、モデル出力をラテックスに取得する別の簡単な方法はありますか?