¿Cómo obtener errores estándar de la regresión de datos de recuento inflado cero R? [cerrado]

9

El siguiente código

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

produce un 3-columna data.frame--PredictNew, los valores ajustados, los errores estándar y un término de escala residual.

Perfecto ... Sin embargo, utilizando un modelo equipado con zeroinfl {pscl}:

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

o

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

producir un solo vector de columna de valores ajustados solamente. Sin embargo, me gustaría mucho tener errores estándar. Todo lo que he leído dice que deberían ser producidos.

(El código se ha simplificado un poco, en realidad tengo cuatro variables y un desplazamiento: no hay problemas con los SE predict.glmy los se.fit = TRUEproductores).

KalahariKev
fuente
55
Eche un vistazo a este hilo en R-Help: stat.ethz.ch/pipermail/r-help/2008-December/thread.html#182806 (particularmente el mensaje de Achim Zeileis que proporciona el código para hacer lo que creo que eres Intentando hacer). No parece que se hayan implementado errores estándar en la predict()función zeroinfl()en este momento.
smillig
Gracias, ese código parecía producir resultados bastante razonables. Otros deben tener en cuenta que el parámetro predic () en la nueva función zeroinfl.predict para se.fit = TRUE se cambió a se = TRUE, para extraer los intervalos predichos y se
KalahariKev

Respuestas:

4

Que yo sepa, el predictmétodo para resultados zeroinflno incluye errores estándar. Si su objetivo es construir intervalos de confianza, una alternativa atractiva es usar bootstrapping. Digo atractivo porque el bootstrapping tiene el potencial de ser más robusto (con una pérdida de eficiencia si se cumplen todos los supuestos para los SE).

Aquí hay un código aproximado para hacer lo que quieras. No funcionará exactamente, pero espero que pueda hacer las correcciones necesarias.

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

Dibujé este código de dos páginas que escribí, uno de los parámetros de arranque de una regresión de poisson inflada a cero con poisson inflado a zeroinfl cero y otra que demuestra cómo obtener intervalos de confianza de arranque para valores predichos de un modelo binomial negativo truncado cero Binomio negativo truncado cero . Combinado, es de esperar que le proporcione ejemplos suficientes para que funcione con los valores pronosticados de un poisson inflado a cero. También puede obtener algunas ideas gráficas :)

Joshua
fuente
Intenté adaptar su código para un modelo binomial negativo truncado cero en el paquete VGAM, pero recibí un error. ¿Debo crear una nueva pregunta aquí en CV y ​​vincular aquí? Realmente agradecería su ayuda con esto. En concreto, este es el error que consigo: Error in X.vlm.save %*% coefstart : non-conformable arguments.
Raphael K