Rゼロインフレカウントデータ回帰から標準エラーを取得する方法 [閉まっている]


9

次のコード

PredictNew <- predict (glm.fit, newdata = Predict, X1 =X1, Y1= Y1, 
                       type = "response", se.fit = TRUE)

3列のdata.frame--PredictNew、近似値、標準誤差、残差スケール項を生成します。

パーフェクト...しかし、以下を備えたモデルを使用しzeroinfl {pscl}ます:

PredictNew <- predict (zeroinfl.fit, newdata = Predict, X1 =X1, Y1= Y1, 
                       type = "response", se.fit = TRUE)

または

PredictNew <- predict (zeroinfl.fit, newdata = Predict, X1 =X1, Y1= Y1, 
                       type = "response", se.fit = TRUE, MC = 2500, conf = .95))

適合値のみの単一列ベクトルを生成します。しかし、私は標準的なエラーに非常に熱心です。私が読んだすべてはそれらが生産されるべきであると言います。

(コードは多少簡略化されています。実際には、4つの変数とオフセットがあります。SEを生成する確率はpredict.glmありませんse.fit = TRUE。)


5
R-Helpでこのスレッドを見てください:stat.ethz.ch/pipermail/r-help/2008-December/thread.html#182806(特に、あなたが思っていることを実行するためのコードを提供するAchim Zeileisからのメッセージ)しようとしている)。現時点では、標準エラーがpredict()関数に実装されているようには見えませんzeroinfl()
smillig

おかげで、そのコードはかなり合理的な結果を生み出すように見えました。予測区間とseを抽出するために、se.fit = TRUEの新しいzeroinfl.predict関数のpredict()パラメータがse = TRUEに変更されたことに注意する必要があります
KalahariKev

回答:


4

私の知る限りではpredict、結果の方法にzeroinflは標準エラーは含まれていません。信頼区間を構築することが目標である場合、1つの魅力的な代替策は、ブートストラップを使用することです。ブートストラップはより堅牢になる可能性があるので(SEのすべての前提条件が満たされていると効率が低下します)、魅力的だと思います。

ここにあなたがしたいことをするためのいくつかの大まかなコードがあります。正確には機能しませんが、できれば必要な修正を加えてください。

## load boot package
require(boot)
## output coefficients from your original model
## these can be used as starting values for your bootstrap model
## to help speed up convergence and the bootstrap
dput(round(coef(zeroinfl.fit, "count"), 3))
dput(round(coef(zeroinfl.fit, "zero"), 3))

## function to pass to the boot function to fit your model
## needs to take data, an index (as the second argument!) and your new data
f <- function(data, i, newdata) {
  require(pscl)
  m <- zeroinfl(count ~ child + camper | persons, data = data[i, ], start = list(count = c(1.598, -1.0428, 0.834), zero = c(1.297, -0.564)))
  mparams <- as.vector(t(do.call(rbind, coef(summary(m)))[, 1:2]))
  yhat <- predict(m, newdata, type = "response")
  return(c(mparams, yhat))    
}

## set the seed and do the bootstrap, make sure to set your number of cpus
## note this requires a fairly recent version of R
set.seed(10)
res <- boot(dat, f, R = 1200, newdata = Predict, parallel = "snow", ncpus = 4)

## get the bootstrapped percentile CIs
## the 10 here is because in my initial example, there were 10 parameters before predicted values
yhat <- t(sapply(10 + (1:nrow(Predict)), function(i) {
  out <- boot.ci(res, index = i, type = c("perc"))
  with(out, c(Est = t0, pLL = percent[4], pUL = percent[5]))
}))

## merge CIs with predicted values
Predict<- cbind(Predict, yhat)

私は、ゼロ膨張したポアソン回帰から、私が書いた2ページ、1つのブートストラッピングパラメータからこのコードを描いたzeroinfl ゼロ膨張したポアソンゼロ切り捨て負の二項モデルから予測値のためのブートストラップ信頼区間を取得する方法と、1つの実証ゼロ切り捨て負の二項。結合すると、うまくいけば、ゼロ膨張ポアソンからの予測値を使用して動作させるための十分な例が提供されます。いくつかのグラフ化のアイデアも得られるかもしれません:)


VGAMパッケージのゼロ切り捨て負二項モデルにコードを適合させようとしましたが、エラーが発生しました。ここでCVに新しい質問を作成し、ここにリンクする必要がありますか?これであなたの助けに本当に感謝します。具体的には、これは私が受け取るエラーです Error in X.vlm.save %*% coefstart : non-conformable arguments
Raphael K
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.