Publié le :
Statistique CREATION_INTERNE

Exemples de Régression Robuste avec PROC ROBUSTREG

Snippet validé
Ce script SAS© démontre la puissance de la régression robuste face à la régression linéaire classique (PROC REG) en présence de données aberrantes. Il commence par créer un premier jeu de données (`a`) avec des outliers verticaux, puis compare les résultats de PROC REG avec plusieurs méthodes de PROC ROBUSTREG (M, MM, S, LTS). Ensuite, il génère deux autres jeux de données (`b` et `c`) avec une plus grande proportion d'outliers et des points à fort effet de levier pour illustrer des options plus avancées et le comportement de la procédure dans des conditions extrêmes.
Analyse des données

Type : CREATION_INTERNE


Les trois tables de données (a, b, c) sont générées entièrement au sein du script. Elles utilisent une boucle et la fonction rannor pour créer des données simulées, incluant des outliers intentionnels pour tester les modèles de régression robuste.

1 Bloc de code
DATA STEP Data
Explication :
Création de la table 'a' avec 1000 observations. Les variables x1, x2 et e suivent une loi normale. Pour les 10% dernières observations (i > 900), la variable dépendante 'y' est modifiée pour introduire des outliers verticaux.
Copié !
1DATA a (drop=i);
2 DO i=1 to 1000;
3 x1=rannor(1234);
4 x2=rannor(1234);
5 e=rannor(1234);
6 IF i > 900 THEN y=100 + e;
7 ELSE y=10 + 5*x1 + 3*x2 + .5 * e;
8 OUTPUT;
9 END;
10RUN;
2 Bloc de code
PROC REG
Explication :
Application d'une régression linéaire classique (Moindres Carrés Ordinaires) sur la table 'a'. Ce modèle sert de référence pour observer l'impact des outliers.
Copié !
1PROC REG DATA=a;
2 model y = x1 x2;
3RUN;
3 Bloc de code
PROC ROBUSTREG
Explication :
Exécution de plusieurs régressions robustes sur la table 'a' en utilisant différentes méthodes d'estimation (M, MM, S, et LTS) pour comparer leur gestion des outliers.
Copié !
1PROC ROBUSTREG DATA=a method=m;
2 model y = x1 x2;
3RUN;
4 
5PROC ROBUSTREG DATA=a method=mm seed=100;
6 model y = x1 x2;
7RUN;
8 
9PROC ROBUSTREG DATA=a method=s seed=100;
10 model y = x1 x2;
11RUN;
12 
13PROC ROBUSTREG DATA=a method=lts seed=100;
14 model y = x1 x2;
15RUN;
4 Bloc de code
DATA STEP Data
Explication :
Création de la table 'b' avec une plus grande proportion d'outliers (40% des observations, pour i > 600) afin de tester la robustesse des modèles dans des conditions plus difficiles.
Copié !
1DATA b (drop=i);
2 DO i=1 to 1000;
3 x1=rannor(1234);
4 x2=rannor(1234);
5 e=rannor(1234);
6 IF i > 600 THEN y=100 + e;
7 ELSE y=10 + 5*x1 + 3*x2 + .5 * e;
8 OUTPUT;
9 END;
10RUN;
5 Bloc de code
PROC ROBUSTREG
Explication :
Application de régressions robustes sur la table 'b', en illustrant des options de personnalisation des méthodes, comme la spécification de la fonction de poids (wf=bisquare) pour la méthode M ou des paramètres d'initialisation (inith, k0) pour la méthode MM.
Copié !
1PROC ROBUSTREG DATA=b method=m;
2 model y = x1 x2;
3RUN;
4 
5PROC ROBUSTREG DATA=b method=mm;
6 model y = x1 x2;
7RUN;
8 
9PROC ROBUSTREG DATA=b method=m(wf=bisquare(c=2));
10 model y = x1 x2;
11RUN;
12 
13PROC ROBUSTREG DATA=b method=mm(inith=502 k0=1.8);
14 model y = x1 x2;
15RUN;
6 Bloc de code
DATA STEP Data
Explication :
Création de la table 'c' qui contient à la fois des outliers verticaux (pour i > 600) et des points à fort effet de levier (outliers sur les variables x1 et x2 pour les 10 premières observations).
Copié !
1DATA c (drop=i);
2 DO i=1 to 1000;
3 x1=rannor(1234);
4 x2=rannor(1234);
5 e=rannor(1234);
6 IF i > 600 THEN y=100 + e;
7 ELSE y=10 + 5*x1 + 3*x2 + .5 * e;
8 IF i < 11 THEN x1=200 * rannor(1234);
9 IF i < 11 THEN x2=200 * rannor(1234);
10 IF i < 11 THEN y= 100*e;
11 OUTPUT;
12 END;
13RUN;
7 Bloc de code
PROC ROBUSTREG
Explication :
Exécution de régressions robustes (MM, S, LTS) sur la table 'c' pour évaluer leur performance en présence simultanée d'outliers et de points à fort effet de levier. Des paramètres spécifiques sont ajustés pour chaque méthode.
Copié !
1PROC ROBUSTREG DATA=c method=mm(inith=502 k0=1.8) seed=100;
2 model y = x1 x2;
3RUN;
4 
5PROC ROBUSTREG DATA=c method=s(k0=1.8) seed=100;
6 model y = x1 x2;
7RUN;
8 
9PROC ROBUSTREG DATA=c method=lts(h=502) seed=100;
10 model y = x1 x2;
11RUN;
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 : SAS SAMPLE LIBRARY


Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« En présence de valeurs aberrantes, la régression linéaire classique (PROC REG) a tendance à "plonger" vers les données extrêmes, faussant totalement vos coefficients. La PROC ROBUSTREG est votre meilleure défense pour préserver la vérité statistique. »