Kiedy przeprowadzając regresję wielokrotną, należy wyśrodkować zmienne predykcyjne i kiedy je znormalizować?

281

W niektórych literaturach czytałem, że regresja z wieloma zmiennymi objaśniającymi, jeśli jest w różnych jednostkach, wymaga standaryzacji. (Standaryzacja polega na odjęciu średniej i podzieleniu przez odchylenie standardowe). W jakich innych przypadkach muszę standaryzować swoje dane? Czy istnieją przypadki, w których powinienem jedynie wyśrodkowywać moje dane (tj. Bez dzielenia przez odchylenie standardowe)?

mathieu_r
źródło
11
Związane post w blogu Andrew Gelmana.
31
Oprócz świetnych odpowiedzi, które już zostały podane, wspomnę, że przy stosowaniu metod penalizacji, takich jak regresja kalenicy lub lasso, wynik nie jest już niezmienny dla standaryzacji. Często zaleca się jednak standaryzację. W tym przypadku nie z powodów bezpośrednio związanych z interpretacjami, ale dlatego, że kara potraktuje różne zmienne objaśniające na równych zasadach.
NRH,
6
Witamy na stronie @mathieu_r! Masz dwa bardzo popularne pytania. Proszę rozważyć głosowanie / zaakceptowanie niektórych doskonałych odpowiedzi, które otrzymałeś na oba pytania;)
Makro
1
Kiedy przeczytałem to pytanie, przypomniało mi się o witrynie usenet, na której natknąłem się wiele lat temu faqs.org/faqs/ai-faq/neural-nets/part2/section-16.html W prosty sposób podaje niektóre problemy i uwagi kiedy chce się znormalizować / znormalizować / przeskalować dane. Nigdzie nie wspomniałem o tym w odpowiedziach tutaj. Traktuje ten temat bardziej z perspektywy uczenia maszynowego, ale może pomóc komuś, kto tu przyjdzie.
Paul,

Odpowiedzi:

213

W regresji często zaleca się centrowanie zmiennych, aby predyktory miały średnią 0 . To sprawia, że ​​pojęcie przechwytywania jest interpretowane jako oczekiwana wartość Yja gdy wartości predyktora są ustawione na ich średnie . W przeciwnym razie punkt przecięcia jest interpretowany jako oczekiwana wartość Yja gdy predyktory są ustawione na 0, co może nie być sytuacją realistyczną lub możliwą do interpretacji (np. Co, jeśli predyktorami były wzrost i waga?). Innym praktycznym powodem skalowania w regresji jest sytuacja, gdy jedna zmienna ma bardzo dużą skalę, np. Jeśli używasz wielkości populacji kraju jako predyktora. W takim przypadku współczynniki regresji mogą mieć wartość abardzo mały rząd wielkości (np. 10-6 ), co może być trochę irytujące podczas czytania danych wyjściowych z komputera, więc możesz przekonwertować zmienną na, na przykład, wielkość populacji w milionach. Konwencja, w której standaryzujesz predykcje, istnieje przede wszystkim po to, aby jednostki współczynników regresji były takie same.

Jak @gung wyraźnie nawiązuje do @ MånsT (+1 do obu, btw), centrowanie / skalowanie nie wpływa na wnioskowanie statystyczne w modelach regresji - szacunki są odpowiednio korygowane, a wartości p będą takie same.

Inne sytuacje, w których przydatne może być centrowanie i / lub skalowanie:

  • gdy próbujesz zsumować lub uśrednić zmienne, które są w różnych skalach , być może w celu stworzenia pewnego rodzaju złożonego wyniku. Bez skalowania może się zdarzyć, że jedna zmienna ma większy wpływ na sumę wyłącznie ze względu na jej skalę, co może być niepożądane.

  • Aby uprościć obliczenia i notację. Na przykład, próbka kowariancji z macierzy wartości skupione przez ich środek jest po prostu próbki XX . Podobnie, w przypadku jednowymiarowego zmienną losową X został średni scentrowany, a vzar(X)=mi(X2)) i odchylenia może być określona na próbce, patrząc na średnią próbek kwadratów wartości obserwowanych.

  • W związku z powyższym PCA można interpretować jedynie jako rozkład wartości pojedynczej macierzy danych, gdy kolumny zostały najpierw wyśrodkowane za ich pomocą.

