Publié le :
Statistique CREATION_INTERNE

Régression non linéaire pour pronostic patient

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le script analyse les données de 15 patients pour prédire un indice de pronostic de récupération (prog) en fonction du nombre de jours d'hospitalisation (days). D'abord, il utilise une étape DATA pour créer la table 'patient' à partir de données intégrées (cards). Ensuite, il ajuste un modèle de régression non linéaire exponentiel `prog = a0*exp(a1*days)` avec PROC NLIN. Il génère des prédictions, des résidus et des intervalles de confiance. Des graphiques (PROC GPLOT) sont créés pour visualiser les données brutes et l'ajustement du modèle. En parallèle, un second modèle de régression linéaire est testé sur le logarithme de la variable de réponse (`ln(prog)`) avec PROC REG pour comparer les approches.
Analyse des données

Type : CREATION_INTERNE


Les données sont créées directement dans le script via une étape DATA et l'instruction 'cards', formant la table 'patient' avec 15 observations et 3 variables (prog, days, lnprog).

1 Bloc de code
DATA STEP Data
Explication :
Ce bloc crée la table 'patient' en mémoire. Il lit deux variables, 'prog' (indice de pronostic) et 'days' (jours d'hospitalisation), à partir des données fournies via l'instruction 'cards'. Il calcule également 'lnprog', le logarithme népérien de 'prog'.
Copié !
1DATA patient;
2INPUT prog days;
3lnprog=log(prog);
4CARDS;
5 54 2
6 50 5
7 45 7
8 37 10
9 35 14
10 25 19
11 20 26
12 16 31
13 18 34
14 13 38
15 8 45
16 11 52
17 8 53
18 4 60
19 6 65
20 ;
21RUN;
2 Bloc de code
PROC NLIN
Explication :
Cette procédure ajuste un modèle de régression non linéaire. Le modèle est de forme exponentielle : `prog = a0*exp(a1*days)`. Des valeurs initiales pour les paramètres `a0` et `a1` sont fournies. La procédure calcule les estimations des paramètres et génère une table de sortie 'a' contenant les valeurs prédites, les résidus et les intervalles de confiance et de prédiction à 90% (alpha=0.1).
Copié !
1PROC NLIN alpha=0.1;
2parameters a0=10
3 a1=-1;
4 model prog = a0*exp(a1*days);
5 OUTPUT out=a p=p r=resid lcl=lci ucl=uci lclm=l90 uclm=u90;
6RUN;
3 Bloc de code
PROC PRINT
Explication :
Imprime le contenu de la table 'a' générée par PROC NLIN, qui contient les résultats de la modélisation (valeurs observées, prédites, résidus, etc.).
Copié !
1PROC PRINT DATA=a;
2RUN;
4 Bloc de code
PROC PLOT
Explication :
La procédure PROC PLOT est utilisée pour créer un graphique des résidus en fonction des valeurs prédites, afin d'évaluer graphiquement la pertinence du modèle non linéaire.
Copié !
1PROC PLOT;
2plot resid*p;
3RUN;
5 Bloc de code
PROC GPLOT
Explication :
Ce bloc configure les options graphiques (goptions, title, symbol, axis) pour générer des graphiques. Le premier PROC GPLOT crée un nuage de points des données originales. Le second superpose la courbe du modèle ajusté sur le nuage de points pour visualiser l'ajustement.
Copié !
1goptions reset=global gunit=pct border cback=white
2 colors=(black blue green red)
3 ftitle=swissb ftext=swiss htitle=4 htext=4;
4title1 'Prognostic index versus Days';
5symbol1 color=red
6 interpol=none
7 value=dot
8 height=3;
9symbol2 color=red
10 interpol=join;
11 axis1 label=('Days')
12 order=(0 to 70 BY 10)
13 width=3;
14 axis2 label=('Pyrene')
15 order=(0 to 60 BY 10)
16 width=3;
17 
18PROC GPLOT DATA=a;
19 plot prog*days/ haxis=axis1 vaxis=axis2;
20 RUN;
21 
22PROC GPLOT DATA=a;
23 plot prog*days p*days/ overlay haxis=axis1 vaxis=axis2;
24 RUN;
25QUIT;
6 Bloc de code
PROC REG
Explication :
À des fins de comparaison, cette procédure effectue une régression linéaire simple sur la variable 'lnprog' (logarithme de l'indice de pronostic) en fonction de 'days'. Les résultats, incluant les valeurs prédites et les résidus, sont stockés dans la table 'b'.
Copié !
1PROC REG;
2model lnprog=days;
3 OUTPUT out=b p=pln r=residln;
4RUN;
7 Bloc de code
PROC PLOT
Explication :
Ce bloc utilise PROC PLOT pour afficher le graphique des résidus du modèle linéaire en fonction des valeurs prédites. Cela permet de vérifier l'hypothèse d'homoscédasticité (variance constante des résidus) pour le modèle log-linéaire.
Copié !
1PROC PLOT;
2plot residln*pln;
3RUN;
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 : Source des données : Textbook 'Applied Linear Statistical Model', Kutner et al. (5th), p.515. Nom du fichier d'origine : ch13-patient-nonlinear.sas


Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« Une attention particulière doit être portée au choix des paramètres initiaux (parameters a0=10 a1=-1). En régression non linéaire, un mauvais point de départ peut mener à une non-convergence ou à un minimum local. L'utilisation des résultats de la PROC REG (le logarithme de l'intercept et la pente) est d'ailleurs une excellente astuce pour fournir des valeurs initiales plus précises à la PROC NLIN. »