Analyse de régression non linéaire avec modèle plateau gauche et visualisation

Ce code est également disponible en : Deutsch English Español
Niveau de difficulté
Débutant
Publié le :
Le script commence par la création d'un dataset nommé 'lizard' à partir de données brutes intégrées (datalines) pour les variables 'length' (longueur) et 'mass' (masse). Une procédure PROC NLIN est ensuite utilisée pour ajuster un modèle de régression non linéaire de type 'plateau gauche'. Ce modèle stipule que la masse reste constante (paramètre b0) jusqu'à un certain seuil de longueur (paramètre tau), après quoi elle augmente linéairement avec la longueur (b0 + b1*(length-tau)). Les paramètres du modèle (b0, b1, tau) sont initialisés pour faciliter la convergence. La procédure génère également un nouveau dataset 'a' contenant les données originales et les valeurs de masse prédites par le modèle ('p'). Enfin, le script utilise la procédure PROC GPLOT (de SAS©/GRAPH) pour créer deux visualisations. La première affiche les données observées de masse en fonction de la longueur. La seconde superpose les données observées et la courbe du modèle ajusté (valeurs prédites 'p' vs 'length'), permettant une évaluation visuelle de l'adéquation du modèle aux données. Les options graphiques globales (GOPTIONS) et les attributs spécifiques aux symboles et aux axes sont configurés pour améliorer la lisibilité des graphiques.
Analyse des données

Type : CREATION_INTERNE


Les données ('length' et 'mass') utilisées pour l'analyse sont créées directement au sein du script via une instruction DATA STEP avec 'datalines', ce qui signifie qu'elles sont intégrées au code source et non issues d'une source externe.

1 Bloc de code
DATA STEP Data
Explication :
Ce bloc DATA STEP crée un nouveau dataset temporaire nommé 'lizard'. Il définit deux variables numériques, 'length' et 'mass', et les peuple avec les données brutes fournies directement dans le script via l'instruction DATALINES. Ce dataset est la source des données pour les analyses statistiques et les visualisations ultérieures.
Copié !
1 DATA lizard;
2 INPUT LENGTH mass ;
3 DATALINES;
4 22.87 0.294 23.45 0.302 23.49 0.265 23.65 0.297
5 23.76 0.294 24.36 0.338 24.44 0.295 24.44 0.347
6 24.51 0.338 24.61 0.333 24.91 0.358 24.95 0.350
7 24.95 0.331 25.00 0.327 25.16 0.345 25.26 0.334
8 25.26 0.323 25.36 0.353 25.47 0.354 25.52 0.350
9 25.61 0.361 25.76 0.362 25.82 0.327 25.86 0.354
10 25.91 0.309 25.96 0.361 25.96 0.366 26.15 0.344
11 26.20 0.358 26.27 0.348 27.12 0.371 27.28 0.421
12;
2 Bloc de code
PROC NLIN
Explication :
Cette procédure PROC NLIN ajuste un modèle de régression non linéaire aux données du dataset 'lizard'. Le modèle spécifié est un 'modèle plateau gauche', où la variable dépendante 'mass' est constante ('b0') jusqu'à ce que 'length' atteigne 'tau', puis elle suit une relation linéaire. Les paramètres 'b0', 'b1' et 'tau' sont initialisés pour la procédure. L'option 'output out=a p=p' crée un nouveau dataset 'a' qui inclut les variables originales de 'lizard' ainsi que la variable 'p', représentant les valeurs de masse prédites par le modèle.
Copié !
1 PROC NLIN;
2 parameters b0 = 0.2904 b1 = 0.0189 tau = 23.44;
3 IF LENGTH <= tau THEN DO;
4 model mass = b0;
5 END;
6 ELSE DO;
7 model mass = b0 + b1*(LENGTH-tau);
8 END;
9 OUTPUT out=a p=p;
10 RUN;
3 Bloc de code
PROC GPLOT
Explication :
Ce bloc initialise les options graphiques globales (`GOPTIONS`) pour définir l'apparence des graphiques (couleurs, polices, tailles de texte). Il configure également un titre principal (`title1`), des définitions de symboles (`symbol1`, `symbol2`) et des spécifications d'axes (`axis1`, `axis2`) incluant les étiquettes et les plages. La procédure `PROC GPLOT` est ensuite utilisée pour générer un nuage de points simple ('mass' vs 'length') à partir du dataset 'a', en utilisant les définitions d'axes précédemment établies.
Copié !
1 goptions reset=global gunit=pct border cback=white
2 colors=(black blue green red)
3 ftitle=swissb ftext=swiss htitle=4 htext=4;
4title1 'Mass vs Length with the fit';
5symbol1 color=red
6 interpol=none
7 value=dot
8 height=3;
9symbol2 color=red
10 interpol=join;
11 axis1 label=('Length (mm)')
12 order=(22 to 28 BY 1)
13 width=3;
14 axis2 label=('Mass (g)')
15 order=(0.25 to .45 BY 0.05)
16 width=3;
17PROC GPLOT DATA=a;
18 plot mass*LENGTH/ haxis=axis1 vaxis=axis2;
19 RUN;
4 Bloc de code
PROC GPLOT
Explication :
Ce dernier bloc utilise `PROC GPLOT` pour créer un graphique superposé. Il trace les données observées ('mass' vs 'length') et les valeurs prédites par le modèle ('p' vs 'length') sur le même graphique à partir du dataset 'a'. L'option `overlay` permet de visualiser les deux séries sur le même système de coordonnées, facilitant la comparaison entre les observations réelles et l'ajustement du modèle. Les configurations d'axes définies précédemment sont réutilisées.
Copié !
1PROC GPLOT DATA=a;
2 plot mass*LENGTH p*LENGTH/ overlay haxis=axis1 vaxis=axis2;
3 RUN;
4QUIT;
5 RUN;
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.