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.
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é !
title 'Quadratic Model with Plateau';
proc nlin data=a;
parms alpha=.45 beta=.05 gamma=-.0025;
x0 = -.5*beta / gamma;
if (x < x0) then
mean = alpha + beta*x + gamma*x*x;
else mean = alpha + beta*x0 + gamma*x0*x0;
model y = mean;
if _obs_=1 and _iter_ =. then do;
plateau =alpha + beta*x0 + gamma*x0*x0;
put / x0= plateau= ;
end;
output out=b predicted=yp;
run;
1
title 'Quadratic Model with Plateau';
2
PROC NLINDATA=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_ =. THENDO;
13
plateau =alpha + beta*x0 + gamma*x0*x0;
14
put / x0= plateau= ;
15
END;
16
OUTPUT out=b predicted=yp;
17
RUN;
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é !
proc nlin data=a;
parms alpha=.45 beta=.05 gamma=-.0025;
x0 = -.5*beta / gamma;
if (x < x0) then
model y = alpha+beta*x+gamma*x*x;
else model y = alpha+beta*x0+gamma*x0*x0;
run;
1
PROC NLINDATA=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;
7
RUN;
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.
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.
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é !
proc nlin data=a;
parms alpha=.45 beta=.05 x0=10;
if (x<x0) then
mean = alpha + beta*x *(1-x/(2*x0));
else mean = alpha + beta*x0/2;
model y = mean;
run;
1
PROC NLINDATA=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;
7
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.
Informations de Copyright : S A S S A M P L E L I B R A R Y
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.