9 votos

Cómo obtener los errores estándar de R cero-inflado los datos del conteo de regresión?

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 valor residual de escala plazo.

Perfecto... sin Embargo el uso de 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 único vector columna de los valores ajustados sólo. Yo, sin embargo, ser muy dispuesta a tener errores estándar. Todo lo que he leído dice que deberían ser producidos..

(Código se ha simplificado un poco, de hecho tengo cuatro variables y un desplazamiento - no hay problemas con el predict.glm y se.fit = TRUE la producción de SEs.)

7voto

Joshua Puntos 946

A mi conocimiento, el predict método para resultados de zeroinfl no se incluyen los errores estándar. Si su objetivo es construir intervalos de confianza, una atractiva alternativa es el uso de bootstrap. Me dicen que atractivo, ya de arranque tiene el potencial de ser más robusto (en una pérdida de eficiencia, si todos los supuestos para el SEs se cumplen).

Aquí hay algunos difíciles de código para hacer lo que quieres. No va a funcionar exactamente, pero espero que usted puede 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 escribió, uno de arranque de los parámetros de un cero-inflado de regresión de poisson con zeroinfl Cero-inflado de poisson y una demostración de cómo obtener bootstrap intervalos de confianza para los valores predichos de cero trunca modelo binomial negativo Cero truncada a la binomial negativa. Combinado, espero que te ofrece suficientes ejemplos para que funcione con los valores predichos de un cero-inflado de poisson. Usted también puede obtener algunos gráficos ideas :)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X