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é !
/* Définition du nombre de variables explicatives */
%let p=10;
data artificial;
drop i;
array x{&p};
/* Génération des données d'entraînement */
do i=1 to 400;
do j=1 to &p;
x{j} = ranuni(1);
end;
yTrain = 40*exp(8*((x1-0.5)**2+(x2-0.5)**2))/
(exp(8*((x1-0.2)**2+(x2-0.7)**2))+
exp(8*((x1-0.7)**2+(x2-0.2)**2)))+rannor(1);
output;
end;
/* Génération de la grille pour la surface théorique */
yTrain = .;
do x1=0 to 1 by 0.01;
do x2 = 0 to 1 by 0.01;
y = 40*exp(8*((x1-0.5)**2+(x2-0.5)**2))/
(exp(8*((x1-0.2)**2+(x2-0.7)**2))+
exp(8*((x1-0.7)**2+(x2-0.2)**2)));
output;
end;
end;
run;
1
/* Définition du nombre de variables explicatives */
2
%let p=10;
3
4
DATA 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 1BY0.01;
22
DO x2 = 0 to 1BY0.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;
29
RUN;
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é !
proc quantselect data=artificial algorithm=smooth;
/* Définition des effets de spline pour chaque variable */
%do i=1 %to &p;
effect sp&i = spline(x&i);
%end;
/* Modèle avec interactions d'ordre 2 */
model yTrain =
sp1 %do i=2 %to &p; |sp&i %end; @2/details=all;
/* Sortie des prédictions */
output out=Out p=pred;
run;
1
PROC QUANTSELECTDATA=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;
13
RUN;
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é !
ods graphics on;
data pred;
set out;
where yTrain=.;
run;
1
ods graphics on;
2
DATA pred;
3
SET out;
4
where yTrain=.;
5
RUN;
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').
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é !
proc sgrender data=pred template=surfaces;
run;
1
PROC SGRENDERDATA=pred template=surfaces;
2
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.