Le script commence par créer un jeu de données 'pump' contenant des informations sur la fiabilité des pompes (nombre de pannes 'y', temps de fonctionnement 't', et groupe 'group'). Ensuite, deux procédures statistiques sont utilisées : 'PROC GLIMMIX' pour ajuster un modèle linéaire mixte généralisé avec une distribution de Poisson et une fonction de lien logarithmique, incluant un effet aléatoire par pompe et estimant les différences d'ordonnées à l'origine et de pentes entre les groupes. La seconde procédure, 'PROC NLMIXED', ajuste un modèle mixte non linéaire pour les mêmes données, définissant un prédicteur linéaire conditionnel 'eta' et un paramètre de taux 'lambda' pour une distribution de Poisson, avec un effet aléatoire distribué normalement et des estimations pour les différences entre les paramètres de groupe et la variance de l'effet aléatoire. L'ensemble de l'analyse est généré au format HTML grâce à ODS.
Analyse des données
Type : CREATION_INTERNE
Les données du dataset 'pump' sont directement créées et intégrées dans le script via une instruction DATALINES.
1 Bloc de code
DATA STEP Data
Explication : Ce bloc DATA STEP crée le jeu de données 'pump'. 'pump' est un identifiant unique basé sur le numéro d'observation. 'y' représente le nombre de pannes, 't' le temps de fonctionnement, et 'group' est une variable catégorielle. 'logtstd' est une variable transformée (logarithme de 't' moins une constante), potentiellement standardisée ou centrée. Les données sont fournies directement dans le script via l'instruction DATALINES.
Explication : Ce bloc utilise 'PROC GLIMMIX' pour ajuster un modèle linéaire mixte généralisé aux données 'pump'. La méthode d'intégration par quadrature ('method=quad') est spécifiée. La variable 'group' est déclarée comme variable de classification. Le modèle spécifie 'y' comme variable réponse, 'group' et l'interaction 'logtstd*group' comme prédicteurs. L'option 'noint' supprime l'interception automatique, 'dist=poisson' indique une distribution de Poisson pour la réponse, et 'link=log' utilise une fonction de lien logarithmique. 'ddfm=residual' spécifie la méthode de calcul des degrés de liberté. Un effet aléatoire ('random int') est inclus pour chaque 'pump'. Enfin, des estimations sont effectuées pour les différences entre les ordonnées à l'origine et les pentes des deux groupes. Les commandes ODS ouvrent et ferment la sortie HTML.
Copié !
ods html;
title "Pump Reliability at a Pressurized Water Reactor Nuclear Power Plant";
proc glimmix data=pump method=quad;
class group;
model y = group logtstd*group / noint dist=poisson link=log
dfml=residual;
random int / subject=pump;
estimate "Difference Y-intercepts" group 1 -1;
estimate "Difference Slopes" logtstd*group 1 -1;
run;
ods html close;
1
ods html;
2
title "Pump Reliability at a Pressurized Water Reactor Nuclear Power Plant";
3
PROC GLIMMIXDATA=pump method=quad;
4
class group;
5
model y = group logtstd*group / noint dist=poisson link=log
6
dfml=residual;
7
random int / subject=pump;
8
estimate "Difference Y-intercepts" group 1 -1;
9
estimate "Difference Slopes" logtstd*group 1 -1;
10
RUN;
11
ods html close;
3 Bloc de code
PROC NLMIXED
Explication : Ce bloc utilise 'PROC NLMIXED' pour ajuster un modèle mixte non linéaire. Les paramètres initiaux ('parms') sont définis pour 'logsig', 'beta1', 'beta2', 'alpha1' et 'alpha2'. La variable 'eta' est définie conditionnellement selon la valeur de 'group', intégrant des paramètres fixes ('alpha1', 'alpha2', 'beta1', 'beta2') et un effet aléatoire 'e'. 'lambda' est calculé comme l'exponentielle de 'eta'. Le modèle spécifie que 'y' suit une distribution de Poisson avec le paramètre 'lambda'. L'effet aléatoire 'e' est supposé suivre une distribution normale avec une moyenne de 0 et une variance de 'exp(2*logsig)', avec 'pump' comme sujet pour les effets aléatoires. Des estimations sont fournies pour les différences entre les paramètres 'alpha' et 'beta' des groupes, ainsi que pour la variance ('Sigma**2') de l'effet aléatoire.
Copié !
proc nlmixed data=pump;
parms logsig 0 beta1 1 beta2 1 alpha1 1 alpha2 1;
if (group = 1) then eta = alpha1 + beta1*logtstd + e;
else eta = alpha2 + beta2*logtstd + e;
lambda = exp(eta);
model y ~ poisson(lambda);
random e ~ normal(0,exp(2*logsig)) subject=pump;
estimate 'alpha1-alpha2' alpha1-alpha2;
estimate 'beta1-beta2' beta1-beta2;
estimate 'Sigma**2' exp(2*logsig);
run;
1
PROC NLMIXEDDATA=pump;
2
parms logsig 0 beta1 1 beta2 1 alpha1 1 alpha2 1;
3
IF (group = 1) THEN eta = alpha1 + beta1*logtstd + e;
4
ELSE eta = alpha2 + beta2*logtstd + e;
5
lambda = exp(eta);
6
model y ~ poisson(lambda);
7
random e ~ normal(0,exp(2*logsig)) subject=pump;
8
estimate 'alpha1-alpha2' alpha1-alpha2;
9
estimate 'beta1-beta2' beta1-beta2;
10
estimate 'Sigma**2' exp(2*logsig);
11
RUN;
Résultat Visuel
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 : Gaver and O’Muircheartaigh (1987), Draper (1996)
« ommencez toujours par PROC GLIMMIX pour stabiliser vos estimations initiales. Si le modèle s'ajuste mal ou si vous avez besoin d'une paramétrisation très spécifique de la variance, utilisez alors les résultats de GLIMMIX comme valeurs de départ (starting values) pour PROC NLMIXED afin de garantir la convergence de l'algorithme »
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.