Ce programme génère deux jeux de données synthétiques de 8000 observations chacun pour illustrer des modèles à barrière (Hurdle). Le premier jeu simule une loi de Poisson tronquée à zéro avec une probabilité explicite de zéro (Pi_1). Le second simule une loi Négative-Binomiale avec une structure similaire. Le script calcule pour chaque observation les moyennes et variances théoriques attendues, puis utilise PROC MEANS pour comparer ces valeurs théoriques aux statistiques empiriques des données générées.
Analyse des données
Type : CREATION_INTERNE
Les données sont entièrement générées algorithmiquement dans des étapes DATA (utilisation de fonctions aléatoires uniform, ranpoi, rangam).
1 Bloc de code
ODS
Explication : Initialisation de la sortie au format HTML.
Copié !
ods html;
1
ods html;
2 Bloc de code
DATA STEP Data
Explication : Génération du jeu de données 'Poisson_Hurdle_Data'. Simule un processus où une observation est soit 0 (avec probabilité p1), soit tirée d'une loi de Poisson tronquée (méthode de rejet) si la barrière est franchie.
Copié !
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 Bloc de code
PROC PRINT
Explication : Affichage des paramètres théoriques (Moyenne et Variance) calculés lors de la simulation pour vérification.
Copié !
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 Bloc de code
PROC MEANS
Explication : Calcul des statistiques descriptives réelles sur les données simulées pour valider le modèle.
Copié !
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 Bloc de code
DATA STEP Data
Explication : Génération du jeu de données 'NB_Hurdle_Data'. Simule un modèle Négatif-Binomial avec barrière. Utilise une combinaison de loi Gamma et Poisson pour générer la Négative-Binomiale.
Copié !
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 Bloc de code
PROC PRINT
Explication : Affichage des paramètres théoriques pour le modèle Négatif-Binomial.
Copié !
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 Bloc de code
PROC MEANS
Explication : Calcul des statistiques descriptives réelles sur les données Négatives-Binomiales simulées.
Copié !
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 Bloc de code
ODS
Explication : Fermeture de la destination HTML.
Copié !
ods html close;
1
ods html close;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.