Zauważ, że skalowanie nie jest konieczne w dwóch ostatnich punktach, o których wspomniałem, a centrowanie może nie być konieczne w pierwszym, o którym wspomniałem, więc nie muszą one zawsze iść w parze.

Makro
źródło
2
+1, to są dobre punkty, o których nie myślałem. Dla jasności pozwól mi wymienić kilka konkretnych przykładów, w których badacz może chcieć łączyć zmienne objaśniające przed uruchomieniem regresji, a zatem musi standaryzować. Jednym z przykładów mogą być badania nad zaburzeniami zachowania dzieci; badacze mogą uzyskać oceny od rodziców i nauczycieli, a następnie chcieć połączyć je w jedną miarę niedostosowania. Innym przypadkiem może być badanie poziomu aktywności w domu opieki z ocenami własnymi przez mieszkańców oraz liczba podpisów na kartach rejestracyjnych dotyczących działań.
gung
2
Ale czy teoretycznie nie powinniśmy wykorzystywać średniej populacji i odchylenia standardowego do centrowania / skalowania? Czy w praktyce jest to tak proste, jak użycie średniej próbki / SD, czy też jest coś więcej?
AlefSin
3
Dla kompletności dodam do tej ładnej odpowiedzi, że wyśrodkowanego i znormalizowanego X jest macierzą korelacji. XXX
cbeleites,
1
@AlefSin: możesz chcieć użyć czegoś innego niż średnia populacji / sd, zobacz moją odpowiedź. Ale twój punkt widzenia, że ​​powinniśmy pomyśleć, czego użyć do centrowania / skalowania, jest bardzo dobry.
cbeleites,
@AlefSin, wszystkie moje komentarze zostały napisane przy założeniu, że używasz średniej próby / SD. Jeśli wyśrodkujesz próbkę, oznacza to, że interpretacja przechwytywania jest nadal taka sama, z wyjątkiem tego, że jest to oczekiwana wartość gdy predyktory są ustawione na ich średnie próbkowe . Informacje w moich trzech punktach nadal mają zastosowanie, gdy wyśrodkowujesz / skalujesz według ilości próbek. Warto również zauważyć, że jeśli wyśrodkujesz na podstawie średniej próbki, wynikiem jest zmienna ze średnią 0, ale skalowanie według odchylenia standardowego próbki nie generuje na ogół wyniku ze odchyleniem standardowym 1 (np. Statystyki t). Yi
Makro
143

Spotkałeś powszechne przekonanie. Zasadniczo jednak nie trzeba wyśrodkowywać ani standaryzować danych w celu regresji wielokrotnej. Różne zmienne objaśniające są prawie zawsze w różnych skalach (tzn. Mierzone w różnych jednostkach). To nie jest problem; bety są szacowane w taki sposób, aby odpowiednio przeliczały jednostki każdej zmiennej objaśniającej na jednostki zmiennej odpowiedzi. Jedną rzeczą, którą ludzie czasem mówią, jest to, że jeśli najpierw ustandaryzowałeś zmienne, możesz zinterpretować bety jako miary ważności. Na przykład, jeśli , a β 2 = .3β1=.6β2)=.3, wówczas pierwsza zmienna objaśniająca jest dwa razy ważniejsza niż druga. Chociaż pomysł ten jest atrakcyjny, niestety nie jest ważny. Jest kilka problemów, ale być może najłatwiejszym do naśladowania jest brak możliwości kontrolowania możliwych ograniczeń zakresu w zmiennych. Wnioskowanie o „znaczeniu” różnych zmiennych objaśniających względem siebie jest bardzo trudnym zagadnieniem filozoficznym. Nic z tego nie sugeruje, że standaryzacja jest zła lub zła , tylko że zwykle nie jest to konieczne .

Jedynym przypadkiem, który mogę wymyślić z góry głowy, w którym pomocne jest centrowanie, jest stworzenie warunków mocy. Powiedzmy, że masz zmiennej , które waha się od 1 do 2, ale można podejrzewać krzywoliniowy związek z zmiennej odpowiedzi, a więc musiał stworzyć X. 2 terminu. Jeśli najpierw nie wyśrodkujesz X , twój kwadrat do kwadratu będzie silnie skorelowany z X , co może utrudnić oszacowanie beta. Centrowanie najpierw rozwiązuje ten problem. XX2)XX


