5 votos

Simulación de datos de recuento cero en R

Necesito simular datos para explorar la cuestión: "¿Qué ocurre si mis datos tienen inflación cero, pero la ignoro y en su lugar ajusto un modelo de recuento estándar?" Más concretamente, ¿cómo puedo añadir ceros de forma que esté correlacionado con uno o más elementos de X (variables independientes)?

(Para generar los datos, he supuesto una distribución de Poisson).

3 votos

¿Solucionaría su problema la simulación a partir de una regresión ZIP ajustada? Si no es así, ¿puede ser más explícito sobre cómo le gustaría añadir ceros?

0 votos

Así pues, he generado mi propio conjunto de datos en el que la variable dependiente (Y) sigue una distribución de Poisson y está asociada a una única variable continua (X). (Especifico los parámetros, sólo escojo valores aleatorios). Quiero introducir la inflación cero en este conjunto de datos. No importa cómo se correlacionan los ceros con X.

3voto

icelava Puntos 548

Basándome en el título de su pregunta, interpretaré "añadir ceros de forma que esté correlacionado con uno o más elementos de X (variables independientes)" como "simular a partir de un modelo ajustado con inflación cero, con la cantidad de inflación cero dependiente de los regresores". Aquí hay un resumen útil para modelar datos con inflación cero en R.

Cargamos el pscl para las herramientas necesarias y ajustar un modelo ZIP para el conjunto de datos incorporado bioChemists .

require(pscl)
fm_zip2 <- zeroinfl(art ~ . | ., data = bioChemists)

Nótese que especificamos que la cantidad de inflación cero debe depender de los predictores - especificando art ~ . | 1 equivaldría a una inflación cero independiente de los regresores.

Ahora queremos simular los recuentos de este modelo. Especificamos el número máximo de recuentos que queremos simular:

max_count <- 30

Para la simulación, necesitamos especificar los valores de las covariables. Simplemente utilizaremos la primera fila de datos en bioChemists como el newdata . Utilizamos el predict (ver ?predict.zeroinfl ) con type="prob" .

probs_predicted <- predict(fm_zip2,newdata=bioChemists[1,],type="prob",at=0:max_count)

El trazado de las probabilidades ajustadas para cada recuento muestra un poco de inflación cero:

plot(probs_predicted[1,], type="h", lwd=5, col="lightgray", xlab="Count", ylab="Probability")

fitted probabilities

Ahora podemos sample de los recuentos especificados con las probabilidades ajustadas:

set.seed(1)
xx <- sample(x=0:max_count,size=1e6,prob=probs_predicted[1,],replace=TRUE)
hist(xx,xlab="Count",breaks=seq(-0.5,max_count+0.5),col="lightgray",main="")

simulations

Los dos gráficos se alinean muy bien, así que parece que estamos haciendo lo correcto.

Puede especificar los valores adecuados para sus predictores y muestrear más o menos valores según le parezca.

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