Publié le :
Statistique CREATION_INTERNE

Régression Normale avec Censure par Intervalle

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le script analyse un jeu de données simulant des temps d'événements potentiellement censurés par intervalle (tl et tr). Il présente deux approches pour modéliser la censure par intervalle avec PROC MCMC : une approche manuelle définissant une fonction de vraisemblance personnalisée (llike) basée sur les fonctions logpdf, logsdf et logcdf, et une approche plus concise utilisant l'instruction MODEL avec les options CLOWER et CUPPER pour spécifier directement les limites de l'intervalle de censure. Les deux approches estiment les mêmes paramètres mu et sigma.
Analyse des données

Type : CREATION_INTERNE


Le jeu de données 'cosmetic' est créé en interne via une instruction DATALINES. Il contient des variables 'tl' (temps d'événement inférieur) et 'tr' (temps d'événement supérieur) qui définissent les intervalles de censure. Un point ('.') indique une valeur manquante pour la censure à gauche ou à droite. La variable 't' est initialisée à manquante.

1 Bloc de code
DATA STEP Data
Explication :
Ce bloc DATA crée le jeu de données 'cosmetic' à partir des lignes de données fournies (DATALINES). Les variables 'tl' (temps inférieur) et 'tr' (temps supérieur) sont lues. La variable 't' est initialisée à manquante. Les labels sont définis pour 'tl'. Il est à noter que la partie '@code_sas_json/8_SAS_Intro_ReadFile_MultiCol_@@.json' de l'instruction INPUT est syntaxiquement incorrecte dans ce contexte et ne participe pas à la lecture des données, qui proviennent exclusivement des DATALINES.
Copié !
1title 'Normal Regression with Interval Censoring';
2DATA cosmetic;
3 t = .;
4 label tl = 'Time to Event (Months)';
5 INPUT tl tr @code_sas_json/8_SAS_Intro_ReadFile_MultiCol_@@.json;
6 DATALINES;
745 . 6 10 . 7 46 . 46 . 7 16 17 . 7 14
837 44 . 8 4 11 15 . 11 15 22 . 46 . 46 .
925 37 46 . 26 40 46 . 27 34 36 44 46 . 36 48
1037 . 40 . 17 25 46 . 11 18 38 . 5 12 37 .
11 . 5 18 . 24 . 36 . 5 11 19 35 17 25 24 .
1232 . 33 . 19 26 37 . 34 . 36 .
13;
14 
2 Bloc de code
PROC MCMC
Explication :
Ce premier bloc PROC MCMC effectue une inférence bayésienne pour un modèle de régression normale avec censure par intervalle. Il utilise une fonction de vraisemblance personnalisée ('llike') pour gérer les différents types de censure (censure à gauche, à droite, par intervalle et observations non censurées). Les paramètres 'mu' et 'sigma' sont définis avec des priors non informatifs. L'option MISSING=AC gère les valeurs manquantes pour l'analyse des chaînes. L'instruction ODS SELECT PostSumInt sélectionne la table de sortie contenant les résumés et les intervalles de crédibilité des paramètres.
Copié !
1PROC MCMC DATA=cosmetic outpost=postout seed=1 nmc=20000 missing=AC;
2 ods select PostSumInt;
3 parms mu 60 sigma 50;
4 
5 prior mu ~ normal(0, sd=1000);
6 prior sigma ~ gamma(shape=0.001,iscale=0.001);
7 
8 IF (tl^=. and tr^=. and tl=tr) THEN
9 llike = logpdf('normal',tr,mu,sigma);
10 ELSE IF (tl^=. and tr=.) THEN
11 llike = logsdf('normal',tl,mu,sigma);
12 ELSE IF (tl=. and tr^=.) THEN
13 llike = logcdf('normal',tr,mu,sigma);
14 ELSE
15 llike = log(sdf('normal',tl,mu,sigma) -
16 sdf('normal',tr,mu,sigma));
17 
18 model general(llike);
19RUN;
3 Bloc de code
PROC MCMC
Explication :
Ce deuxième bloc PROC MCMC effectue la même inférence bayésienne mais de manière plus simplifiée en utilisant les options CLOWER et CUPPER de l'instruction MODEL. Ces options permettent de spécifier directement les limites inférieure et supérieure de l'intervalle de censure pour la variable 't', simplifiant ainsi l'implémentation de la vraisemblance par rapport à l'approche manuelle du bloc précédent. L'option MISSING=ACMODELY est utilisée pour les valeurs manquantes dans le modèle. ODS SELECT NONE supprime toutes les sorties de cette procédure.
Copié !
1PROC MCMC DATA=cosmetic outpost=postout seed=117207154
2 nmc=20000 missing=ACMODELY;
3 ods select none;
4 parms mu 60 sigma 50;
5 
6 prior mu ~ normal(0, sd=1000);
7 prior sigma ~ gamma(shape=0.001,iscale=0.001);
8 
9 model t ~ normal(mu, sd=sigma, clower=tl, cupper=tr);
10RUN;
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