在一些文献中,我读到,如果具有不同的单位,则需要对具有多个解释变量的回归进行标准化。(标准化包括减去平均值并除以标准偏差。)在其他情况下,我需要对数据进行标准化吗?在某些情况下,我仅应将数据居中(即,不除以标准差)?
在一些文献中,我读到,如果具有不同的单位,则需要对具有多个解释变量的回归进行标准化。(标准化包括减去平均值并除以标准偏差。)在其他情况下,我需要对数据进行标准化吗?在某些情况下,我仅应将数据居中(即,不除以标准差)?
Answers:
在回归中,通常建议将变量居中,以使预测变量的均值为。这样就可以在将预测值设置为均值时将拦截项解释为的期望值。否则,当预测变量设置为0时,截距将被解释为的期望值,这可能不是现实的或可解释的情况(例如,如果预测变量是身高和体重,该怎么办?)。在回归中进行缩放的另一个实际原因是,当一个变量的规模很大时,例如,如果您使用一个国家的人口规模作为预测变量。在这种情况下,回归系数可能会非常高Y i Y i 10 − 6较小的数量级(例如),在读取计算机输出时可能会有点烦人,因此您可以将变量转换为例如数百万的人口规模。首先存在使预测标准化的约定,以便回归系数的单位相同。
正如@gung暗示和@MånsT明确显示(两者均为+1,顺便说一句),居中/缩放不会影响您在回归模型中的统计推断-估计值已适当调整,并且将相同。
其他可能需要居中和/或缩放的情况:
当您试图对不同比例的变量求和或求平均值时,也许要创建某种综合得分。如果不进行缩放,则可能是一个变量纯粹由于其规模而对总和产生更大的影响,这可能是不希望的。
为了简化计算和符号。例如,以它们的样本均值为中心的值的矩阵的样本协方差矩阵就是。类似地,如果单变量随机变量均值居中,则并且可以通过查看观察到的平方的样本均值来从样本中估计方差价值观。
请注意,在我提到的最后两个项目符号中不必缩放,而在我提到的第一个项目符号中也可以不需要居中,因此这两个项目不需要始终保持一致。
您遇到了一个共同的信念。但是,通常,您不需要为多元回归而对数据进行居中或标准化。不同的解释变量几乎总是在不同的尺度上(即,以不同的单位衡量)。这不是问题; 对beta进行估算,以便将每个解释变量的单位适当地转换为响应变量的单位。人们有时会说的一件事是,如果您首先对变量进行了标准化,则可以将beta解释为重要度量。例如,如果和β 2 = 0.3,则第一个解释变量的重要性是第二个解释变量的两倍。不幸的是,尽管这个想法很有吸引力,但这是无效的。有几个问题,但也许最容易理解的是,您无法控制变量中可能的范围限制。相互推论不同的解释变量的“重要性”是一个非常棘手的哲学问题。这些都不能暗示标准化是不好还是错误的,只是通常没有必要。
我唯一想到的是在创建幂项之前居中帮助的问题。假设您有一个变量,范围从1到2,但是您怀疑与响应变量之间存在曲线关系,因此您想创建一个项。如果您不先将居中,则平方项将与高度相关,这可能会使beta的估计混乱。首先居中可解决此问题。 X 2 X X
(更新在以后添加了很多:)我忘记提及的一个类似案例是创建交互条件。如果从两个不以0为中心的变量创建了一个交互作用/乘积项,则会引起一定程度的共线性(确切的数量取决于各种因素)。首先居中可解决此潜在问题。有关更完整的解释,请参见@Affine的出色回答:仅当包含交互项时,共线性诊断才有问题。
如果您使用梯度下降来拟合模型,则标准化协变量可能会加快收敛速度(因为当您使用未缩放的协变量时,相应的参数可能会不适当地控制梯度)。为了说明这一点,一些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的某些应用,缩放可以提高预测性能:支持向量数据描述中的特征缩放。
为了说明@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。当然,其他算法可以通过不同的示例以不同的方式被“破坏”。
lm
未能估计二次项的系数,并给出有关奇异设计矩阵的警告-也许比这些图更直接地说明问题。
我严重怀疑在回归中包括平方项或其他交互项时,对原始数据进行居中或标准化是否真的可以缓解多共线性问题,正如您中的某些人(尤其是gung)在上文中建议的那样。
为了说明我的观点,让我们考虑一个简单的示例。
假设真正的规格采用以下形式:
因此,相应的OLS方程为
其中,和是居中变量。和 –要估计的参数与原始OLS回归中的参数相同。 X 我 - ˉ X ž 我 - ˉ ž ^ b 1 ^ b 2
然而,很显然,在我的例子,居中RHS-变量和具有完全相同的协方差/相关性作为非中心和,即。X 2 X X 2科尔(X ,Ž )= 科尔(X - ˉ X,ž - ˉ Ž)
总而言之,如果我对居中的理解是正确的,那么我认为居中数据对减轻因将平方项或其他高阶项包含在回归中而引起的MC问题没有任何帮助。
我很高兴听到您的意见!
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
。