Personnaliser les préférences

Nous utilisons des cookies pour vous aider à naviguer efficacement et à exécuter certaines fonctions. Vous trouverez ci-dessous des informations détaillées sur tous les cookies sous chaque catégorie de consentement.

Les cookies classés comme « Nécessaires » sont stockés sur votre navigateur car ils sont essentiels pour activer les fonctionnalités de base du site.... 

Toujours actif

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

Aucun cookie à afficher.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

Aucun cookie à afficher.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

Aucun cookie à afficher.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Aucun cookie à afficher.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

Aucun cookie à afficher.

Comment effectuer une transformation Box-Cox dans R (avec exemples)



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 effectuer une transformation box-cox dans R en utilisant la fonction boxcox() de la bibliothèque MASS() . L’exemple suivant montre comment utiliser cette fonction dans la pratique.

Reportez-vous à cet article de l’Université du Connecticut pour un joli résumé du développement de la transformation Box-Cox.

Exemple : Transformation Box-Cox dans R

Le code suivant montre comment ajuster un modèle de régression linéaire à un ensemble de données, puis utiliser la fonction boxcox() pour trouver un lambda optimal pour transformer la variable de réponse et ajuster un nouveau modèle.

library(MASS)

#create data
y=c(1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 6, 7, 8)
x=c(7, 7, 8, 3, 2, 4, 4, 6, 6, 7, 5, 3, 3, 5, 8)

#fit linear regression model
model <- lm(y~x)

#find optimal lambda for Box-Cox transformation 
bc <- boxcox(y ~ x)
(lambda <- bc$x[which.max(bc$y)])

[1] -0.4242424

#fit new linear regression model using the Box-Cox transformation
new_model <- lm(((y^lambda-1)/lambda) ~ x)

Le lambda optimal s’est avéré être -0,4242424 . Ainsi, le nouveau modèle de régression a remplacé la variable de réponse d’origine y par la variable y = (y -0,4242424 – 1) / -0,4242424.

Le code suivant montre comment créer deux tracés QQ dans R pour visualiser les différences de résidus entre les deux modèles de régression :

#define plotting area
op <- par(pty = "s", mfrow = c(1, 2))

#Q-Q plot for original model
qqnorm(model$residuals)
qqline(model$residuals)

#Q-Q plot for Box-Cox transformed model
qqnorm(new_model$residuals)
qqline(new_model$residuals)

#display both Q-Q plots
par(op)

Terrain QQ transformé par Box-Cox dans R

En règle générale, si les points de données se situent le long d’une ligne diagonale droite dans un tracé QQ, l’ensemble de données suit probablement une distribution normale.

Remarquez comment le modèle transformé en box-cox produit un tracé QQ avec une ligne beaucoup plus droite que le modèle de régression d’origine.

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 hypothèses de la régression linéaire .

Ressources additionnelles

Comment transformer des données dans R (Log, racine carrée, racine cubique)
Comment créer et interpréter un tracé QQ dans R
Comment effectuer un test de Shapiro-Wilk pour la normalité dans R

Ajouter un commentaire

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