При проведении множественной регрессии, когда вы должны центрировать свои предикторные переменные и когда вы должны стандартизировать их?

281

В какой-то литературе я читал, что необходимо стандартизировать регрессию с несколькими объясняющими переменными, если они в разных единицах. (Стандартизация заключается в вычитании среднего значения и делении на стандартное отклонение.) В каких других случаях мне нужно стандартизировать мои данные? Существуют ли случаи, когда мне следует центрировать только мои данные (т.е. без деления на стандартное отклонение)?

mathieu_r
источник
11
Связанный пост в блоге Эндрю Гельмана.
31
В дополнение к уже полученным отличным ответам позвольте мне упомянуть, что при использовании таких методов наказания, как регрессия гребня или лассо, результат больше не зависит от стандартизации. Однако часто рекомендуется стандартизировать. В этом случае не по причинам, непосредственно связанным с интерпретациями, а потому, что наказание тогда будет относиться к различным объясняющим переменным на более равной основе.
NRH
6
Добро пожаловать на сайт @mathieu_r! Вы опубликовали два очень популярных вопроса. Пожалуйста, рассмотрите возможность голосования / принятия некоторых из превосходных ответов, которые вы получили на оба вопроса;)
Макрос
1
Когда я прочитал этот раздел вопросов и ответов, он напомнил мне о сайте usenet, на который я наткнулся много лет назад faqs.org/faqs/ai-faq/neural-nets/part2/section-16.html Это дает простыми словами некоторые проблемы и соображения. когда кто-то хочет нормализовать / стандартизировать / изменить масштаб данных. Я не видел нигде упомянутых в ответах здесь. Это рассматривает предмет с большей точки зрения машинного обучения, но это может помочь кому-то прийти сюда.
Пол

Ответы:

213

В регрессии часто рекомендуется центрировать переменные так, чтобы предикторы имели среднее значение 0 . Это делает так, чтобы термин «перехват» интерпретировался как ожидаемое значение Yi когда значения предиктора установлены на их средние значения . Иначе, пересечение интерпретируется как ожидаемое значение Yi когда предикторы установлены в 0, что может не быть реалистичной или интерпретируемой ситуацией (например, что, если предикторами были рост и вес?). Другая практическая причина масштабирования в регрессии - это когда одна переменная имеет очень большой масштаб, например, если вы использовали численность населения страны в качестве предиктора. В этом случае коэффициенты регрессии могут быть на очень малого порядка величины (например, 106 ), который может немного раздражать при чтении результатов работы компьютера, поэтому вы можете преобразовать переменную, например, в численность населения в миллионах. Соглашение, согласно которому вы стандартизируете прогнозы, в основном существует так, чтобы единицы коэффициентов регрессии были одинаковыми.

Как @gung ссылается на и @ MånsT явно показывает (+1 к обоим, кстати), центрирование / масштабирование не влияет на ваш статистический вывод в регрессионных моделях - оценки корректируются соответствующим образом, и значения p будут одинаковыми.

Другие ситуации, когда центрирование и / или масштабирование могут быть полезны:

  • когда вы пытаетесь суммировать или усреднять переменные, которые находятся в разных масштабах , возможно, создать какой-либо составной счет. Без масштабирования может быть случай, когда одна переменная оказывает большее влияние на сумму только из-за ее масштаба, что может быть нежелательным.

  • Для упрощения расчетов и обозначений. Например, образец ковариационной матрицы из матрицы значений центрированных с их помощью выборки просто XX . Точно так же, если одномерная случайная величина X была отцентрирована по среднему значению, то var(X)=E(X2) и дисперсию можно оценить из выборки, посмотрев на выборочное среднее квадратов наблюдаемых значений.

  • В связи с вышеизложенным, PCA может интерпретироваться как разложение по сингулярным значениям матрицы данных только тогда, когда столбцы сначала центрируются по их средствам.

