进行多元回归时,何时应将预测变量居中以及何时应对其进行标准化?


281

在一些文献中,我读到,如果具有不同的单位,则需要对具有多个解释变量的回归进行标准化。(标准化包括减去平均值并除以标准偏差。)在其他情况下,我需要对数据进行标准化吗?在某些情况下,我仅应将数据居中(即,不除以标准差)?


11
一个相关的帖子在安德鲁·盖尔曼的博客。

31
除了已经给出的好答案之外,我还要提到的是,当使用诸如岭回归或套索之类的惩罚方法时,结果不再是标准化的。但是,通常建议对其进行标准化。在这种情况下,不是由于与解释直接相关的原因,而是因为处罚将在更平等的基础上对待不同的解释变量。
NRH 2012年

6
欢迎来到站点@mathieu_r!您已经发布了两个非常受欢迎的问题。请考虑批准/接受您对这两个问题都收到的一些很好的回答;)
Macro


1
当我阅读此问答时,它使我想起了我几年前偶然发现的Usenet网站faqs.org/faqs/ai-faq/neural-nets/part2/section-16.html这简单地说明了一些问题和注意事项当想要标准化/标准化/重新缩放数据时。我没有在这里的答案中提到它。它从机器学习的角度更多地对待该主题,但它可能会帮助来这里的人。
保罗

Answers:


212

在回归中,通常建议将变量居中,以使预测变量的均值为。这样就可以在将预测值设置为均值时将拦截项解释为的期望值。否则,当预测变量设置为0时,截距将被解释为的期望值,这可能不是现实的或可解释的情况(例如,如果预测变量是身高和体重,该怎么办?)。在回归中进行缩放的另一个实际原因是,当一个变量的规模很大时,例如,如果您使用一个国家的人口规模作为预测变量。在这种情况下,回归系数可能会非常高0Y i Y i 10 6YiYi较小的数量级(例如),在读取计算机输出时可能会有点烦人,因此您可以将变量转换为例如数百万的人口规模。首先存在使预测标准化的约定,以便回归系数的单位相同。106

正如@gung暗示和@MånsT明确显示(两者均为+1,顺便说一句),居中/缩放不会影响您在回归模型中的统计推断-估计值已适当调整,并且将相同。p

其他可能需要居中和/或缩放的情况:

  • 当您试图对不同比例的变量求和或平均值时,也许要创建某种综合得分。如果不进行缩放,则可能是一个变量纯粹由于其规模而对总和产生更大的影响,这可能是不希望的。

  • 为了简化计算和符号。例如,以它们的样本均值为中心的值的矩阵的样本协方差矩阵就是。类似地,如果单变量随机变量均值居中,则并且可以通过查看观察到的平方的样本均值来从样本中估计方差价值观。XXXvar(X)=E(X2)

  • 与上述相关,PCA仅当列首先以其方式居中时才可以解释为数据矩阵的奇异值分解

请注意,在我提到的最后两个项目符号中不必缩放,而在我提到的第一个项目符号中可以不需要居中,因此这两个项目不需要始终保持一致。


2
+1,这些是我没想到的优点。为了清楚起见,让我列出一些具体的示例,在这些示例中,研究人员可能希望在进行回归之前合并解释变量,因此需要进行标准化。一种情况可能是研究儿童的行为障碍。研究人员可能会从父母和老师那里获得评分,然后希望将其合并为一个适应不良的指标。另一个案例可能是对疗养院活动水平的研究,其中有居民的自我评价以及活动签署表上的签名数量。
gung

2
但是,我们是否理论上不应该使用总体均值和标准差来进行居中/缩放?在实践中,它是否像使用样本均值/ SD一样简单,还是还有更多呢?
AlefSin 2012年

3
为了完整起见,让我添加一个很好的答案,即居中和标准化的是相关矩阵。XXXX
cbeleites 2012年

1
@AlefSin:您实际上可能想要使用人口平均值/标准差以外的其他东西,请参阅我的答案。但是您的观点是,我们应该考虑使用什么来进行居中/缩放非常好。
cbeleites 2012年

@AlefSin,我的所有评论均假设您使用的是样本均值/标准差。如果以样本为中心,则表示截距的解释仍然相同,只是在将预测变量设置为样本均值时,它是的期望值。当您按样本数量定中心/定标时,我的三个要点中的信息仍然适用。还值得注意的是,如果以样本均值为中心,则结果是均值为0的变量,但按样本标准差进行标度则不会,通常不会产生标准差为1的结果(例如t统计量)。Yi
2012年

142

您遇到了一个共同的信念。但是,通常,您不需要为多元回归而对数据进行居中或标准化。不同的解释变量几乎总是在不同的尺度上(即,以不同的单位衡量)。这不是问题; 对beta进行估算,以便将每个解释变量的单位适当地转换为响应变量的单位。人们有时会说的一件事是,如果您首先对变量进行了标准化,则可以将beta解释为重要度量。例如,如果和β 2 = 0.3β1=.6β2=.3,则第一个解释变量的重要性是第二个解释变量的两倍。不幸的是,尽管这个想法很有吸引力,但这是无效的。有几个问题,但也许最容易理解的是,您无法控制变量中可能的范围限制。相互推论不同的解释变量的“重要性”是一个非常棘手的哲学问题。这些都不能暗示标准化是不好还是错误的,只是通常没有必要

