Certains de mes prédicteurs sont à des échelles très différentes - dois-je les transformer avant d'ajuster un modèle de régression linéaire?


9

Je voudrais exécuter une régression linéaire sur un ensemble de données multidimensionnelles. Il existe des différences entre les différentes dimensions en termes de leur ordre de grandeur. Par exemple, la dimension 1 a généralement une plage de valeurs de [0, 1] et la dimension 2 a une plage de valeurs de [0, 1000].

Dois-je effectuer une transformation pour garantir que les plages de données pour différentes dimensions sont à la même échelle? Si c'est le cas, existe-t-il des indications pour ce type de transformation?

Réponses:


15

Les variables de décalage / mise à l'échelle n'affecteront pas leur corrélation avec la réponse

Pour voir pourquoi cela est vrai, supposons que la corrélation entre et soit . Alors la corrélation entre et estX ρ Y ( X - a ) / bYXρY(Xa)/b

cov(Y,(Xa)/b)SD((Xa)/b)SD(Y)=cov(Y,X/b)SD(X/b)SD(Y)=1bcov(Y,X)1bSD(X)SD(Y)=ρ

qui découle de la définition de la corrélation et de trois faits:

  • cov(Y,X+a)=cov(Y,X)+cov(Y,a)=0=cov(Y,X)

  • cov(Oui,uneX)=unecov(Oui,X)

  • S(uneX)=uneS(X)

Par conséquent, en termes d'ajustement du modèle (par exemple ou les valeurs ajustées), le déplacement ou la mise à l'échelle de vos variables (par exemple en les mettant sur la même échelle) ne changera pas le modèleR2 , car les coefficients de régression linéaire sont liés aux corrélations entre les variables. Cela ne changera l'échelle de vos coefficients de régression , qui doit être gardé à l'esprit lorsque vous interprétez la sortie si vous choisissez de transformer vos prédicteurs.

Edit: Ce qui précède a supposé que vous parlez de régression ordinaire avec l'interception. Quelques points supplémentaires à ce sujet (merci @cardinal):

  • L'interception peut changer lorsque vous transformez vos variables et, comme le souligne @cardinal dans les commentaires, les coefficients changeront lorsque vous déplacerez vos variables si vous omettez l'interception du modèle, bien que je suppose que vous ne le faites pas à moins que vous n'ayez une bonne raison (voir par exemple cette réponse ).

  • Si vous régularisez vos coefficients d'une manière ou d'une autre (par exemple, Lasso, régression de crête), le centrage / la mise à l'échelle affectera l'ajustement. Par exemple, si vous pénalisez (la pénalité de régression de crête), vous ne pouvez pas récupérer un ajustement équivalent après la normalisation, sauf si toutes les variables étaient à la même échelle en premier lieu, c'est-à-dire qu'il n'y a pas de multiple constant qui récupérer la même pénalité.βje2

Concernant quand / pourquoi un chercheur peut vouloir transformer les prédicteurs

Une circonstance courante (discutée dans la réponse suivante de @Paul) est que les chercheurs normaliseront leurs prédicteurs afin que tous les coefficients soient à la même échelle. Dans ce cas, la taille des estimations ponctuelles peut donner une idée approximative des prédicteurs qui ont le plus grand effet une fois que l'amplitude numérique du prédicteur a été normalisée.

Une autre raison pour laquelle un chercheur peut souhaiter mettre à l'échelle de très grandes variables est que les coefficients de régression ne sont pas à une échelle extrêmement petite. Par exemple, si vous vouliez examiner l'influence de la taille de la population d'un pays sur le taux de criminalité (ne pouvait pas penser à un meilleur exemple), vous pourriez vouloir mesurer la taille de la population en millions plutôt qu'en unités d'origine, puisque le coefficient peut être quelque chose comme ..00000001


Deux remarques rapides: Bien que le début du message soit correct, il manque le fait que le centrage aura un effet si une interception est absente. :) Deuxièmement, le centrage et le redimensionnement ont des effets importants si la régularisation est utilisée. Bien que le PO n'envisage peut-être pas cela, il s'agit probablement d'un point utile à garder à l'esprit.
cardinal

L'invariance de la mise à l' échelle est également facilement visible si l'on est à l'aise avec la notation matricielle. Avec plein rang (pour simplifier), y = X ( X ' X ) - 1 X ' y . Maintenant, si nous remplaçons X par X DD est diagonale, nous obtenons ˜ y = ( X D ) ( ( X D ) X D ) - 1 ( X D )Xy^=X(XX)-1XyXX
y~=(X)((X)X)-1(X)y=X(XX)-1Xy=X(XX)-1Xy=y^.
cardinal

@cardinal, j'ai décidé de mentionner le fait que, si vos estimations sont régularisées, le centrage / la mise à l'échelle peut avoir un impact. J'ai résisté au début parce que je pensais que cela entamerait une longue digression qui pourrait dérouter ceux qui ne sont pas familiers avec la régularisation mais j'ai trouvé que je pouvais y répondre avec relativement peu d'espace. Merci
Macro

Tous mes commentaires ne sont pas nécessairement destinés à suggérer que la réponse devrait être mise à jour. Plusieurs fois, j'aime juste glisser des remarques auxiliaires sous de belles réponses pour donner quelques réflexions sur des idées connexes qui pourraient intéresser un passant. (+1)
cardinal

Quelque chose de génial se passe avec le dépouillement des votes. Encore une fois, j'ai voté pour cela lors de mon commentaire précédent et cela n'a pas "pris". Hmm.
cardinal

2

La soi-disant «normalisation» est une routine courante pour la plupart des méthodes de régression. Il y a deux façons:

  1. Mappez chaque variable dans des limites [-1, 1] (mapminmax dans MatLab.
  2. Supprimer la moyenne de chaque variable et diviser son écart type (mapstd dans MatLab), c'est-à-dire "normaliser". Si la moyenne réelle d'une déviation est inconnue, il suffit de prendre des caractéristiques d'échantillon:
    X~jej=Xjej-μjeσje
    X~jej=Xjej-Xje¯st(Xje)
    E[Xje]=μE[Xje2-E[Xje]2]=σ2Xje¯=1Nj=1NXjejst(Xje)=1Nj=1N(Xjej2-Xje¯2)

Comme la régression linéaire est très sensible aux plages de variables, je suggère généralement de normaliser toutes les variables si vous n'avez aucune connaissance préalable de la dépendance et que vous vous attendez à ce que toutes les variables soient relativement importantes.

Il en va de même pour les variables de réponse, bien que cela ne soit pas très important pour elles.

Pourquoi faire de la normalisation ou de la standardisation? Surtout pour déterminer l'impact relatif de différentes variables dans le modèle, ce qui peut être obtenu si toutes les variables sont dans les mêmes unités.

J'espère que cela t'aides!


x1,x2,ysummary(lm(y~x1+x2))$r.sqsummary(lm(y~scale(x1)+scale(x2)))$r.sqR2

R2

p
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.