Veröffentlicht am :
Statistik INTERNE_ERSTELLUNG

PROC MCMC Startbeispiel 2: Behrens-Fisher-Problem

Dieser Code ist auch verfügbar auf: English Français
Wartet auf Validierung
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.
Kopiert!
1title 'The Behrens-Fisher Problem';
2 
3DATA behrens;
4 INPUT y ind @;
5 DATALINES;
6121 1 94 1 119 1 122 1 142 1 168 1 116 1
7172 1 155 1 107 1 180 1 119 1 157 1 101 1
8145 1 148 1 120 1 147 1 125 1 126 2 125 2
9130 2 130 2 122 2 118 2 118 2 111 2 123 2
10126 2 127 2 111 2 112 2 121 2
11;
2 Codeblock
PROC MCMC Data
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!
1PROC MCMC DATA=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 = 1 THEN DO;
13 mu = mu1;
14 s2 = sig21;
15 END;
16 ELSE DO;
17 mu = mu2;
18 s2 = sig22;
19 END;
20 model y ~ normal(mu, var=s2);
21RUN;
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.
Kopiert!
1 
2PROC FORMAT;
3value diffmt low-0 = 'mu1 - mu2 <= 0' 0<-high = 'mu1 - mu2 > 0';
4RUN;
5 
4 Codeblock
PROC FREQ
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!
1PROC FREQ DATA = postout;
2 tables mudif /nocum;
3 FORMAT mudif diffmt.;
4RUN;
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.