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é !
data a (drop=i);
do i=1 to 1000;
x1=rannor(1234);
x2=rannor(1234);
e=rannor(1234);
if i > 900 then y=100 + e;
else y=10 + 5*x1 + 3*x2 + .5 * e;
output;
end;
run;
1
DATA a (drop=i);
2
DO i=1 to 1000;
3
x1=rannor(1234);
4
x2=rannor(1234);
5
e=rannor(1234);
6
IF i > 900THEN y=100 + e;
7
ELSE y=10 + 5*x1 + 3*x2 + .5 * e;
8
OUTPUT;
9
END;
10
RUN;
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é !
proc reg data=a;
model y = x1 x2;
run;
1
PROC REGDATA=a;
2
model y = x1 x2;
3
RUN;
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é !
proc robustreg data=a method=m;
model y = x1 x2;
run;
proc robustreg data=a method=mm seed=100;
model y = x1 x2;
run;
proc robustreg data=a method=s seed=100;
model y = x1 x2;
run;
proc robustreg data=a method=lts seed=100;
model y = x1 x2;
run;
1
PROC ROBUSTREGDATA=a method=m;
2
model y = x1 x2;
3
RUN;
4
5
PROC ROBUSTREGDATA=a method=mm seed=100;
6
model y = x1 x2;
7
RUN;
8
9
PROC ROBUSTREGDATA=a method=s seed=100;
10
model y = x1 x2;
11
RUN;
12
13
PROC ROBUSTREGDATA=a method=lts seed=100;
14
model y = x1 x2;
15
RUN;
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é !
data b (drop=i);
do i=1 to 1000;
x1=rannor(1234);
x2=rannor(1234);
e=rannor(1234);
if i > 600 then y=100 + e;
else y=10 + 5*x1 + 3*x2 + .5 * e;
output;
end;
run;
1
DATA b (drop=i);
2
DO i=1 to 1000;
3
x1=rannor(1234);
4
x2=rannor(1234);
5
e=rannor(1234);
6
IF i > 600THEN y=100 + e;
7
ELSE y=10 + 5*x1 + 3*x2 + .5 * e;
8
OUTPUT;
9
END;
10
RUN;
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é !
proc robustreg data=b method=m;
model y = x1 x2;
run;
proc robustreg data=b method=mm;
model y = x1 x2;
run;
proc robustreg data=b method=m(wf=bisquare(c=2));
model y = x1 x2;
run;
proc robustreg data=b method=mm(inith=502 k0=1.8);
model y = x1 x2;
run;
1
PROC ROBUSTREGDATA=b method=m;
2
model y = x1 x2;
3
RUN;
4
5
PROC ROBUSTREGDATA=b method=mm;
6
model y = x1 x2;
7
RUN;
8
9
PROC ROBUSTREGDATA=b method=m(wf=bisquare(c=2));
10
model y = x1 x2;
11
RUN;
12
13
PROC ROBUSTREGDATA=b method=mm(inith=502 k0=1.8);
14
model y = x1 x2;
15
RUN;
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é !
data c (drop=i);
do i=1 to 1000;
x1=rannor(1234);
x2=rannor(1234);
e=rannor(1234);
if i > 600 then y=100 + e;
else y=10 + 5*x1 + 3*x2 + .5 * e;
if i < 11 then x1=200 * rannor(1234);
if i < 11 then x2=200 * rannor(1234);
if i < 11 then y= 100*e;
output;
end;
run;
1
DATA c (drop=i);
2
DO i=1 to 1000;
3
x1=rannor(1234);
4
x2=rannor(1234);
5
e=rannor(1234);
6
IF i > 600THEN y=100 + e;
7
ELSE y=10 + 5*x1 + 3*x2 + .5 * e;
8
IF i < 11THEN x1=200 * rannor(1234);
9
IF i < 11THEN x2=200 * rannor(1234);
10
IF i < 11THEN y= 100*e;
11
OUTPUT;
12
END;
13
RUN;
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é !
proc robustreg data=c method=mm(inith=502 k0=1.8) seed=100;
model y = x1 x2;
run;
proc robustreg data=c method=s(k0=1.8) seed=100;
model y = x1 x2;
run;
proc robustreg data=c method=lts(h=502) seed=100;
model y = x1 x2;
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.
« 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. »
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.