(Aktualizacja dodana znacznie później :) Analogicznym przypadkiem, o którym zapomniałem wspomnieć, jest tworzenie warunków interakcji . Jeśli interakcja / produkt zostanie utworzona z dwóch zmiennych, które nie są wyśrodkowane na 0, zostanie wywołana pewna ilość kolinearności (z dokładną ilością zależną od różnych czynników). Centrowanie w pierwszej kolejności rozwiązuje ten potencjalny problem. Aby uzyskać pełniejsze wyjaśnienie, zobacz tę doskonałą odpowiedź z @Affine: Diagnostyka kolinearności jest problematyczna tylko wtedy, gdy uwzględniony jest termin interakcji .

gung
źródło
12
Jeśli ktoś jest zainteresowany, mówię także o błędnym pomyśle wykorzystania standardowych bet do wnioskowania o względnej „ważności” tutaj: testowanie regresji wielokrotnej-liniowej-do-hipotezy
Gung
Dzięki za odpowiedź. Wydaje mi się, że w międzyczasie to rozgryzłem: można by pomyśleć o kwadracie, gdy X oddziałuje ze sobą, że tak powiem, a twój punkt na zmienionej interakcji byłby bardziej ogólny.
Abhimanyu Arora
6
Belsley, Kuh i Welsch dokonali wnikliwej analizy tej sytuacji w swojej książce z 1980 roku Regression Diagnostics. (Szczegółowe informacje znajdują się w załączniku 3B). Stwierdzili, że masz rację, że przeskalowanie nie pomaga. Analiza wyników w zakresie liczbowym stabilności procedury roztworu, która jest mierzona w odniesieniu do ilości od stanu macierzy danych . Ta liczba warunków może być bardzo wysoka, gdy zmienne są mierzone na skalach o różnych zakresach. Ponowne przeskalowanie pochłonie wówczas większość „złości” w X w ramach czynników skali. Wynikający z tego problem będzie znacznie lepiej uwarunkowany. XX
whuber
Jeśli chodzi o beta1 = 0,6 i beta2 = 0,3, nie jestem pewien, czy powiedzenie beta1 jest tak samo ważne jak beta2, ale pomyślałem, że ponieważ są znormalizowane, są w tej samej „skali”, tzn. Jednostki są odchyleniami standardowymi od średniej. To powiedziawszy, odpowiedź Y będzie dwukrotnie wyższa w przypadku beta1 (utrzymując stałą x2) niż w przypadku beta2 (utrzymując stałą x1). Dobrze? Czy też coś źle zrozumiałem po drodze?
chao
@chao, tak naprawdę nie pozbyłeś się jednostek właściwych dla 2 zmiennych; właśnie je ukryłeś. Teraz jednostki X1 wynoszą na 13,9 cm, a jednostki X2 na 2,3 stopnia Celsjusza.
gung
80

Oprócz uwag w innych odpowiedziach chciałbym zauważyć, że skala i lokalizacja zmiennych objaśniających nie wpływa w żaden sposób na ważność modelu regresji.

Rozważ model .r=β0+β1x1+β2)x2)++ϵ

Do najmniejszych kwadratów estymatory z nie są dotknięte przez przesuwanie. Powodem jest to, że są to nachylenia powierzchni pasowania - o ile zmienia się powierzchnia, jeśli zmienisz x 1 , x 2 , jedną jednostkę. To nie zależy od lokalizacji. ( Jednak robi to estymator β 0 ).β1,β2),x1,x2),β0

Patrząc na równaniach dla estymatorów widać, że skalowanie ze współczynnikiem a łuski p 1 przez współczynnik 1 / . Aby to zobaczyć, zwróć uwagę na tox1zaβ^11/za

β^1(x1)=ja=1n(x1,ja-x¯1)(rja-r¯)ja=1n(x1,ja-x¯1)2).

A zatem

β^1(zax1)=ja=1n(zax1,ja-zax¯1)(rja-r¯)ja=1n(zax1,ja-zax¯1)2)=zaja=1n(x1,ja-x¯1)(rja-r¯)za2)ja=1n(x1,ja-x¯1)2)=β^1(x1)za.

Patrząc na odpowiedniej formule P 2 (na przykład) jest (oby) jest jasne, że nie ma wpływu na skalowanie estymatorów innych tras.β^2)

Zatem skalowanie po prostu odpowiada skalowaniu odpowiednich nachyleń.

zaja=1/sjasjax1xja

