Publié le :
Statistique CREATION_INTERNE

Modèle à Effets Aléatoires Normaux Multivariés

Ce code est également disponible en : Deutsch English Español
En attente de validation
Ce script illustre l'utilisation de la procédure MCMC pour l'analyse d'un modèle hiérarchique. Les données, créées en interne, suivent l'évolution du poids de 30 rats sur cinq périodes. Le modèle suppose que la croissance du poids pour chaque rat suit une droite (pente et ordonnée à l'origine), mais que ces paramètres (effets aléatoires) sont propres à chaque rat et proviennent d'une distribution normale multivariée commune. La procédure estime les paramètres de cette distribution de groupe ainsi que la variance résiduelle du modèle.
Analyse des données

Type : CREATION_INTERNE


Le jeu de données 'rats' est généré via une instruction DATALINES. Le code transforme les données d'un format large (plusieurs mesures par ligne) en un format long (une mesure par ligne avec des variables 'subject' et 'age' correspondantes).

1 Bloc de code
DATA STEP Data
Explication :
Ce bloc de données lit les poids des rats à partir des 'datalines'. Il utilise un tableau (ARRAY) pour mapper les jours de mesure et des calculs sur la variable automatique `_n_` pour assigner un identifiant de sujet (`subject`) et l'âge (`age`) à chaque mesure. L'instruction 'input weight @@;' est utilisée pour lire plusieurs observations de poids à partir d'une seule ligne de données, créant ainsi un jeu de données au format long.
Copié !
1title 'Multivariate Normal Random-Effects Model';
2DATA rats;
3 array days[5] (8 15 22 29 36);
4 INPUT weight @@;
5 subject = ceil(_n_/5);
6 index = mod(_n_-1, 5) + 1;
7 age = days[index];
8 drop index days:;
9 DATALINES;
10151 199 246 283 320 145 199 249 293 354
11147 214 263 312 328 155 200 237 272 297
12135 188 230 280 323 159 210 252 298 331
13141 189 231 275 305 159 201 248 297 338
14177 236 285 350 376 134 182 220 260 296
15160 208 261 313 352 143 188 220 273 314
16154 200 244 289 325 171 221 270 326 358
17163 216 242 281 312 160 207 248 288 324
18142 187 234 280 316 156 203 243 283 317
19157 212 259 307 336 152 203 246 286 321
20154 205 253 298 334 139 190 225 267 302
21146 191 229 272 302 157 211 250 285 323
22132 185 237 286 331 160 207 257 303 345
23169 216 261 295 333 157 205 248 289 316
24137 180 219 258 291 153 200 244 286 324
25;
26RUN;
2 Bloc de code
PROC MCMC
Explication :
Ce bloc applique la procédure MCMC pour réaliser une analyse bayésienne. Il définit les paramètres du modèle, incluant les hyperparamètres (theta_c, Sig_c, var_y) et leurs distributions a priori (PRIOR). L'instruction RANDOM spécifie que les paramètres alpha et beta (regroupés dans le tableau 'theta') sont des effets aléatoires par sujet, suivant une distribution normale multivariée. L'instruction MODEL définit le modèle de vraisemblance pour le poids ('weight'). La procédure génère 10000 échantillons de la distribution a posteriori des paramètres, qui sont stockés dans la table 'postout'.
Copié !
1PROC MCMC DATA=rats nmc=10000 outpost=postout
2 seed=17 init=random;
3 ods select Parameters REParameters PostSumInt;
4 array theta[2] alpha beta;
5 array theta_c[2];
6 array Sig_c[2,2];
7 array mu0[2] (0 0);
8 array Sig0[2,2] (1000 0 0 1000);
9 array S[2,2] (0.02 0 0 20);
10 
11 parms theta_c Sig_c {121 0 0 0.26} var_y;
12 prior theta_c ~ mvn(mu0, Sig0);
13 prior Sig_c ~ iwish(2, S);
14 prior var_y ~ igamma(0.01, scale=0.01);
15 
16 random theta ~ mvn(theta_c, Sig_c) subject=subject
17 monitor=(alpha_9 beta_9 alpha_25 beta_25);
18 mu = alpha + beta * age;
19 model weight ~ normal(mu, var=var_y);
20RUN;
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.
Informations de Copyright : S A S S A M P L E L I B R A R Y