Le code comporte deux volets distincts. Le premier génère un rapport financier à partir de la table 'sashelp.orsales', calculant les profits par année et par gamme de produits avec des pourcentages. Le second volet simule un jeu de données de 2000 observations suivant une distribution binomiale négative, puis utilise PROC GLIMMIX pour estimer les paramètres et valider la simulation par rapport aux valeurs théoriques.
Analyse des données
Type : MIXTE
Utilise SASHELP.ORSALES pour le reporting. Génère des données internes (table 'one') via des fonctions aléatoires (rangam, ranpoi) pour la partie statistique.
1 Bloc de code
PROC FORMAT
Explication : Définition d'un format utilisateur pour l'affichage des libellés de gammes de produits.
Copié !
proc format;
value $sequip
'Sports' = 'Sports Equipment';
run;
1
PROC FORMAT;
2
value $sequip
3
'Sports' = 'Sports Equipment';
4
RUN;
2 Bloc de code
PROC REPORT
Explication : Création d'un rapport de synthèse avec calculs de pourcentages via un bloc COMPUTE. Note : La ligne 'line @code_sas/...' contient une référence de fichier qui pourrait générer une erreur de syntaxe si elle n'est pas commentée ou corrigée.
Copié !
title1 'Total profit per year';
title2 'Separated by Product Line';
proc report data=sashelp.orsales nowd split='*';
column year product_line profit percent;
define year / group;
define product_line
/ group
f=$sequip.
'Product*Groups';
define profit / analysis
sum format=dollar15.2
'Annual*Profit';
define percent/ computed 'Product*Percentage'
format=percent10.2;
break after year/ summarize suppress skip;
rbreak after / summarize;
compute before year;
total = profit.sum;
endcomp;
compute percent;
percent = profit.sum/total;
endcomp;
compute after;
line ' ';
line @code_sas/25 Appendix_A Generating_Negative_Binomial_Data.sas 'Profits in US dollars';
endcomp;
run;
1
title1 'Total profit per year';
2
title2 'Separated by Product Line';
3
PROC REPORTDATA=sashelp.orsales nowd split='*';
4
column year product_line profit percent;
5
define year / group;
6
define product_line
7
/ group
8
f=$sequip.
9
'Product*Groups';
10
define profit / analysis
11
sum FORMAT=dollar15.2
12
'Annual*Profit';
13
define percent/ computed 'Product*Percentage'
14
FORMAT=percent10.2;
15
16
break after year/ summarize suppress skip;
17
rbreak after / summarize;
18
19
compute before year;
20
total = profit.sum;
21
endcomp;
22
compute percent;
23
percent = profit.sum/total;
24
endcomp;
25
compute after;
26
line ' ';
27
line @code_sas/25 Appendix_A Generating_Negative_Binomial_Data.sas 'Profits in US dollars';
28
endcomp;
29
RUN;
3 Bloc de code
DATA STEP Data
Explication : Simulation de données : création d'une table 'one' contenant des variables aléatoires suivant une loi binomiale négative.
Copié !
data one;
Mu = 30;
Kappa = 0.1;
alpha = 1 / kappa;
beta = kappa * mu;
n = 2000;
seed = 1917;
Variance = mu * ( 1 + mu*kappa);
do id=1 to n;
u = beta * rangam( seed, alpha );
Y = ranpoi( seed, u );
output;
end;
keep Mu Kappa Variance id y;
run;
1
DATA one;
2
Mu = 30;
3
Kappa = 0.1;
4
alpha = 1 / kappa;
5
beta = kappa * mu;
6
n = 2000;
7
seed = 1917;
8
Variance = mu * ( 1 + mu*kappa);
9
DO id=1 to n;
10
u = beta * rangam( seed, alpha );
11
Y = ranpoi( seed, u );
12
OUTPUT;
13
END;
14
keep Mu Kappa Variance id y;
15
RUN;
4 Bloc de code
PROC GLIMMIX
Explication : Modélisation statistique : estimation des paramètres de la distribution sur les données simulées pour vérifier la cohérence avec les paramètres d'entrée.
Copié !
ods select none;
ods output ParameterEstimates=parms;
proc glimmix data=one;
model y = / dist=negbin link=identity s;
run;
ods select all;
1
ods select none;
2
ods OUTPUT ParameterEstimates=parms;
3
PROC GLIMMIXDATA=one;
4
model y = / dist=negbin link=identity s;
5
RUN;
6
ods select all;
5 Bloc de code
PROC PRINT / PROC MEANS
Explication : Validation des résultats : affichage comparatif des paramètres théoriques (Mu, Kappa) et des statistiques observées sur les données générées.
Copié !
ods html;
title "True Mu and Kappa of Y's iid Negative-binomial(Mu, Kappa)";
proc print data=one noobs;
where id = 1;
var Mu Kappa;
run;
title "Estimated Mu and Kappa using PROC GLIMMIX";
proc print data=parms noobs;
var Effect Estimate;
run;
data one;
set one;
rename Mu = Mean;
run;
title "True Mean and Variance of Y's iid Negative-binomial(Mu, Kappa)";
proc print data=one noobs;
where id = 1;
var Mean Variance;
run;
title "Estimated Mean and Variance";
proc means data=one n mean var maxdec=2;
var y;
run;
ods html close;
1
ods html;
2
title "True Mu and Kappa of Y's iid Negative-binomial(Mu, Kappa)";
3
proc print data=one noobs;
4
where id = 1;
5
var Mu Kappa;
6
run;
7
8
title "Estimated Mu and Kappa using PROC GLIMMIX";
9
proc print data=parms noobs;
10
var Effect Estimate;
11
run;
12
13
data one;
14
set one;
15
rename Mu = Mean;
16
run;
17
18
title "True Mean and Variance of Y's iid Negative-binomial(Mu, Kappa)";
19
PROC PRINTDATA=one noobs;
20
where id = 1;
21
var Mean Variance;
22
RUN;
23
24
title "Estimated Mean and Variance";
25
PROC MEANSDATA=one n mean var maxdec=2;
26
var y;
27
RUN;
28
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.