Обратите внимание, что масштабирование не является необходимым в последних двух пунктах, о которых я упоминал, и центрирование может не потребоваться в первом пункте, о котором я говорил, поэтому эти два пункта не обязательно должны идти рука об руку все время.

макрос
источник
2
+1, это хорошие моменты, о которых я не думал. Для ясности позвольте мне перечислить некоторые конкретные примеры, когда исследователь может объединить объясняющие переменные перед выполнением регрессии и, следовательно, должен стандартизировать. Одним из случаев может быть исследование поведенческих расстройств у детей; исследователи могут получить оценки как от родителей, так и от учителей, а затем захотеть объединить их в единую меру дезадаптации. Другим примером может быть исследование уровня активности в доме престарелых с самооценкой жильцами и количеством подписей на листах для регистрации мероприятий.
gung
2
Но разве мы не должны теоретически использовать среднее население и стандартное отклонение для центрирования / масштабирования? На практике это так же просто, как использовать пример среднего значения / SD или есть что-то большее?
AlefSin
3
Для полноты позвольте мне добавить к этому приятному ответу, что центрированного и стандартизированного X является корреляционной матрицей. XXX
cbeleites
1
@AlefSin: вы можете использовать что-то еще, кроме среднего значения / sd, см. Мой ответ. Но ваша точка зрения, что мы должны думать, что использовать для центрирования / масштабирования, очень хороша.
cbeleites
@AlefSin, все мои комментарии были сделаны при условии, что вы использовали пример среднего / SD. Если вы центрируете по выборке, значит интерпретация перехвата остается прежней, за исключением того, что это ожидаемое значение когда предикторы устанавливают свои выборочные значения . Информация, содержащаяся в трех пунктах, по-прежнему применима, когда вы центрируете / масштабируете по количеству образцов. Также стоит отметить, что если вы центрируете по среднему значению выборки, результатом будет переменная со средним значением 0, но масштабирование по стандартному отклонению выборки не приводит, как правило, к результату со стандартным отклонением 1 (например, t-статистике). Yi
Макро
143

Вы столкнулись с общим убеждением. Однако, как правило, вам не нужно центрировать или стандартизировать данные для множественной регрессии. Различные объясняющие переменные почти всегда находятся в разных масштабах (т. Е. Измеряются в разных единицах). Это не проблема; Бета-версии оцениваются таким образом, что они соответствующим образом преобразуют единицы каждой объясняющей переменной в единицы переменной отклика. Иногда люди говорят, что если вы сначала стандартизировали свои переменные, вы можете интерпретировать бета-версии как показатели важности. Например, если и β 2 = .3β1=.6β2=.3, тогда первая объясняющая переменная вдвое важнее второй. Хотя эта идея привлекательна, к сожалению, она недействительна. Есть несколько проблем, но, пожалуй, проще всего понять, что у вас нет возможности контролировать возможные ограничения диапазона в переменных. Определение «важности» различных объясняющих переменных по отношению друг к другу - очень сложная философская проблема. Ничто из этого не означает, что стандартизация плохая или неправильная , просто она обычно не нужна .

XX2XX


(Обновление добавлено намного позже :) Аналогичный случай, о котором я забыл упомянуть, - это создание условий взаимодействия . Если термин взаимодействия / продукта создается из двух переменных, которые не центрированы на 0, будет индуцирована некоторая коллинеарность (точная величина зависит от различных факторов). Сосредоточение сначала решает эту потенциальную проблему. Более полное объяснение см. В этом превосходном ответе @Affine: диагностика коллинеарности проблематична только тогда, когда включен термин взаимодействия .

