Dieses Programm generiert zwei synthetische Datensätze mit jeweils 8000 Beobachtungen, um Hurdle-Modelle zu illustrieren. Der erste Datensatz simuliert eine auf Null gekürzte Poisson-Verteilung mit einer expliziten Wahrscheinlichkeit von Null (Pi_1). Der zweite simuliert eine Negativ-Binomial-Verteilung mit einer ähnlichen Struktur. Das Skript berechnet für jede Beobachtung die erwarteten theoretischen Mittelwerte und Varianzen und verwendet dann PROC MEANS, um diese theoretischen Werte mit den empirischen Statistiken der generierten Daten zu vergleichen.
Datenanalyse
Type : CREATION_INTERNE
Die Daten werden vollständig algorithmisch in DATA-Schritten generiert (Verwendung von Zufallsfunktionen uniform, ranpoi, rangam).
1 Codeblock
ODS
Erklärung : Initialisierung der Ausgabe im HTML-Format.
Kopiert!
ods html;
1
ods html;
2 Codeblock
DATA STEP Data
Erklärung : Generierung des Datensatzes 'Poisson_Hurdle_Data'. Simuliert einen Prozess, bei dem eine Beobachtung entweder 0 ist (mit Wahrscheinlichkeit p1) oder aus einer abgeschnittenen Poisson-Verteilung gezogen wird (Ablehnungsmethode), wenn die Hürde überschritten wird.
Kopiert!
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 Codeblock
PROC PRINT
Erklärung : Anzeige der theoretischen Parameter (Mittelwert und Varianz), die während der Simulation zur Überprüfung berechnet wurden.
Kopiert!
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 Codeblock
PROC MEANS
Erklärung : Berechnung der tatsächlichen deskriptiven Statistiken der simulierten Daten zur Validierung des Modells.
Kopiert!
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 Codeblock
DATA STEP Data
Erklärung : Generierung des Datensatzes 'NB_Hurdle_Data'. Simuliert ein Negativ-Binomial-Modell mit Hürde. Verwendet eine Kombination aus Gamma- und Poisson-Verteilung zur Generierung der Negativ-Binomial-Verteilung.
Kopiert!
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 Codeblock
PROC PRINT
Erklärung : Anzeige der theoretischen Parameter für das Negativ-Binomial-Modell.
Kopiert!
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 Codeblock
PROC MEANS
Erklärung : Berechnung der tatsächlichen deskriptiven Statistiken der simulierten Negativ-Binomial-Daten.
Kopiert!
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 Codeblock
ODS
Erklärung : Schließen des HTML-Ziels.
Kopiert!
ods html close;
1
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.