Publié le :
Statistique CREATION_INTERNE

Exemple 3 Documentation PROC NLMIXED : Modèle Probit-Normal

Ce code est également disponible en : Deutsch English Español
En attente de validation
Ce script est l'exemple 3 de la documentation SAS© pour PROC NLMIXED. Il analyse des données d'inhalateurs (Ezzet et Whitehead, 1991) en ajustant un modèle à cotes proportionnelles (proportional odds model) avec effets aléatoires. Il définit des bornes pour les paramètres de seuil et utilise la fonction `probnorm` pour construire manuellement la fonction de log-vraisemblance.
Analyse des données

Type : CREATION_INTERNE


Les données 'inhaler' sont créées via un step DATA avec DATALINES. La syntaxe originale suggère l'utilisation de '@@' pour lire plusieurs observations par ligne.

1 Bloc de code
DATA STEP Data
Explication :
Création du jeu de données 'inhaler'. L'instruction INPUT utilise le modificateur '@@' pour lire les données en continu (plusieurs observations par ligne physique). Les variables 'gt' (interaction) et 'sub' (identifiant sujet) sont calculées.
Copié !
1DATA inhaler;
2 INPUT clarity group time freq @@;
3 gt = group*time;
4 sub = floor((_n_+1)/2);
5 DATALINES;
61 0 0 59 1 0 1 59 1 0 0 35 2 0 1 35 1 0 0 3 3 0 1 3 1 0 0 2
74 0 1 2 2 0 0 11 1 0 1 11 2 0 0 27 2 0 1 27 2 0 0 2 3 0 1 2
82 0 0 1 4 0 1 1 4 0 0 1 1 0 1 1 4 0 0 1 2 0 1 1 1 1 0 63
91 1 1 63 1 1 0 13 2 1 1 13 2 1 0 40 1 1 1 40 2 1 0 15 2 1 1 15
103 1 0 7 1 1 1 7 3 1 0 2 2 1 1 2 3 1 0 1 3 1 1 1 4 1 0 2
111 1 1 2 4 1 0 1 3 1 1 1
12;
2 Bloc de code
PROC NLMIXED
Explication :
Estimation du modèle mixte non linéaire. La distribution 'general' est utilisée pour spécifier une log-vraisemblance personnalisée ('ll') basée sur la fonction de répartition normale cumulative (probnorm). Le modèle inclut un effet aléatoire 'u' distribué normalement au niveau du sujet 'sub'. 'REPLICATE' prend en compte la variable de fréquence.
Copié !
1PROC NLMIXED DATA=inhaler corr ecorr;
2 parms b0=0 b1=0 b2=0 b3=0 sd=1 i1=1 i2=1;
3 bounds i1 > 0, i2 > 0;
4 eta = b0 + b1*group + b2*time + b3*gt + u;
5 IF (clarity=1) THEN p = probnorm(-eta);
6 ELSE IF (clarity=2) THEN
7 p = probnorm(i1-eta) - probnorm(-eta);
8 ELSE IF (clarity=3) THEN
9 p = probnorm(i1+i2-eta) - probnorm(i1-eta);
10 ELSE p = 1 - probnorm(i1+i2-eta);
11 IF (p > 1e-8) THEN ll = log(p);
12 ELSE ll = -1e20;
13 model clarity ~ general(ll);
14 random u ~ normal(0,sd*sd) subject=sub;
15 replicate freq;
16 estimate 'thresh2' i1;
17 estimate 'thresh3' i1 + i2;
18 estimate 'icc' sd*sd/(1+sd*sd);
19RUN;
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


Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« Ce modèle est particulièrement robuste pour les petits échantillons ou les données présentant une forte corrélation interne. L'utilisation du lien Probit (plutôt que Logit) facilite souvent l'interprétation en termes de distribution normale sous-jacente, ce qui est très apprécié dans les publications médicales et pharmacologiques. »