банда
источник
12
Если кому-то интересно, я также расскажу об ошибочной идее использования стандартизированных бета-версий для определения относительной «важности» здесь: множественная линейная регрессия для проверки гипотез
gung
Спасибо за ваш ответ. Я думаю, что я понял это между тем: можно представить квадратный термин как X взаимодействующий с самим собой, так что ваша точка зрения на взаимодействующую переменную будет более общей.
Абхиманью Арора
6
XX
Что касается бета1 = 0,6 и бета2 = 0,3, я не уверен, что говорить о том, что бета1 важна вдвое больше, чем бета2, уместно, но я подумал, что, поскольку они стандартизированы, они имеют одинаковую «шкалу», то есть единицы измерения являются стандартными отклонениями от среднего. Сказав это, ответ Y будет в два раза выше в случае бета1 (с постоянной x2), чем для бета2 (с постоянной x1). Правильно? Или я что-то не так понял по пути?
Чао
@chao, вы на самом деле не избавились от единиц, присущих двум переменным; Вы только что спрятали их. Теперь единицы измерения X1 - на 13,9 см, а единицы измерения X2 - на 2,3 градуса Цельсия.
gung
80

В дополнение к замечаниям в других ответах, я хотел бы отметить, что масштаб и расположение объясняющих переменных не влияет на достоверность регрессионной модели.

y=β0+β1x1+β2x2++ϵ .

β1,β2,x1,x2,β0 , однако, делает.)

x1aβ^11/a

β^1(x1)=i=1n(x1,ix¯1)(yiy¯)i=1n(x1,ix¯1)2.

таким образом

β^1(ax1)=i=1n(ax1,iax¯1)(yiy¯)i=1n(ax1,iax¯1)2=ai=1n(x1,ix¯1)(yiy¯)a2i=1n(x1,ix¯1)2=β^1(x1)a.

β^2 (к примеру), то (надеюсь) ясно , что это масштабирование не влияет на оценки других склонов.

Таким образом, масштабирование просто соответствует масштабированию соответствующих уклонов.

ai=1/sisix1xi

MånsT
источник
1
Является ли хорошей идеей стандартизировать переменные, которые сильно искажены, или лучше просто стандартизировать симметрично распределенные переменные? Должны ли мы стандартизировать только входные переменные или также результаты?
скан
31

Если вы используете градиентный спуск, чтобы соответствовать вашей модели, стандартизация ковариат может ускорить сходимость (потому что, когда у вас немасштабированные ковариаты, соответствующие параметры могут неадекватно доминировать в градиенте). Чтобы проиллюстрировать это, немного кода 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

Кроме того, для некоторых приложений SVM масштабирование может улучшить прогнозирующую производительность: Масштабирование характеристик в описании данных опорных векторов .

mogron
источник
25

Я предпочитаю «веские причины» для центрирования и стандартизации (они существуют очень часто). В общем, они больше связаны с набором данных и проблемой, чем с методом анализа данных.

Очень часто я предпочитаю центрировать (т.е. смещать источник данных) другие точки, которые физически / химически / биологически / ... более значимы, чем среднее (см. Также ответ Макроса), например

  • среднее значение контрольной группы

  • пустой сигнал

Численная стабильность является причиной, связанной с алгоритмом, для центрирования и / или масштабирования данных.

Также взгляните на аналогичный вопрос о стандартизации . Который также охватывает "только центр".

cbeleites
источник
24

Чтобы проиллюстрировать проблему числовой стабильности, упомянутую @cbeleites, приведу пример от Саймона Вуда о том, как «сломаться» lm(). Сначала мы сгенерируем несколько простых данных и подгоним простую квадратичную кривую.

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')

введите описание изображения здесь

Но если мы добавим 900 к X, то результат должен быть почти таким же, за исключением смещения вправо, нет? К сожалению нет...

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

введите описание изображения здесь

Изменить, чтобы добавить к комментарию @Scortchi - если мы посмотрим на объект, возвращенный функцией lm (), мы увидим, что квадратный член не был оценен и отображается как NA.

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

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

И действительно, как предлагает @Scortchi, если мы посмотрим на матрицу модели и попытаемся решить ее напрямую, она «сломается».

> 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

Тем lm()не менее, не дает мне никаких предупреждений или сообщений об ошибках, кроме NAs в I(X^2)строке summary(B)в R-3.1.1. Конечно, другие алгоритмы могут быть «сломаны» по-разному на разных примерах.