MånsT
źródło
1
Czy dobrym pomysłem jest standaryzacja zmiennych, które są bardzo wypaczone, czy lepiej po prostu standaryzować zmienne symetryczne? Czy powinniśmy umniejszać jedynie zmienne wejściowe czy też wyniki?
skan
31

W przypadku korzystania z opadania gradientu w celu dopasowania do modelu, ujednolicenie współzmiennych może przyspieszyć konwergencję (ponieważ w przypadku nieskalowanych zmiennych towarzyszących odpowiednie parametry mogą niewłaściwie zdominować gradient). Aby to zilustrować, niektóre kod R:

> objective <- function(par){ par[1]^2+par[2]^2}  #quadratic function in two variables with a minimum at (0,0)
> optim(c(10,10), objective, method="BFGS")$counts  #returns the number of times the function and its gradient had to be evaluated until convergence
    function gradient 
          12        3 
> objective2 <- function(par){ par[1]^2+0.1*par[2]^2}  #a transformation of the above function, corresponding to unscaled covariates
> optim(c(10,10), objective2, method="BFGS")$counts
function gradient 
      19       10 
> optim(c(10,1), objective2, method="BFGS")$counts  #scaling of initial parameters doesn't get you back to original performance
function gradient 
      12        8

Ponadto w przypadku niektórych aplikacji SVM skalowanie może poprawić wydajność predykcyjną: skalowanie funkcji w opisie danych wektora pomocniczego .

mogron
źródło
25

Wolę „solidne powody” zarówno dla centrowania, jak i standaryzacji (istnieją one bardzo często). Zasadniczo mają one więcej wspólnego z zestawem danych i problemem niż z metodą analizy danych.

Bardzo często wolę wyśrodkować (tj. Przesunąć źródło danych) do innych punktów, które są fizycznie / chemicznie / biologicznie / ... bardziej znaczące niż średnia (patrz także odpowiedź Makro), np.

  • średnia z grupy kontrolnej

  • pusty sygnał

Stabilność numeryczna to powód związany z algorytmem centrowania i / lub skalowania danych.

Zobacz także podobne pytanie dotyczące normalizacji . Co obejmuje również „tylko centrum”.

cbeleites
źródło
24

Aby zilustrować problem stabilności liczbowej wspomniany przez @cbeleites, oto przykład Simona Wooda na temat „łamania” lm(). Najpierw wygenerujemy proste dane i dopasujemy prostą krzywą kwadratową.

set.seed(1); n <- 100
xx <- sort(runif(n))
y <- .2*(xx-.5)+(xx-.5)^2 + rnorm(n)*.1
x <- xx+100
b <- lm(y ~ x+I(x^2))

plot(x,y)
lines(x, predict(b), col='red')

wprowadź opis zdjęcia tutaj

Ale jeśli dodamy 900 do X, wynik powinien być prawie taki sam, z wyjątkiem przesunięcia w prawo, nie? Niestety nie...

X <- x + 900
B <- lm(y ~ X+I(X^2))
plot(X,y)
lines(X, predict(B), col='blue')

wprowadź opis zdjęcia tutaj

Edytuj, aby dodać do komentarza @Scortchi - jeśli spojrzymy na obiekt zwrócony przez lm (), zobaczymy, że kwadrat nie został oszacowany i jest pokazany jako NA.

> B
Call:
lm(formula = y ~ X + I(X^2))

Coefficients:
(Intercept)            X       I(X^2)  
  -139.3927       0.1394           NA  

I rzeczywiście, jak sugeruje @Scortchi, jeśli spojrzymy na matrycę modelu i spróbujemy rozwiązać bezpośrednio, to się „zepsuje”.

> X <- model.matrix(b) ## get same model matrix used above
> beta.hat <- solve(t(X)%*%X,t(X)%*%y) ## direct solution of ‘normal equations’
Error in solve.default(t(X) %*% X, t(X) %*% y) : 
  system is computationally singular: reciprocal condition number = 3.9864e-19

Jednak lm()nie daje mi żadnych ostrzeżeń ani komunikatów o błędach innych niż NAs na I(X^2)linii summary(B)w R-3.1.1. Inne algorytmy można oczywiście „łamać” na różne sposoby, używając różnych przykładów.

Sean
źródło
10
(+1) Notatka lmnie szacuje współczynnika dla wyrażenia kwadratowego i ostrzega przed pojedynczą macierzą projektową - być może bardziej bezpośrednio ilustrującą problem niż te wykresy.
Scortchi
3

