Publié le :
Statistique CREATION_INTERNE

Exemple 4 pour PROC TPSPLINE : Simulation et option D=

En attente de validation
Le script commence par générer des données simulées via une étape DATA (fonction sinusoïdale bruitée). Il ajuste ensuite deux modèles de 'Thin-Plate Spline' (spline de plaque mince) : l'un avec les paramètres standards et l'autre avec l'option 'D=' (qui réduit la complexité de calcul pour les grands jeux de données). Les résultats des deux ajustements sont fusionnés puis comparés graphiquement à l'aide de la procédure SGPLOT pour visualiser les différences de prédictions et d'intervalles de confiance.
Analyse des données

Type : CREATION_INTERNE


Les données sont générées dans l'étape DATA 'large' à l'aide d'une boucle et de la fonction 'rannor' pour le bruit.

1 Bloc de code
DATA STEP Data
Explication :
Création du jeu de données 'large' contenant une variable explicative 'x' et une variable réponse 'y' générée par une fonction sinus avec un bruit aléatoire normal.
Copié !
1DATA large;
2 DO x=-5 to 5 BY 0.02;
3 y=5*sin(3*x)+1*rannor(57391);
4 OUTPUT;
5 END;
6RUN;
2 Bloc de code
PROC TPSPLINE
Explication :
Ajustement d'un premier modèle de spline (TPSPLINE) sur les données complètes. Les valeurs prédites et les limites de confiance sont stockées dans la table de sortie 'fit1'.
Copié !
1PROC TPSPLINE DATA=large;
2 model y =(x) /lognlambda=(-5 to -1 BY 0.2) alpha=0.01;
3 OUTPUT out=fit1 pred lclm uclm;
4RUN;
3 Bloc de code
PROC TPSPLINE
Explication :
Ajustement d'un second modèle utilisant l'option 'd=0.05'. Cette option permet une approximation plus rapide du modèle de spline, utile pour les grands volumes de données. Les résultats sont stockés dans 'fit2'.
Copié !
1PROC TPSPLINE DATA=large;
2 model y =(x) /lognlambda=(-5 to -1 BY 0.2) d=0.05 alpha=0.01;
3 OUTPUT out=fit2 pred lclm uclm;
4RUN;
4 Bloc de code
DATA STEP Data
Explication :
Renommage des variables générées par le second modèle (préfixes P_y, LCLM_y, UCLM_y) pour les distinguer de celles du premier modèle lors de la fusion.
Copié !
1DATA fit2;
2 SET fit2;
3 P1_y = P_y;
4 LCLM1_y = LCLM_y;
5 UCLM1_y = UCLM_y;
6 drop P_y LCLM_y UCLM_y;
7RUN;
5 Bloc de code
PROC SORT
Explication :
Tri des deux tables de résultats 'fit1' et 'fit2' par les variables 'x' et 'y' pour préparer la fusion.
Copié !
1PROC SORT DATA=fit1;
2 BY x y;
3RUN;
4 
5PROC SORT DATA=fit2;
6 BY x y;
7RUN;
6 Bloc de code
DATA STEP Data
Explication :
Fusion des résultats des deux modèles dans une table unique 'comp', avec ajout de labels pour les légendes du graphique.
Copié !
1DATA comp;
2 MERGE fit1 fit2;
3 BY x y;
4 label p1_y ="Yhat1" p_y="Yhat0"
5 lclm_y ="Lower CL"
6 uclm_y ="Upper CL";
7RUN;
7 Bloc de code
PROC SGPLOT
Explication :
Création d'un graphique comparatif affichant l'intervalle de confiance du premier modèle (bande) et les courbes de prédiction des deux modèles (séries), permettant de visualiser l'impact de l'option 'D=' sur l'ajustement.
Copié !
1PROC SGPLOT DATA=comp;
2 title "Comparison of Two Estimates";
3 title2 "with and without the D= Option";
4 
5 yaxis label="Predicted y Values";
6 xaxis label="x";
7 
8 band x=x lower=lclm_y upper=uclm_y /name="range"
9 legendlabel="99% CI of Predicted y without D=";
10 series x=x y=P_y/ name="P_y" legendlabel="Predicted y without D="
11 lineattrs=graphfit(thickness=1px pattern=shortdash);
12 series x=x y=P1_y/ name="P1_y" legendlabel="Predicted y with D="
13 lineattrs=graphfit(thickness=1px color=red);
14 discretelegend "range" "P_y" "P1_y";
15RUN;
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.
Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« L'option D= est particulièrement recommandée lorsque vous dépassez quelques milliers d'observations. Dans ce script, observez la superposition des lignes P_y (standard) et P1_y (optimisée) : si elles sont presque confondues, cela prouve que votre approximation de rang réduit est statistiquement valide pour votre jeu de données. »