Dieses Skript führt eine bayesianische Analyse durch, um die Mittelwerte zweier unabhängiger Gruppen zu vergleichen, die als normalverteilt mit unterschiedlichen Varianzen angenommen werden. Zuerst wird ein internes Dataset erstellt. Anschließend wird das MCMC-Verfahren verwendet, um die Modellparameter (Mittelwerte und Varianzen pro Gruppe) und die Differenz der Mittelwerte ('mudif') zu schätzen. Schließlich wird PROC FREQ verwendet, um die Wahrscheinlichkeit zu analysieren, dass die Differenz der Mittelwerte basierend auf der A-posteriori-Stichprobe positiv oder negativ ist.
Datenanalyse
Type : INTERNE_ERSTELLUNG
Die Daten werden direkt im Skript über einen DATA-Schritt mit dem Befehl 'datalines' generiert.
1 Codeblock
DATA STEP Data
Erklärung : Definiert den Titel und erstellt das Dataset 'behrens', das die Antwortvariable 'y' und den Gruppenindikator 'ind' enthält. Die Daten werden inline eingelesen.
Erklärung : Führt die Monte-Carlo-Markow-Ketten (MCMC)-Simulation aus. Definiert die Parameter (mu1, mu2, sig21, sig22), die Prioren (hier nicht informativ) und die Struktur des bedingten Modells (unterschiedliche Mittelwerte und Varianzen je nach Gruppe 'ind'). Die Differenz der Mittelwerte 'mudif' wird bei jeder Iteration berechnet. Die Ergebnisse werden im Dataset 'postout' gespeichert.
Kopiert!
proc mcmc data=behrens outpost=postout seed=123
nmc=40000 monitor=(_parms_ mudif)
statistics(alpha=0.01);
ods select PostSumInt;
parm mu1 0 mu2 0;
parm sig21 1;
parm sig22 1;
prior mu: ~ general(0);
prior sig21 ~ general(-log(sig21), lower=0);
prior sig22 ~ general(-log(sig22), lower=0);
mudif = mu1 - mu2;
if ind = 1 then do;
mu = mu1;
s2 = sig21;
end;
else do;
mu = mu2;
s2 = sig22;
end;
model y ~ normal(mu, var=s2);
run;
1
PROC MCMCDATA=behrens outpost=postout seed=123
2
nmc=40000 monitor=(_parms_ mudif)
3
statistics(alpha=0.01);
4
ods select PostSumInt;
5
parm mu1 0 mu2 0;
6
parm sig21 1;
7
parm sig22 1;
8
prior mu: ~ general(0);
9
prior sig21 ~ general(-log(sig21), lower=0);
10
prior sig22 ~ general(-log(sig22), lower=0);
11
mudif = mu1 - mu2;
12
IF ind = 1THENDO;
13
mu = mu1;
14
s2 = sig21;
15
END;
16
ELSEDO;
17
mu = mu2;
18
s2 = sig22;
19
END;
20
model y ~ normal(mu, var=s2);
21
RUN;
3 Codeblock
PROC FORMAT
Erklärung : Erstellt ein benutzerdefiniertes Format 'diffmt', um numerische Werte in zwei Gruppen zu kategorisieren: kleiner oder gleich 0 und strikt größer als 0.
Erklärung : Verwendet PROC FREQ auf den Simulationsausgabedaten ('postout'), um die Häufigkeit der Differenz der Mittelwerte ('mudif') gemäß dem definierten Format zu berechnen, wodurch die Wahrscheinlichkeit geschätzt werden kann, dass die Differenz positiv oder negativ ist.
Kopiert!
proc freq data = postout;
tables mudif /nocum;
format mudif diffmt.;
run;
1
PROC FREQDATA = postout;
2
tables mudif /nocum;
3
FORMAT mudif diffmt.;
4
RUN;
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.