Publicado el :
Estadística CREATION_INTERNE

Simulación de Modelos Hurdle Poisson y Binomial Negativa

Este código también está disponible en: Deutsch English Français
En espera de validación
Este programa genera dos conjuntos de datos sintéticos de 8000 observaciones cada uno para ilustrar modelos de barrera (Hurdle). El primer conjunto simula una distribución de Poisson truncada en cero con una probabilidad explícita de cero (Pi_1). El segundo simula una distribución Binomial Negativa con una estructura similar. El script calcula para cada observación las medias y varianzas teóricas esperadas, y luego utiliza PROC MEANS para comparar estos valores teóricos con las estadísticas empíricas de los datos generados.
Análisis de datos

Type : CREATION_INTERNE


Los datos se generan completamente algorítmicamente en pasos DATA (uso de funciones aleatorias uniform, ranpoi, rangam).

1 Bloque de código
ODS
Explicación :
Inicialización de la salida en formato HTML.
¡Copiado!
1ods html;
2 Bloque de código
DATA STEP Data
Explicación :
Generación del conjunto de datos 'Poisson_Hurdle_Data'. Simula un proceso donde una observación es 0 (con probabilidad p1), o se extrae de una distribución de Poisson truncada (método de rechazo) si se cruza la barrera.
¡Copiado!
1DATA Poisson_Hurdle_Data;
2 n = 8000;
3 p1 = 0.4;
4 mu = 10;
5 seed = 1979;
6 
7 *--- Underlying True Mean and Variance;
8 p2 = exp(-mu);
9 p1c = 1 - p1;
10 p2c = 1 - p2;
11 Phi = p1c / p2c;
12 Mean = Phi*mu;
13 Var = Phi*mu*(mu+1)- Mean*Mean;
14 
15 DO j=1 to n;
16 u = uniform(seed);
17 IF u <= p1 THEN DO;
18 Y = 0;
19 OUTPUT;
20 END;
21 ELSE DO; *--- Crossing the hurdle;
22 *--- Get Truncated Poisson using Rejection Method;
23 DO until (y>0);
24 y = ranpoi(seed,mu);
25 END;
26 OUTPUT;
27 END;
28 END;
29 RUN;
3 Bloque de código
PROC PRINT
Explicación :
Visualización de los parámetros teóricos (Media y Varianza) calculados durante la simulación para verificación.
¡Copiado!
1title2 "Underlying True Mean and Variance";
2 PROC PRINT DATA=Poisson_Hurdle_Data noobs;
3 where j=1;
4 var Mean Var;
5 FORMAT _all_ 8.4;
6 RUN;
4 Bloque de código
PROC MEANS
Explicación :
Cálculo de las estadísticas descriptivas reales sobre los datos simulados para validar el modelo.
¡Copiado!
1title2 "Estimated Mean and Variance";
2 PROC MEANS DATA=Poisson_Hurdle_Data n mean var maxdec=4;
3 var y;
4 RUN;
5 Bloque de código
DATA STEP Data
Explicación :
Generación del conjunto de datos 'NB_Hurdle_Data'. Simula un modelo Binomial Negativo con barrera. Utiliza una combinación de distribuciones Gamma y Poisson para generar la Binomial Negativa.
¡Copiado!
1DATA NB_Hurdle_Data;
2 n = 8000;
3 p1 = 0.4;
4 mu = 10;
5 Kappa = 0.1;
6 alpha = 1 / kappa;
7 beta = kappa * mu;
8 seed = 1983;
9 
10 *--- Underlying True Mean and Variance;
11 p2 = (1/(1+kappa*mu))**(alpha);
12 p1c = 1 - p1;
13 p2c = 1 - p2;
14 Phi = p1c / p2c;
15 Mean = Phi*mu;
16 Var = Phi*mu*(1+mu+kappa*mu)- Mean*Mean;
17 
18 DO j=1 to n;
19 u = uniform(seed);
20 IF u <= p1 THEN DO;
21 Y = 0;
22 OUTPUT;
23 END;
24 ELSE DO; *--- Crossing the hurdle;
25 *--- Get Truncated Neg-bin using Rejection Method;
26 DO until (y>0);
27 uu = beta * rangam( seed, alpha );
28 y = ranpoi( seed, uu );
29 END;
30 OUTPUT;
31 END;
32 END;
33 drop alpha beta kappa;
34 RUN;
6 Bloque de código
PROC PRINT
Explicación :
Visualización de los parámetros teóricos para el modelo Binomial Negativo.
¡Copiado!
1title2 "Underlying True Mean and Variance";
2 PROC PRINT DATA=NB_Hurdle_Data noobs;
3 where j = 1;
4 var Mean Var;
5 FORMAT _all_ 8.4;
6 RUN;
7 Bloque de código
PROC MEANS
Explicación :
Cálculo de las estadísticas descriptivas reales sobre los datos Binomiales Negativos simulados.
¡Copiado!
1title2 "Estimated Mean and Variance";
2 PROC MEANS DATA=NB_Hurdle_Data n mean var maxdec=4;
3 var y;
4 RUN;
8 Bloque de código
ODS
Explicación :
Cierre del destino HTML.
¡Copiado!
1ods html close;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.