Comment effectuer une transformation de journal dans SAS
De nombreux tests statistiques supposent que les valeurs d’une variable particulière sont normalement distribuées .
Cependant, les valeurs ne sont souvent pas distribuées normalement. Une façon de résoudre ce problème consiste à transformer la variable en prenant le journal de chaque valeur.
En effectuant cette transformation, une variable se rapproche généralement de la distribution normale.
L’exemple suivant montre comment effectuer une transformation de journal sur une variable dans SAS.
Exemple : transformation de journal dans SAS
Supposons que nous ayons l’ensemble de données suivant dans SAS :
/*create dataset*/ data my_data; input x; datalines; 1 1 1 2 2 2 2 2 2 3 3 3 6 7 8 ; run; /*view dataset*/ proc print data=my_data;
Nous pouvons utiliserPROC UNIVARIATE pour effectuer des tests de normalité sur la variable x afin de déterminer si elle est normalement distribuée et également créer un histogramme pour visualiser la distribution des valeurs :
/*create histogram and perform normality tests*/
proc univariate data=my_data normal;
histogram x;
run;
Dans le dernier tableau intitulé Tests de normalité , nous pouvons voir que la valeur p du test de Shapiro-Wilk est inférieure à 0,05, ce qui fournit une preuve solide que la variable x n’est pas normalement distribuée.
L’histogramme montre également que la distribution des valeurs ne semble pas être distribuée normalement :
Nous pouvons tenter une transformation de journal sur l’ensemble de données d’origine pour voir si nous pouvons produire un ensemble de données plus normalement distribué.
Nous pouvons utiliser le code suivant pour créer un nouvel ensemble de données dans SAS dans lequel nous prenons le journal de chacune des valeurs x d’origine :
/*use log transformation to create new dataset*/
data log_data;
set my_data;
x = log(x);
run;
/*view log transformed data*/
proc print data=log_data;
Nous pouvons ensuite utiliser à nouveau PROC UNIVARIATE pour effectuer des tests de normalité sur la variable transformée et produire également un histogramme :
/*create histogram and perform normality tests*/
proc univariate data=log_data normal;
histogram x;
run;
Dans le dernier tableau intitulé Tests de normalité, nous pouvons voir que la valeur p du test de Shapiro-Wilk est désormais supérieure à 0,05.
L’histogramme montre également que la distribution des valeurs est légèrement plus normalement qu’elle ne l’était avant la transformation :
Sur la base des résultats du test de Shapiro-Wilk et de l’histogramme présenté ci-dessus, nous conclurions que la transformation logarithmique a créé une variable beaucoup plus normalement distribuée que la variable d’origine.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans SAS :
Comment identifier les valeurs aberrantes dans SAS
Comment calculer la distance du cuisinier dans SAS
Comment créer des histogrammes dans SAS