Publié le :
Statistique CREATION_INTERNE

Modèle de Poisson non linéaire à effets aléatoires (MCMCEX8)

Ce code est également disponible en : Deutsch English Español
En attente de validation
Ce script utilise la procédure MCMC pour effectuer une analyse bayésienne sur des données de pompes (pump failure data). Il compare deux paramétrages du modèle (centré et non centré) pour estimer les hyperparamètres et les effets aléatoires. Le code génère les données en interne et utilise ODS Graphics pour les diagnostics de trace.
Analyse des données

Type : CREATION_INTERNE


Les données 'pump' sont générées directement dans le script via un Data Step utilisant DATALINES.

1 Bloc de code
DATA STEP Data
Explication :
Création du jeu de données 'pump' avec les variables y, t, et group. Note : Le code contient un artefact étrange (@code_sas_json...) dans l'instruction INPUT qui semble être une erreur d'insertion, mais les données sont présentes sous forme de datalines.
Copié !
1title 'Nonlinear Poisson Regression Random-Effects Model';
2DATA pump;
3 INPUT y t group @code_sas_json/hsdua2304@gmail.com_SAS_Assignment_2.json;
4 pump = _n_;
5 logtstd = log(t) - 2.4564900;
6 DATALINES;
7 5 94.320 1 1 15.720 2 5 62.880 1
814 125.760 1 3 5.240 2 19 31.440 1
9 1 1.048 2 1 1.048 2 4 2.096 2
1022 10.480 2
11;
2 Bloc de code
PROC MCMC
Explication :
Première exécution de PROC MCMC pour ajuster le modèle bayésien. Utilise une loi a priori Inverse-Gamma pour la variance et définit des effets aléatoires normaux multivariés (u) et univariés (e).
Copié !
1ods graphics on;
2PROC MCMC DATA=pump outpost=postout seed=248601 nmc=10000
3 plots=trace stats=none diag=none;
4 ods select tracepanel;
5 array u[2] alpha beta;
6 array mu[2] (0 0);
7 parms s2;
8 prior s2 ~ igamma(0.01, scale=0.01);
9 random u ~ MVNAR(mu, sd=1e6, rho=0) subject=group monitor=(u);
10 random e ~ normal(0, var=s2) subject=pump monitor=(random(1));
11 w = alpha + beta * logtstd;
12 lambda = exp(w+e);
13 model y ~ poisson(lambda);
14RUN;
3 Bloc de code
PROC MCMC
Explication :
Seconde exécution de PROC MCMC avec un paramétrage différent (modèle hiérarchique centré sur la variable latente 'llambda') pour améliorer la convergence ou l'efficacité de l'échantillonnage.
Copié !
1PROC MCMC DATA=pump outpost=postout_c seed=248601 nmc=10000
2 plots=trace diag=none;
3 ods select tracepanel postsumint;
4 array u[2] alpha beta;
5 array mu[2] (0 0);
6 parms s2 1;
7 prior s2 ~ igamma(0.01, scale=0.01);
8 random u ~ MVNAR(mu, sd=1e6, rho=0) subject=group monitor=(u);
9 w = alpha + beta * logtstd;
10 random llambda ~ normal(w, var = s2) subject=pump monitor=(random(1));
11 lambda = exp(llambda);
12 model y ~ poisson(lambda);
13RUN;
4 Bloc de code
MACRO CALL
Explication :
Appel d'une macro utilitaire '%CATER' (probablement pour visualiser des graphiques de type caterpillar plots des effets aléatoires) et fermeture des graphiques ODS.
Copié !
1%CATER(
2DATA=postout_c, var=llambda_:);
3ods graphics off;
4 
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 : SAS SAMPLE LIBRARY, PRODUCT: STAT


Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« La convergence est le nerf de la guerre en MCMC. Si vos graphiques de trace ressemblent à des "serpents" plutôt qu'à des "poils blancs" (bruit blanc), augmentez le nombre d'itérations (nmc) ou ajustez la période de chauffe (nburn). Pour ce modèle de pannes, la paramétrisation centrée (la seconde dans le code) est souvent plus performante pour réduire l'autocorrélation des chaînes. »