Publié le :

Exemple de régression linéaire avec PROC REG

En attente de validation
Ce script SAS© démontre l'utilisation de la procédure PROC REG pour modéliser le salaire (logSalary) des joueurs de baseball en fonction de diverses statistiques. Il explore les étapes d'une analyse de régression typique :
1. Examen initial des variables avec PROC CONTENTS.
2. Construction d'un modèle de régression de base.
3. Génération de graphiques de diagnostic pour identifier les valeurs influentes et les outliers (par exemple, RStudentByLeverage, CooksD).
4. Filtrage des données pour exclure un outlier ('Rose, Pete') et ajout de diagnostics supplémentaires (Residuals, DFFITS, DFBETAS).
5. Création d'un nouveau jeu de données 'baseball' en filtrant les observations et en introduisant des variables transformées (quadratiques) pour améliorer le modèle.
6. Exécution d'un modèle de régression enrichi avec les variables transformées et un ensemble complet de graphiques de diagnostic.
7. Génération de prédictions du modèle dans un nouveau jeu de données.
8. Appel d'une macro '%marginal' (non fournie) pour une analyse potentielle des effets marginaux.
Analyse des données

Type : MIXTE


Le script commence par utiliser le jeu de données intégré 'sashelp.baseball'. Ensuite, il crée un nouveau jeu de données nommé 'baseball' basé sur 'sashelp.baseball' en excluant un joueur spécifique ('Rose, Pete') et en ajoutant deux nouvelles variables transformées : 'YrMajor2' (année d'ancienneté au carré) et 'CrHits2' (coups de circuit en carrière au carré). Les données sont donc issues d'une source interne à SAS et transformées/enrichies au sein du script.

1 Bloc de code
PROC CONTENTS
Explication :
Ce bloc affiche les informations sur les variables du jeu de données 'sashelp.baseball', en se concentrant sur la position des variables ('ods select position'). C'est une étape préliminaire pour comprendre la structure des données.
Copié !
1 
2PROC CONTENTS varnum
3DATA=sashelp.baseball;
4ods select position;
5RUN;
6 
2 Bloc de code
PROC REG
Explication :
Active ODS Graphics pour générer des sorties graphiques. Ce bloc exécute une première régression linéaire multiple pour modéliser le logarithme du salaire (logSalary) en fonction de plusieurs variables explicatives (nhits, nruns, nrbi, nbb, yrmajor, crhits) en utilisant le jeu de données 'sashelp.baseball'. Les variables 'name', 'team' et 'league' sont utilisées comme identifiants.
Copié !
1ods graphics on;
2 
3PROC REG DATA=sashelp.baseball;
4 id name team league;
5 model logSalary = nhits nruns nrbi nbb yrmajor crhits;
6RUN;
3 Bloc de code
PROC REG
Explication :
Ce bloc ré-exécute le même modèle de régression, mais spécifie explicitement la génération de deux graphiques de diagnostic : 'RStudentByLeverage' et 'CooksD'. Ces graphiques aident à identifier les observations ayant une forte influence sur le modèle ou des résidus importants.
Copié !
1PROC REG DATA=sashelp.baseball
2 plots(only label)=(RStudentByLeverage CooksD);
3 id name team league;
4 model logSalary = nhits nruns nrbi nbb yrmajor crhits;
5RUN;
4 Bloc de code
PROC REG
Explication :
Ce bloc effectue la régression sur un sous-ensemble des données en excluant le joueur 'Rose, Pete' (identifié potentiellement comme un outlier ou une observation influente). Il génère les graphiques 'RStudentByLeverage' et 'residuals' (avec une ligne lissée pour visualiser les tendances des résidus).
Copié !
1PROC REG DATA=sashelp.baseball
2 plots=(RStudentByLeverage(label) residuals(smooth));
3 where name^="Rose, Pete";
4 id name team league;
5 model logSalary = nhits nruns nrbi nbb yrmajor crhits;
6RUN;
5 Bloc de code
DATA STEP Data
Explication :
Ce bloc DATA STEP crée un nouveau jeu de données nommé 'baseball'. Il est basé sur 'sashelp.baseball', mais avec deux modifications : le joueur 'Rose, Pete' est exclu, et deux nouvelles variables, 'YrMajor2' et 'CrHits2' (représentant les termes quadratiques de 'yrmajor' et 'crhits' respectivement), sont calculées et ajoutées au jeu de données. Cela permet d'explorer des relations non linéaires dans le modèle de régression.
Copié !
1DATA baseball;
2 SET sashelp.baseball(where=(name^="Rose, Pete"));
3 YrMajor2 = yrmajor*yrmajor;
4 CrHits2 = crhits*crhits;
5RUN;
6 Bloc de code
PROC REG
Explication :
Ce bloc exécute un modèle de régression final sur le jeu de données 'baseball' enrichi, incluant les variables quadratiques 'yrmajor2' et 'crhits2'. Il spécifie un ensemble très complet de graphiques de diagnostic ('diagnostics', 'RStudentByLeverage', 'CooksD', 'Residuals', 'DFFITS', 'DFBETAS', 'ObservedByPredicted') pour une évaluation approfondie de l'ajustement du modèle et des propriétés des résidus.
Copié !
1PROC REG DATA=baseball
2 plots=(diagnostics(stats=none) RStudentByLeverage(label)
3 CooksD(label) Residuals(smooth)
4 DFFITS(label) DFBETAS ObservedByPredicted(label));
5 id name team league;
6 model logSalary = nhits nruns nrbi nbb yrmajor crhits
7 yrmajor2 crhits2;
8RUN;
7 Bloc de code
PROC REG
Explication :
Ce bloc utilise une macro-variable '%let ind' pour lister toutes les variables indépendantes du modèle. Il exécute ensuite PROC REG sans générer de graphiques ('plots=none'), mais avec une instruction 'output' qui crée un nouveau jeu de données 'pred' contenant les observations originales et une nouvelle variable 'p' représentant les valeurs prédites du logSalary par le modèle.
Copié !
1%let ind = nhits nruns nrbi nbb yrmajor crhits yrmajor2 crhits2;
2PROC REG DATA=baseball plots=none;
3 model logSalary = &ind;
4 OUTPUT out=pred p=p;
5RUN;
8 Bloc de code
MACRO %marginal
Explication :
Ce bloc appelle une macro SAS nommée '%marginal'. Cette macro est conçue pour calculer et afficher les effets marginaux des variables indépendantes ('ind') sur la variable dépendante ('logSalary'), en utilisant les valeurs prédites ('p') obtenues précédemment. La définition de la macro elle-même n'est pas incluse dans ce script.
Copié !
1%marginal(dependent=logSalary, predicted=p, independents=&ind)
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 Copyright 1987, The 1987 Baseball Encyclopedia Update, Macmillan Publishing Company, New York.