Publié le :
Statistique CREATION_INTERNE

Ajustement de surface avec PROC QUANTSELECT

En attente de validation
Ce script illustre une analyse de régression quantile. Il commence par créer un jeu de données artificiel avec une variable dépendante 'yTrain' et plusieurs variables explicatives 'x'. Les données incluent des observations pour l'entraînement du modèle et une grille de points pour la visualisation. Ensuite, la procédure QUANTSELECT est utilisée pour ajuster un modèle de régression quantile non-paramétrique en utilisant des effets de spline pour toutes les variables. Finalement, le script génère et affiche un graphique qui compare la surface du modèle réel à la surface du modèle ajusté, à l'aide de PROC TEMPLATE et PROC SGRENDER.
Analyse des données

Type : CREATION_INTERNE


Le jeu de données 'artificial' est entièrement généré dans la première étape DATA. Il utilise les fonctions `ranuni` et `rannor` pour créer des données d'entraînement et une grille de points pour la prédiction et la visualisation.

1 Bloc de code
DATA STEP Data
Explication :
Ce bloc crée le jeu de données 'artificial'. Une première boucle génère 400 observations d'entraînement avec une variable réponse 'yTrain' et 10 variables explicatives ('x1' à 'x10') générées aléatoirement. La réponse est calculée via une formule complexe avec un bruit aléatoire ajouté (fonction rannor). Une seconde partie génère une grille de valeurs pour 'x1' et 'x2' afin de calculer la surface 'y' du modèle théorique (sans bruit). Ces points serviront à la visualisation.
Copié !
1/* Définition du nombre de variables explicatives */
2%let p=10;
3 
4DATA artificial;
5 drop i;
6 array x{&p};
7
8 /* Génération des données d'entraînement */
9 DO i=1 to 400;
10 DO j=1 to &p;
11 x{j} = ranuni(1);
12 END;
13 yTrain = 40*exp(8*((x1-0.5)**2+(x2-0.5)**2))/
14 (exp(8*((x1-0.2)**2+(x2-0.7)**2))+
15 exp(8*((x1-0.7)**2+(x2-0.2)**2)))+rannor(1);
16 OUTPUT;
17 END;
18 
19 /* Génération de la grille pour la surface théorique */
20 yTrain = .;
21 DO x1=0 to 1 BY 0.01;
22 DO x2 = 0 to 1 BY 0.01;
23 y = 40*exp(8*((x1-0.5)**2+(x2-0.5)**2))/
24 (exp(8*((x1-0.2)**2+(x2-0.7)**2))+
25 exp(8*((x1-0.7)**2+(x2-0.2)**2)));
26 OUTPUT;
27 END;
28 END;
29RUN;
2 Bloc de code
PROC QUANTSELECT
Explication :
Ce bloc exécute la procédure de régression quantile `QUANTSELECT` sur les données d'entraînement. L'algorithme 'smooth' est utilisé. Des effets de spline non-paramétriques sont créés pour chaque variable 'x'. Le modèle inclut les effets principaux et toutes les interactions d'ordre 2 (`@2`). Les résultats de prédiction sont stockés dans la table 'Out'.
Copié !
1PROC QUANTSELECT DATA=artificial algorithm=smooth;
2 /* Définition des effets de spline pour chaque variable */
3 %DO i=1 %to &p;
4 effect sp&i = spline(x&i);
5 %END;
6
7 /* Modèle avec interactions d'ordre 2 */
8 model yTrain =
9 sp1 %DO i=2 %to &p; |sp&i %END; @2/details=all;
10
11 /* Sortie des prédictions */
12 OUTPUT out=Out p=pred;
13RUN;
3 Bloc de code
DATA STEP Data
Explication :
Ce bloc active les graphiques ODS et crée la table 'pred' en filtrant la sortie de PROC QUANTSELECT ('Out'). Le filtre `where yTrain=.` sélectionne uniquement les observations de la grille de visualisation, pour lesquelles la variable réponse originale était manquante.
Copié !
1ods graphics on;
2DATA pred;
3 SET out;
4 where yTrain=.;
5RUN;
4 Bloc de code
PROC TEMPLATE
Explication :
Ce bloc définit un modèle de graphique statistique nommé 'surfaces' avec `PROC TEMPLATE`. Le modèle organise deux graphiques de contour côte à côte. Le premier affiche la surface du modèle réel (variable 'y'), et le second affiche la surface du modèle ajusté par la régression quantile (variable 'pred').
Copié !
1%let off0 = offsetmin=0 offsetmax=0;
2%let off0 = xaxisopts=(&off0) yaxisopts=(&off0);
3%let eopt = location=outside valign=top textattrs=graphlabeltext;
4 
5PROC TEMPLATE;
6 define statgraph surfaces;
7 begingraph / designheight=360px;
8 layout lattice/columns=2;
9 layout overlay / &off0;
10 entry "True Model" / &eopt;
11 contourplotparm z=y y=x2 x=x1;
12 endlayout;
13 layout overlay / &off0;
14 entry "Fitted Model" / &eopt;
15 contourplotparm z=pred y=x2 x=x1;
16 endlayout;
17 endlayout;
18 endgraph;
19 END;
20RUN;
5 Bloc de code
PROC SGRENDER
Explication :
Ce bloc utilise `PROC SGRENDER` pour générer le graphique défini par le modèle 'surfaces', en appliquant ce modèle aux données de la table 'pred'. Le graphique final compare visuellement la performance de l'ajustement du modèle.
Copié !
1PROC SGRENDER DATA=pred template=surfaces;
2RUN;
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