Wątpię poważnie, czy wyśrodkowanie lub standaryzacja oryginalnych danych może naprawdę złagodzić problem wielokoliniowości, gdy do regresji włączone są terminy kwadratowe lub inne warunki interakcji, co niektórzy z was, szczególnie Gung, zalecili powyżej.

Aby zilustrować mój punkt, rozważmy prosty przykład.

Załóżmy, że prawdziwa specyfikacja ma następującą postać, taką jak:

rja=b0+b1xja+b2)xja2)+uja

Zatem odpowiednie równanie OLS podano przez

rja=rja^+uja^=b0^+b1^xja+b2)^xja2)+uja^

rja^rjaujab0^b2)^b0b2)zja=xja2) później.

xx2)rjarja przed dodaniem warunki do kwadratu.

rja

r¯=b0^+b1^x¯+b2)^z¯
r¯x¯z¯rjaxjazja , odpowiednio.

r¯rja daje

rja-r¯=b1^(xja-x¯)+b2)^(zja-z¯)+uja^

rja-r¯xja-x¯zja-z¯b1^b2)^

xx2)xx2)Corr(x,z)=Corr(x-x¯,z-z¯)

Podsumowując, jeśli moje rozumienie centrowania jest prawidłowe, nie sądzę, aby centrowanie danych pomogło w złagodzeniu problemu MC spowodowanego włączeniem wyrażeń kwadratowych lub innych wyrażeń wyższego rzędu do regresji.

Z przyjemnością usłyszę twoje opinie!

rudi0086021
źródło
2
Dziękuję za Twój wkład, @ rudi0086021. Być może masz rację, ale widzę tutaj kilka problemów. Po pierwsze, centrowanie polega na odejmowaniu średniej x , a nie na odejmowaniu średniej y ; Po drugie, najpierw musisz wyśrodkować, centrowanie posłów nie działa, jak zauważysz. Rozważmy: x = c(1,2,3); x2 = x^2; cor(x, x2); # [1] 0.9897433; xc = c(-1,0,1); xc2 = xc^2; cor(xc, xc2) # [1] 0.
gung
Dziękuję za odpowiedź, @gung. Oto moje przemyślenia. Po pierwsze, osobiście nie widziałem przekonującego powodu, aby traktować zmienne zależne i niezależne inaczej, to znaczy zmiennych niezależnych, ale nie robić tego dla zmiennych zależnych.
rudi0086021
2
Po drugie, jak powiedziałeś, być może powinniśmy wyśrodkować dane przed utworzeniem kwadratowych warunków. Taka praktyka złagodzi problem MC. Może to jednak prowadzić do stronniczych szacunków, a ściślej mówiąc, do pominięcia zmiennej zmienności (OVB). Aby to zilustrować, zobacz następujący przykład: załóżmy, że prawdziwa specyfikacja to: y = b0 + b1 * x + b2 * x ^ 2 + u. Wyśrodkowanie danych wcześniej da: y = b0 + b1 * (x-xhar) + b2 * (x-xbar) ^ 2 + v, gdzie nowy termin błędu v = u + b1 * xbar-b2 * xbar ^ 2 + 2b2 * xbar * x. Oczywiste jest, że cov (x-xbar, v)! = 0. Dlatego niestety wcześniejsze centrowanie danych doprowadziłoby do stronniczych szacunków.
rudi0086021
@ rudi0086021 Wygląda na to, że w ostatnim komentarzu zakładasz, że uzyskasz takie same współczynniki przy dopasowywaniu danych wyśrodkowanych, jak przy dopasowywaniu danych wyśrodkowanych. Ale wyśrodkowanie przed zajęciem kwadratu nie jest prostym przesunięciem o stałą, więc nie należy oczekiwać takich samych współczynników. Najlepsze dopasowanie po wyśrodkowaniu daje B0 + B1 * (x-xbar) + B2 * (x-xbar) ^ 2 gdzie B0 = b0 + b1 * xbar + b2 * xbar ^ 2, B1 = b1 + 2 * b2 * xbar i B2 = b2. Zatem v = u. Przepraszam, że tak późno odpowiedziałem na ten komentarz, ale zawsze mogą być tacy jak ja, którzy widzą go po raz pierwszy dzisiaj.
Tim Goodman