Der Code besteht aus zwei unterschiedlichen Teilen. Der erste generiert einen Finanzbericht aus der Tabelle 'sashelp.orsales', der Gewinne pro Jahr und Produktlinie mit Prozentwerten berechnet. Der zweite Teil simuliert einen Datensatz von 2000 Beobachtungen, die einer negativen Binomialverteilung folgen, und verwendet dann PROC GLIMMIX, um die Parameter zu schätzen und die Simulation anhand theoretischer Werte zu validieren.
Datenanalyse
Type : MIXTE
Verwendet SASHELP.ORSALES für die Berichterstattung. Generiert interne Daten (Tabelle 'one') mittels Zufallsfunktionen (rangam, ranpoi) für den statistischen Teil.
1 Codeblock
PROC FORMAT
Erklärung : Definition eines Benutzerformats zur Anzeige von Produktlinienbezeichnungen.
Kopiert!
proc format;
value $sequip
'Sports' = 'Sports Equipment';
run;
1
PROC FORMAT;
2
value $sequip
3
'Sports' = 'Sports Equipment';
4
RUN;
2 Codeblock
PROC REPORT
Erklärung : Erstellung eines Übersichtsberichts mit Prozentberechnungen über einen COMPUTE-Block. Hinweis: Die Zeile 'line @code_sas/...' enthält eine Dateireferenz, die einen Syntaxfehler verursachen könnte, wenn sie nicht auskommentiert oder korrigiert wird.
Kopiert!
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 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 Appendix_A Generating_Negative_Binomial_Data.sas 'Profits in US dollars';
28
endcomp;
29
RUN;
3 Codeblock
DATA STEP Data
Erklärung : Datensimulation: Erstellung einer Tabelle 'one' mit Zufallsvariablen, die einer negativen Binomialverteilung folgen.
Kopiert!
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 Codeblock
PROC GLIMMIX
Erklärung : Statistische Modellierung: Schätzung der Verteilungsparameter auf den simulierten Daten, um die Konsistenz mit den Eingabeparametern zu überprüfen.
Kopiert!
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 Codeblock
PROC PRINT / PROC MEANS
Erklärung : Validierung der Ergebnisse: Vergleichende Anzeige der theoretischen Parameter (Mu, Kappa) und der beobachteten Statistiken auf den generierten Daten.
Kopiert!
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;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.