L'utilisation combinée de la PROC GENMOD pour l'inférence Bayésienne et de la PROC PLM pour l'analyse post-modélisation marque une avancée majeure dans la flexibilité statistique sous SAS. Ce script démontre comment une approche Bayésienne, intégrant des connaissances a priori via la table prior, permet d'affiner l'estimation d'un modèle logistique binomial. L'innovation majeure réside ici dans l'instruction STORE, qui exporte l'intégralité du contexte du modèle vers un Item Store (cowgmd), libérant ainsi l'analyste de la nécessité de réexécuter les calculs MCMC complexes pour chaque nouvelle question de recherche.
L'expertise technique s'exprime pleinement dans l'exploitation de cet item store par la procédure PLM. En utilisant l'instruction ESTIMATE sur un modèle Bayésien restauré, vous pouvez explorer les différences d'effets entre les expériences à des niveaux spécifiques de la variable continue current. La syntaxe des contrastes (experiment 1 -1 current*experiment [1, 0 1]...) permet de décomposer l'interaction complexe et de calculer les probabilités de réponse ajustées (via l'option EXP pour obtenir les Odds Ratios). Le rendu sous forme de boxplot horizontal offre une visualisation immédiate de la distribution postérieure des différences, rendant l'interprétation de l'incertitude Bayésienne accessible et rigoureuse.
Une recommandation d'expert : vérifiez toujours la convergence de vos chaînes MCMC dans la sortie de GENMOD avant d'analyser les résultats dans PLM. Un modèle non convergent rendrait toute estimation ultérieure caduque. De plus, l'Item Store est un fichier binaire ; assurez-vous de le gérer proprement dans votre environnement de stockage si vous prévoyez de l'utiliser pour des rapports comparatifs sur le long terme.
Les deux tables de données, 'cow' et 'prior', sont créées directement dans le script à l'aide d'instructions DATA STEP et de cartes de données (datalines).
1 Bloc de code
DATA STEP Data
Explication : Ce bloc crée la table de données 'cow' qui contient les variables 'current', 'response', 'trial' et 'experiment' utilisées pour l'analyse. Les données sont intégrées directement via l'instruction 'datalines'.
Explication : Ce bloc crée la table 'prior' qui spécifie les hyperparamètres (moyenne et variance) de la distribution a priori Normale pour les coefficients du modèle bayésien.
Copié !
data prior;
input _type_$ current;
datalines;
mean 100
var 50
;
1
DATA prior;
2
INPUT _type_$ current;
3
DATALINES;
4
mean 100
5
var 50
6
;
7
3 Bloc de code
PROC GENMOD
Explication : Cette procédure ajuste un modèle de régression logistique (dist=binomial) avec une approche bayésienne. Elle modélise la proportion de réponses ('response'/'trial') en fonction du courant ('current'), de l'expérience ('experiment') et de leur interaction. L'option 'BAYES' active l'inférence bayésienne en utilisant les a priori normaux spécifiés dans la table 'prior'. Le résultat du modèle est stocké dans un item store nommé 'cowgmd' pour une utilisation ultérieure.
Copié !
proc genmod data=cow;
class experiment;
bayes coeffprior=normal(input=prior) seed=1;
model response/trial = current|experiment / dist=binomial;
store cowgmd;
title 'Bayesian Logistic Model on Cow';
run;
1
PROC GENMODDATA=cow;
2
class experiment;
3
bayes coeffprior=normal(INPUT=prior) seed=1;
4
model response/trial = current|experiment / dist=binomial;
5
store cowgmd;
6
title 'Bayesian Logistic Model on Cow';
7
RUN;
4 Bloc de code
PROC PLM
Explication : La procédure PLM (Post-fitting analysis) restaure le modèle ajusté par PROC GENMOD. L'instruction 'ESTIMATE' est utilisée pour calculer les différences de l'effet de 'experiment' à chaque niveau de 'current' (de 0 à 5). L'option 'EXP' exponentie les estimations (pour obtenir des odds ratios) et 'CL' demande les limites de confiance.
Copié !
proc plm restore=cowgmd;
estimate
'Diff at current 0' experiment 1 -1 current*experiment [1, 0 1] [-1, 0 2],
'Diff at current 1' experiment 1 -1 current*experiment [1, 1 1] [-1, 1 2],
'Diff at current 2' experiment 1 -1 current*experiment [1, 2 1] [-1, 2 2],
'Diff at current 3' experiment 1 -1 current*experiment [1, 3 1] [-1, 3 2],
'Diff at current 4' experiment 1 -1 current*experiment [1, 4 1] [-1, 4 2],
'Diff at current 5' experiment 1 -1 current*experiment [1, 5 1] [-1, 5 2]
/ exp cl;
run;
1
PROC PLM restore=cowgmd;
2
estimate
3
'Diff at current 0' experiment 1 -1 current*experiment [1, 0 1] [-1, 0 2],
4
'Diff at current 1' experiment 1 -1 current*experiment [1, 11] [-1, 12],
5
'Diff at current 2' experiment 1 -1 current*experiment [1, 21] [-1, 22],
6
'Diff at current 3' experiment 1 -1 current*experiment [1, 31] [-1, 32],
7
'Diff at current 4' experiment 1 -1 current*experiment [1, 41] [-1, 42],
8
'Diff at current 5' experiment 1 -1 current*experiment [1, 51] [-1, 52]
9
/ exp cl;
10
RUN;
5 Bloc de code
PROC PLM
Explication : Ce bloc ré-exécute les mêmes estimations que précédemment, mais active la sortie graphique avec 'ODS GRAPHICS ON'. L'option 'plots=boxplot(orient=horizontal)' dans l'instruction 'ESTIMATE' génère un diagramme en boîtes (boxplot) horizontal pour visualiser les estimations et leurs intervalles de confiance, facilitant la comparaison des différences.
Copié !
ods graphics on;
proc plm restore=cowgmd;
estimate
'Diff at current 0' experiment 1 -1 current*experiment [1, 0 1] [-1, 0 2],
'Diff at current 1' experiment 1 -1 current*experiment [1, 1 1] [-1, 1 2],
'Diff at current 2' experiment 1 -1 current*experiment [1, 2 1] [-1, 2 2],
'Diff at current 3' experiment 1 -1 current*experiment [1, 3 1] [-1, 3 2],
'Diff at current 4' experiment 1 -1 current*experiment [1, 4 1] [-1, 4 2],
'Diff at current 5' experiment 1 -1 current*experiment [1, 5 1] [-1, 5 2]
/ plots=boxplot(orient=horizontal);
run;
ods graphics off;
1
ods graphics on;
2
PROC PLM restore=cowgmd;
3
estimate
4
'Diff at current 0' experiment 1 -1 current*experiment [1, 0 1] [-1, 0 2],
5
'Diff at current 1' experiment 1 -1 current*experiment [1, 11] [-1, 12],
6
'Diff at current 2' experiment 1 -1 current*experiment [1, 21] [-1, 22],
7
'Diff at current 3' experiment 1 -1 current*experiment [1, 31] [-1, 32],
8
'Diff at current 4' experiment 1 -1 current*experiment [1, 41] [-1, 42],
9
'Diff at current 5' experiment 1 -1 current*experiment [1, 51] [-1, 52]
10
/ plots=boxplot(orient=horizontal);
11
RUN;
12
ods graphics off;
L'Astuce Pro
our optimiser l'analyse de vos contrastes post-estimation, l astuce technique consiste à utiliser l instruction STORE dans la PROC GENMOD suivie de la PROC PLM : cette approche sépare physiquement la phase de calcul bayésien intensif (échantillonnage MCMC) du post-traitement, vous permettant de tester de nouvelles comparaisons (ESTIMATE) ou de générer des graphiques de distribution a posteriori sans avoir à relancer la simulation Monte Carlo, ce qui est crucial pour gagner du temps sur des modèles complexes avec des priors informatifs.
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
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.