Existe-t-il une transformation de type Box-Cox pour les variables indépendantes? C’est-à-dire une transformation qui optimise la variable manière à ce qu’elle corresponde mieux à un modèle linéaire?y~f(x)
Si oui, existe-t-il une fonction pour effectuer cela R
?
r
regression
data-transformation
normality-assumption
Tal Galili
la source
la source
R
et, y réfléchissant un instant, je ne sais pas exactement comment procéder. Quels critères optimiseriez-vous pour assurer la transformation "la plus linéaire"? est tentant mais, comme on le voit dans ma réponse ici , seul ne peut être utilisé pour voir si l'hypothèse de la linéarité d'un modèle est satisfaite. Aviez-vous des critères en tête?Réponses:
John Tukey a préconisé sa " méthode en trois points " pour trouver des expressions de variables permettant de linéariser les relations.
Je vais illustrer avec un exercice de son livre, Exploratory Data Analysis . Ce sont des données de pression de vapeur de mercure provenant d'une expérience dans laquelle la température a été modifiée et la pression de vapeur a été mesurée.
La relation est fortement non linéaire: voir le panneau de gauche dans l'illustration.
S'agissant d'un exercice exploratoire , nous nous attendons à ce qu'il soit interactif. On demande à l’analyste de commencer par identifier trois points «typiques» dans l’intrigue : un près de chaque extrémité et un au milieu. Je l'ai fait ici et les ai marqués en rouge. (Quand j'ai fait cet exercice pour la première fois il y a longtemps, j'ai utilisé un ensemble de points différent, mais suis arrivé aux mêmes résultats.)
Dans la méthode des trois points, on cherche - par force brute ou autrement - une transformation de Box-Cox qui, lorsqu'elle est appliquée à l' une des coordonnées - y ou x - (a) placera les points typiques approximativement sur un line et (b) utilise un "beau" pouvoir, généralement choisi parmi une "échelle" de pouvoirs pouvant être interprétés par l'analyste.
Pour des raisons qui apparaîtront plus tard, j'ai élargi la famille Box-Cox en autorisant un "décalage" afin que les transformations soient de la forme
Voici une( λ , α ) λ α
R
implémentation rapide et sale . Il trouve d'abord une solution optimale , puis arrondit à la valeur la plus proche de l'échelle et, sous réserve de cette restriction, optimise (dans des limites raisonnables). C'est incroyablement rapide, car tous les calculs sont basés sur ces trois points typiques du jeu de données d'origine. (Vous pouvez les faire avec un crayon et du papier, même, c'est exactement ce que Tukey a fait.)Lorsque la méthode des trois points est appliquée aux valeurs de pression (y) dans le jeu de données de vapeur de mercure, nous obtenons le panneau central des tracés.
Dans ce cas,( 0 , 0 )
parms
est égal à : la méthode choisit de log-transformer la pression.Nous avons atteint un point analogue au contexte de la question: pour une raison quelconque (généralement pour stabiliser la variance résiduelle), nous avons ré-exprimé la variable dépendante , mais nous trouvons que la relation avec une variable indépendante est non linéaire. Nous passons maintenant à la ré-expression de la variable indépendante dans le but de linéariser la relation. Ceci est fait de la même manière, en inversant simplement les rôles de x et y:
Les valeurs de( - 1 , 253.75 ) - 254 - 1 1
parms
pour la variable indépendante (température) sont : en d’autres termes, nous devrions exprimer la température en degrés Celsius supérieurs à C et utiliser sa réciproque (la puissance ). (Pour des raisons techniques, la transformation Box-Cox ajoute en outre au résultat.) La relation résultante est affichée dans le panneau de droite.À ce jour, quiconque ayant le moins de connaissances scientifiques a reconnu que les données nous "indiquaient" qu'il fallait utiliser des températures absolues - où le décalage est de au lieu de car elles auront une signification physique. (Lorsque le dernier tracé est redessiné en utilisant un décalage de au lieu de , il y a peu de changement visible. Un physicien étiqueterait alors l'axe des x avec : c'est-à-dire la température absolue réciproque.)273 254 273 254 1 / ( 1 - x )
C'est un bel exemple de la manière dont l'exploration statistique doit interagir avec la compréhension du sujet de l'enquête . En fait, les températures absolues réciproques apparaissent tout le temps dans les lois physiques. En conséquence, en utilisant uniquement des méthodes EDA simples pour explorer cet ensemble de données centenaire, nous avons redécouvert la relation de Clausius-Clapeyron : le logarithme de la pression de vapeur est une fonction linéaire de la température absolue réciproque. Non seulement cela, nous avons une estimation pas très mauvaise du zéro absolu (- 254 degrés C), à partir de la pente du graphique de droite, on peut calculer l'enthalpie spécifique de vaporisation et, comme il se trouve, une analyse minutieuse des résidus permet d'identifier une valeur aberrante (la valeur à une température de degré C), nous montre comment l'enthalphyie de la vaporisation varie (très légèrement) avec la température (violant ainsi la loi des gaz parfaits), et peut finalement nous donner des informations précises sur le rayon effectif des molécules de mercure! Tout cela à partir de 19 points de données et quelques compétences de base en EDA.0
la source
data <- cbind(temperature, pressure)
R
Jetez un coup d’œil à ces diapositives sur les "diagnostics de régression" de John Fox (disponibles ici , complétées de références), qui traitent brièvement de la question de la transformation de la non-linéarité. Il couvre la "règle bombée" de Tukey pour la sélection des transformations de puissance (abordée dans la réponse acceptée), mais mentionne également les familles de transformations Box-Cox et Yeo-Johnson. Voir la section 3.6 des diapositives. Pour une interprétation plus formelle du même auteur, voir J. Fox, Analyse de régression appliquée et modèles linéaires généralisés, Deuxième édition (Sage, 2008) .
En ce qui concerne les packages R qui vous aident, jetez un coup d’œil sur le package voiture , rédigé par J. Fox et S. Weisberg. Ce paquetage accompagne J. Fox et S. Weisberg, Un compagnon à la régression appliquée, Deuxième édition, (Sage, 2011) , un autre livre à lire absolument. En utilisant ce package, vous pouvez partir de
basicPower()
(transformations de puissance simples),bcPower()
(transformations Box-Cox) etyjPower()
(transformations Yeo-Johnson). Il y a aussi powerTransform () :Consultez les deux ouvrages pour plus de détails sur la théorie derrière ces transformations et sur les approches informatiques.
la source
la source