我唯一想到的是在创建幂项之前居中帮助的问题。假设您有一个变量,范围从1到2,但是您怀疑与响应变量之间存在曲线关系,因此您想创建一个项。如果您不先将居中,则平方项将与高度相关,这可能会使beta的估计混乱。首先居中可解决此问题。 X 2 X XXX2XX


(更新在以后添加了很多:)我忘记提及的一个类似案例是创建交互条件。如果从两个不以0为中心的变量创建了一个交互作用/乘积项,则会引起一定程度的共线性(确切的数量取决于各种因素)。首先居中可解决此潜在问题。有关更完整的解释,请参见@Affine的出色回答:仅当包含交互项时,共线性诊断才有问题


12
如果有人感兴趣,我还会在这里谈论使用标准化beta来推断相对“重要性”的错误想法:假设检验的多元线性回归
gung

感谢您的回复。我想我想出了办法:可以想到X与其自身交互时的平方项,可以这么说,您对交互变量的观点将更为笼统。
Abhimanyu Arora

6
Belsley,Kuh和Welsch在1980年的著作《回归诊断》中对这种情况进行了周到的分析(有关详细信息,请参见附录3B。)他们认为重新缩放无济于事,这是不正确的。他们的分析是基于求解过程的数值稳定性,它是根据数据矩阵的条件数来衡量的。当以不同范围的刻度来测量变量时,该条件数可能会很高。然后,重新缩放将吸收比例因子内中的大部分“缺陷” 。由此产生的问题将得到更好的解决。XXX
ub

关于beta1 = 0.6和beta2 = 0.3,我不确定是否说beta1的重要性是beta2的两倍是否合适,但是我认为由于它们是标准化的,因此它们在相同的“标度”上,即单位是标准偏差从中。话虽如此,在beta1(保持x2恒定)的情况下,Y的响应将比beta2(保持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


1
对非常偏斜的变量进行标准化处理是个好主意,还是仅对对称分布的变量进行标准化会更好?我们是否应该仅对输入变量或结果进行星标化?
skan

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的某些应用,缩放可以提高预测性能:支持向量数据描述中的特征缩放


25

对于集中和标准化,我更喜欢“坚实的理由”(它们经常存在)。通常,与数据集和问题相比,与数据分析方法有关的更多。

通常,我更喜欢将中心(即,将数据的原点移动)到物理/化学/生物学/ ...比均值有意义的其他点(另请参阅宏的答案),例如

  • 对照组的平均值

  • 空白信号

数值稳定性是与算法有关的中心和/或缩放数据的原因。

另外,看看关于标准化的类似问题。其中还包括“仅中心”。


24

为了说明@cbeleites提到的数值稳定性问题,这是西蒙·伍德(Simon Wood)的一个有关如何“断裂”的示例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')

在此处输入图片说明

但是,如果我们在X上加上900,那么结果应该几乎相同,除了移到右边,不是吗?不幸的是没有...

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()不给我比其他任何警告或错误信息NA上的S I(X^2)线summary(B)在R-3.1.1。当然,其他算法可以通过不同的示例以不同的方式被“破坏”。


10
(+1)注意lm未能估计二次项的系数,并给出有关奇异设计矩阵的警告-也许比这些图更直接地说明问题。
Scortchi

3

我严重怀疑在回归中包括平方项或其他交互项时,对原始数据进行居中或标准化是否真的可以缓解多共线性问题,正如您中的某些人(尤其是gung)在上文中建议的那样。

为了说明我的观点,让我们考虑一个简单的示例。

假设真正的规格采用以下形式:

yi=b0+b1xi+b2xi2+ui

因此,相应的OLS方程为

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

yi^yiuib0^b2^b0b2zi=xi2

xx2yiyi

yi

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

y¯yi

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

其中,和是居中变量。和 –要估计的参数与原始OLS回归中的参数相同。 X - ˉ X ž - ˉ ž ^ b 1 ^ b 2yiy¯xix¯ziz¯b1^b2^

然而,很显然,在我的例子,居中RHS-变量和具有完全相同的协方差/相关性作为非中心和,即。X 2 X X 2科尔X Ž = 科尔X - ˉ Xž - ˉ Žxx2xx2corr(x,z)=corr(xx¯,zz¯)

总而言之,如果我对居中的理解是正确的,那么我认为居中数据对减轻因将平方项或其他高阶项包含在回归中而引起的MC问题没有任何帮助。

我很高兴听到您的意见!


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 2014年

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 * x。显然,cov(x-xbar,v)!= 0。因此,不幸的是,事先将数据居中会导致估计偏差。
rudi0086021 2014年

@ 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。很抱歉这么迟才回应此评论,但今天总会有像我这样的人第一次看到它。
蒂姆·古德曼
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.