Publié le :
Statistique CREATION_INTERNE

Modèle segmenté quadratique avec plateau (PROC NLIN)

En attente de validation
Le script présente plusieurs manières d'implémenter un modèle quadratique avec un plateau. Dans ce modèle, la variable dépendante 'y' augmente selon une fonction quadratique de 'x' jusqu'à un certain point (x0), après quoi elle reste constante à une valeur plateau. Différentes syntaxes sont montrées : une avec une logique conditionnelle IF/THEN explicite, une autre utilisant la multiplication booléenne pour compacter la logique, et une dernière avec une reparamétrisation du modèle. Finalement, PROC SGPLOT est utilisé pour visualiser les données observées, la courbe prédite, le point de jonction et le plateau.
Analyse des données

Type : CREATION_INTERNE


Les données sont créées directement dans le script via une étape DATA avec une instruction DATALINES. Aucune source de données externe n'est nécessaire.

1 Bloc de code
DATA STEP Data
Explication :
Création du jeu de données 'a' contenant les variables 'y' et 'x'. L'option '@@' dans l'instruction INPUT permet de lire plusieurs observations à partir d'une seule ligne de données.
Copié !
1DATA a;
2 INPUT y x @@;
3 DATALINES;
4.46 1 .47 2 .57 3 .61 4 .62 5 .68 6 .69 7
5.78 8 .70 9 .74 10 .77 11 .78 12 .74 13 .80 13
6.80 15 .78 16
7;
2 Bloc de code
PROC NLIN
Explication :
Première passe avec PROC NLIN. Le modèle est défini à l'aide d'une instruction conditionnelle IF-THEN pour spécifier la partie quadratique avant le point de jonction 'x0' et le plateau après. Le point de jonction et la valeur du plateau sont calculés et affichés dans le log. Les valeurs prédites sont sauvegardées dans un nouveau jeu de données 'b'.
Copié !
1title 'Quadratic Model with Plateau';
2PROC NLIN DATA=a;
3 parms alpha=.45 beta=.05 gamma=-.0025;
4 
5 x0 = -.5*beta / gamma;
6 
7 IF (x < x0) THEN
8 mean = alpha + beta*x + gamma*x*x;
9 ELSE mean = alpha + beta*x0 + gamma*x0*x0;
10 model y = mean;
11 
12 IF _obs_=1 and _iter_ =. THEN DO;
13 plateau =alpha + beta*x0 + gamma*x0*x0;
14 put / x0= plateau= ;
15 END;
16 OUTPUT out=b predicted=yp;
17RUN;
3 Bloc de code
PROC NLIN
Explication :
Une version syntaxiquement plus directe du modèle précédent, où l'instruction MODEL est directement intégrée dans la logique IF-THEN. Le résultat de l'estimation est identique.
Copié !
1PROC NLIN DATA=a;
2 parms alpha=.45 beta=.05 gamma=-.0025;
3 x0 = -.5*beta / gamma;
4 IF (x < x0) THEN
5 model y = alpha+beta*x+gamma*x*x;
6 ELSE model y = alpha+beta*x0+gamma*x0*x0;
7RUN;
4 Bloc de code
PROC NLIN
Explication :
Troisième formulation du même modèle, utilisant une technique de multiplication booléenne. L'expression '(x < x0)' est évaluée à 1 si vraie et 0 si fausse. Cela permet de définir le modèle en une seule ligne de code, sans branchement IF-THEN explicite.
Copié !
1PROC NLIN DATA=a;
2 parms alpha=.45 beta=.05 gamma=-.0025;
3 x0 = -.5*beta / gamma;
4 model y = (x
5 (x>=x0)*(alpha+beta*x0+gamma*x0*x0);
6RUN;
5 Bloc de code
PROC SGPLOT
Explication :
Utilisation de PROC SGPLOT pour visualiser les résultats. Ce bloc crée un graphique superposant le nuage de points des données originales (scatter) et la courbe du modèle prédit (series). Des lignes de référence sont ajoutées pour marquer le point de jonction sur l'axe des X et le niveau du plateau sur l'axe des Y, en utilisant les valeurs estimées par PROC NLIN.
Copié !
1PROC SGPLOT DATA=b noautolegend;
2 yaxis label='Observed or Predicted';
3 refline 0.777 / axis=y label="Plateau" labelpos=min;
4 refline 12.747 / axis=x label="Join point" labelpos=min;
5 scatter y=y x=x;
6 series y=yp x=x;
7RUN;
6 Bloc de code
PROC NLIN
Explication :
Une approche alternative utilisant une reparamétrisation du modèle. Au lieu d'estimer 'gamma', le modèle est paramétré directement en fonction du point de jonction 'x0'. Cela peut parfois améliorer la convergence de l'algorithme d'estimation.
Copié !
1PROC NLIN DATA=a;
2 parms alpha=.45 beta=.05 x0=10;
3 IF (xTHEN
4 mean = alpha + beta*x *(1-x/(2*x0));
5 ELSE mean = alpha + beta*x0/2;
6 model y = mean;
7RUN;
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 : S A S S A M P L E L I B R A R Y