Publié le :
Statistique CREATION_INTERNE

Exemple de démarrage PROC MCMC 2 : Problème de Behrens-Fisher

Ce code est également disponible en : Deutsch English
En attente de validation
Ce script effectue une analyse bayésienne pour comparer les moyennes de deux groupes indépendants supposés suivre des lois normales avec des variances différentes. Il crée d'abord un jeu de données interne. Ensuite, il utilise la procédure MCMC pour estimer les paramètres du modèle (moyennes et variances par groupe) et la différence des moyennes ('mudif'). Enfin, il utilise PROC FREQ pour analyser la probabilité que la différence des moyennes soit positive ou négative à partir de l'échantillon a posteriori.
Analyse des données

Type : CREATION_INTERNE


Les données sont générées directement dans le script via une étape DATA avec la commande 'datalines'.

1 Bloc de code
DATA STEP Data
Explication :
Définit le titre et crée le jeu de données 'behrens' contenant la variable réponse 'y' et l'indicateur de groupe 'ind'. Les données sont lues en ligne.
Copié !
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 Bloc de code
PROC MCMC Data
Explication :
Exécute la simulation de Monte Carlo par chaînes de Markov (MCMC). Définit les paramètres (mu1, mu2, sig21, sig22), les priors (non informatifs ici), et la structure du modèle conditionnel (différentes moyennes et variances selon le groupe 'ind'). La différence des moyennes 'mudif' est calculée à chaque itération. Les résultats sont stockés dans le dataset 'postout'.
Copié !
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 Bloc de code
PROC FORMAT
Explication :
Crée un format personnalisé 'diffmt' pour catégoriser les valeurs numériques en deux groupes : inférieures ou égales à 0, et strictement supérieures à 0.
Copié !
1 
2PROC FORMAT;
3value diffmt low-0 = 'mu1 - mu2 <= 0' 0<-high = 'mu1 - mu2 > 0';
4RUN;
5 
4 Bloc de code
PROC FREQ
Explication :
Utilise PROC FREQ sur les données de sortie de la simulation ('postout') pour calculer la fréquence de la différence des moyennes ('mudif') selon le format défini, permettant d'estimer la probabilité que la différence soit positive ou négative.
Copié !
1PROC FREQ DATA = postout;
2 tables mudif /nocum;
3 FORMAT mudif diffmt.;
4RUN;
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.