Шон
источник
10
(+1) Примечание lmне в состоянии оценить коэффициент для квадратичного члена, и дает предупреждение о единственной матрице дизайна - возможно, более наглядно иллюстрирующей проблему, чем эти графики.
Scortchi
3

Я серьезно сомневаюсь, может ли центрирование или стандартизация исходных данных действительно смягчить проблему мультиколлинеарности, когда в регрессию включены квадратные термины или другие термины взаимодействия, как некоторые из вас, в особенности Ганг, рекомендовали выше.

Чтобы проиллюстрировать мою точку зрения, давайте рассмотрим простой пример.

Предположим, что истинная спецификация принимает следующую форму, так что

yi=b0+b1xi+b2xi2+ui

Таким образом, соответствующее уравнение МНК определяется как

yi=yi^+ui^=b0^+b1^xi+b2^xi2+ui^

yi^yiuib0^b2^b0b2zi=xi2

xx2yiyi перед добавлением квадратов.

Довольно легко показать, что среднее значение задано следующим образом: ˉ y = ^ b 0 + ^ byi

y¯=b0^+b1^x¯+b2^z¯
y¯x¯z¯yixizi

y¯yi

yiy¯=b1^(xix¯)+b2^(ziz¯)+ui^

yiy¯xix¯ziz¯b1^b2^

xx2xx2corr(x,z)=corr(xx¯,zz¯)

Таким образом, если мое понимание центрирования правильное, то я не думаю, что центрирование данных могло бы помочь смягчить проблему MC, вызванную включением квадратов или других терминов более высокого порядка в регрессию.

Буду рад услышать ваше мнение!

rudi0086021
источник
2
Спасибо за ваш вклад, @ rudi0086021. Вы можете быть правы, но я вижу здесь пару вопросов. Во-первых, центрирование означает вычитание среднего значения x , а не вычитание среднего значения y ; Во-вторых, вам нужно сначала центрироваться, центрирование послесловий не имеет никакого эффекта, как вы заметили. Рассмотрим: 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
Спасибо за ваш ответ, @gung. Вот мои мысли. Во-первых, лично я не видел убедительной причины по-разному относить зависимые и независимые переменные, то есть к независимым переменным, в то время как не делать этого для зависимых переменных.
rudi0086021
2
Во-вторых, как вы сказали, возможно, нам следует центрировать данные перед созданием квадратов. Такая практика уменьшит проблему MC. Однако это может привести к смещенным оценкам или, более конкретно, к отсутствующему переменному смещению (OVB). Чтобы проиллюстрировать это, посмотрите следующий пример: предположим, что истинная спецификация: y = b0 + b1 * x + b2 * x ^ 2 + u. Предварительное центрирование данных даст: y = b0 + b1 * (x-xhar) + b2 * (x-xbar) ^ 2 + v, где новый термин ошибки v = u + b1 * xbar-b2 * xbar ^ 2 + 2b2 * XBAR * х. Понятно, что cov (x-xbar, v)! = 0. Таким образом, к сожалению, предварительное центрирование данных приведет к искаженным оценкам.
rudi0086021
@ rudi0086021 Похоже, в последнем комментарии вы предполагаете, что при подборе центрированных данных вы получите те же коэффициенты, что и при подборе нецентрированных данных. Но центрирование перед взятием квадрата не является простым сдвигом на константу, поэтому не стоит ожидать получения тех же коэффициентов. Наилучшее совпадение после центрирования дается B0 + B1 * (x-xbar) + B2 * (x-xbar) ^ 2, где B0 = b0 + b1 * xbar + b2 * xbar ^ 2, B1 = b1 + 2 * b2 * xbar и B2 = b2. Таким образом, v = u. Извините, что отвечаю на этот комментарий с таким запозданием, но всегда могут быть такие, как я, которые видят его впервые сегодня.
Тим Гудман