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!
ods html;
1
ods 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!
data Poisson_Hurdle_Data;
n = 8000;
p1 = 0.4;
mu = 10;
seed = 1979;
*--- Underlying True Mean and Variance;
p2 = exp(-mu);
p1c = 1 - p1;
p2c = 1 - p2;
Phi = p1c / p2c;
Mean = Phi*mu;
Var = Phi*mu*(mu+1)- Mean*Mean;
do j=1 to n;
u = uniform(seed);
if u <= p1 then do;
Y = 0;
output;
end;
else do; *--- Crossing the hurdle;
*--- Get Truncated Poisson using Rejection Method;
do until (y>0);
y = ranpoi(seed,mu);
end;
output;
end;
end;
run;
1
DATA 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 THENDO;
18
Y = 0;
19
OUTPUT;
20
END;
21
ELSEDO; *--- 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!
title2 "Underlying True Mean and Variance";
proc print data=Poisson_Hurdle_Data noobs;
where j=1;
var Mean Var;
format _all_ 8.4;
run;
1
title2 "Underlying True Mean and Variance";
2
PROC PRINTDATA=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!
title2 "Estimated Mean and Variance";
proc means data=Poisson_Hurdle_Data n mean var maxdec=4;
var y;
run;
1
title2 "Estimated Mean and Variance";
2
PROC MEANSDATA=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!
data NB_Hurdle_Data;
n = 8000;
p1 = 0.4;
mu = 10;
Kappa = 0.1;
alpha = 1 / kappa;
beta = kappa * mu;
seed = 1983;
*--- Underlying True Mean and Variance;
p2 = (1/(1+kappa*mu))**(alpha);
p1c = 1 - p1;
p2c = 1 - p2;
Phi = p1c / p2c;
Mean = Phi*mu;
Var = Phi*mu*(1+mu+kappa*mu)- Mean*Mean;
do j=1 to n;
u = uniform(seed);
if u <= p1 then do;
Y = 0;
output;
end;
else do; *--- Crossing the hurdle;
*--- Get Truncated Neg-bin using Rejection Method;
do until (y>0);
uu = beta * rangam( seed, alpha );
y = ranpoi( seed, uu );
end;
output;
end;
end;
drop alpha beta kappa;
run;
1
DATA 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 THENDO;
21
Y = 0;
22
OUTPUT;
23
END;
24
ELSEDO; *--- 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!
title2 "Underlying True Mean and Variance";
proc print data=NB_Hurdle_Data noobs;
where j = 1;
var Mean Var;
format _all_ 8.4;
run;
1
title2 "Underlying True Mean and Variance";
2
PROC PRINTDATA=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!
title2 "Estimated Mean and Variance";
proc means data=NB_Hurdle_Data n mean var maxdec=4;
var y;
run;
1
title2 "Estimated Mean and Variance";
2
PROC MEANSDATA=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!
ods html close;
1
ods 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.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.