Comment effectuer une transformation Box-Cox dans SAS



Une transformation box-cox est une méthode couramment utilisée pour transformer un ensemble de données non normalement distribué en un ensemble plusnormalement distribué .

L’idée de base derrière cette méthode est de trouver une valeur pour λ telle que les données transformées soient aussi proches que possible de la distribution normale, en utilisant la formule suivante :

  • y(λ) = (y λ – 1) / λ si y ≠ 0
  • y(λ) = log(y) si y = 0

Nous pouvons identifier la valeur optimale à utiliser pour λ dans SAS en utilisant la procédure PROC TRANSREG .

L’exemple suivant montre comment utiliser cette procédure dans la pratique.

Exemple : Transformation Box-Cox dans SAS

Supposons que nous ayons l’ensemble de données suivant dans SAS :

/*create dataset*/
data my_data;
    input x y;
    datalines;
7 1
7 1
8 1
3 2
2 2
4 2
4 2
6 2
6 2
7 3
5 3
3 3
3 6
5 7
8 8
;
run;

/*view dataset*/
proc print data=my_data; 

Supposons que nous utilisions PROC REG pour ajuster un modèle de régression linéaire simple à cet ensemble de données, en utilisant x comme variable prédictive et y comme variable de réponse.

/*fit simple linear regression model*/
proc reg data=my_data;
    model y = x;
run;

Dans les tracés de diagnostic de la sortie, nous pouvons afficher le tracé Résiduel par rapport au Quantile (tracé le plus à gauche dans la rangée du milieu) pour voir si les résidus sont à peu près normalement distribués dans le modèle :

Si les résidus se situent à peu près le long de la ligne diagonale droite du graphique, nous supposons généralement que les résidus sont normalement distribués.

D’après le graphique, nous pouvons voir que les résidus ne suivent pas beaucoup la ligne diagonale droite.

Cela indique que la variable de réponse dans le modèle de régression n’est probablement pas distribuée normalement.

Puisque la variable de réponse n’est pas normalement distribuée, nous pouvons utiliser PROC TRANSREG pour identifier une valeur pour λ que nous pouvons utiliser pour transformer la variable de réponse afin qu’elle soit distribuée plus normalement :

/*perform box-cox transformation*/
proc transreg data=my_data;
    model boxcox(y) = identity(x);
run;

transformation box-cox en SAS

La sortie nous indique que la valeur sélectionnée à utiliser pour λ est – 0,5 .

Ainsi, nous pouvons ajuster un modèle de régression linéaire simple en remplaçant la variable de réponse d’origine y par la variable y = (y -0,5 – 1) / -0,5 .

Le code suivant montre comment procéder :

/*create new dataset that uses box-cox transformation to create new y*/
data new_data;
   set my_data;
   new_y = (y**(-0.5) - 1) / -0.5;
run;

/*fit simple linear regression model using new response variable*/
proc reg data=new_data;
    model new_y = x;
run;

Dans le graphique Résiduel vs Quantile de la sortie de ce modèle, nous pouvons voir que les résidus se situent beaucoup plus étroitement le long de la ligne diagonale droite :

Cela indique que les résidus du modèle transformé en box-cox sont distribués beaucoup plus normalement, ce qui satisfait l’une des principales hypothèses de la régression linéaire .

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans SAS :

Comment utiliser Proc Univariate pour les tests de normalité dans SAS
Comment créer un tracé résiduel dans SAS
Comment effectuer le test de Levene dans SAS

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *