Wie erhalte ich Standardfehler aus der Regression der Zähldaten mit R Null? [geschlossen]

9

Der folgende Code

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

erzeugt ein 3-spaltiges data.frame--PredictNew, die angepassten Werte, die Standardfehler und einen Restskalenterm.

Perfekt ... jedoch mit einem Modell ausgestattet mit zeroinfl {pscl}:

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

oder

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

Erzeugen Sie nur einen einzelnen Spaltenvektor mit angepassten Werten. Ich wäre jedoch sehr daran interessiert, Standardfehler zu haben. Alles, was ich gelesen habe, sagt, dass sie produziert werden sollten.

(Code wurde etwas vereinfacht, ich habe tatsächlich vier Variablen und einen Offset - keine Probleme mit den predict.glmund se.fit = TRUEproduzierenden SEs.)

KalahariKev
quelle
5
Schauen Sie sich diesen Thread in der R-Hilfe an: stat.ethz.ch/pipermail/r-help/2008-December/thread.html#182806 (insbesondere die Nachricht von Achim Zeileis, der Code bereitstellt, um das zu tun, was ich denke, dass Sie sind versuchen zu tun). Es sieht nicht so aus, als ob zu diesem Zeitpunkt Standardfehler in die predict()Funktion implementiert zeroinfl()wurden.
Smillig
Vielen Dank, dieser Code schien ziemlich vernünftige Ergebnisse zu liefern. Andere sollten beachten, dass der Predict () -Parameter in der neuen zeroinfl.predict-Funktion für se.fit = TRUE in se = TRUE geändert wurde, um die vorhergesagten Intervalle und se
KalahariKev

Antworten:

4

Meines Wissens enthält die predictMethode für Ergebnisse aus zeroinflkeine Standardfehler. Wenn Sie Konfidenzintervalle erstellen möchten, besteht eine attraktive Alternative darin, Bootstrapping zu verwenden. Ich sage attraktiv, weil Bootstrapping das Potenzial hat, robuster zu sein (bei Effizienzverlust, wenn alle Annahmen für die SEs erfüllt sind).

Hier ist ein grober Code, um das zu tun, was Sie wollen. Es wird nicht genau funktionieren, aber hoffentlich können Sie die notwendigen Korrekturen vornehmen.

## 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)

Ich diesen Code zog aus zwei Seiten , die ich geschrieben habe, ein Bootstrap - Parameter von einer Null-aufgeblasenen Poisson - Regression mit zeroinfl Null aufgeblasenen poisson und einen zeigt , wie für die vorhergesagten Werte von einem Null abgeschnitten negativen Binomialmodells Bootstrap - Konfidenzintervall erhalten Null abgeschnitten negative binomiale . In Kombination liefert dies hoffentlich genügend Beispiele, um es mit vorhergesagten Werten aus einem Null-Inflations-Poisson zum Laufen zu bringen. Möglicherweise erhalten Sie auch einige Grafikideen :)

Joshua
quelle
Ich habe versucht, Ihren Code für ein Null-abgeschnittenes negatives Binomialmodell im VGAM-Paket anzupassen, habe jedoch eine Fehlermeldung erhalten. Soll ich hier im Lebenslauf eine neue Frage erstellen und hier verlinken? Ich würde mich sehr über Ihre Hilfe freuen. Dies ist insbesondere der Fehler, den ich erhalte : Error in X.vlm.save %*% coefstart : non-conformable arguments.
Raphael K