对数转换总是会减轻异方差吗?因为教科书指出对数变换通常会降低异方差性。所以,我想知道在哪些情况下它不会减少异方差性。
对数转换总是会减轻异方差吗?
机器算法验证
回归
数据转换
异方差
对数
2022-03-25 03:49:45
2个回答
不; 有时它会使情况变得更糟。
分布接近与条件均值成比例的异方差往往会通过取 log(y) 得到改善,但如果它不随均值以接近该速率(或更高)而增加,那么异方差通常会变得更糟通过这种转变。
因为取对数在右侧“拉入”更多的极端值(高值),而最左侧的值(低值)往往会被拉回:
这意味着如果值很大,点差会变小,但如果值已经很小,点差可能会被拉长。
如果您知道异方差的近似形式,那么您有时可以计算出一个近似使方差恒定的变换。这称为方差稳定变换;它是数理统计中的标准主题。我们网站上有许多与方差稳定转换有关的帖子。
如果散布与均值的平方根成正比(方差与均值成正比),那么平方根变换(这种情况下的方差稳定变换)往往会比对数变换做得更好;在这种情况下,对数转换“太多”了。在第二个图中,随着平均值的增加,分布减小,然后取对数或平方根会使情况变得更糟。(事实证明,在这种情况下,1.5 幂实际上在稳定方差方面做得相当好。)
根据我的经验,当数据是“锥形”并且偏斜(对数正态或其他)时,对数转换最有帮助(见下文)。这类数据通常来自人群,例如系统的用户,其中会有大量不经常使用的用户和一小部分频繁使用的用户。
这是一些锥形数据的示例:
x1 <- rlnorm(500,mean=2,sd=1.3)
x2 <- rlnorm(500,mean=2,sd=1.3)
y <- 2*x1+x2
z <- 2*x2+x1
#regression of unlogged values
fit <- lm(z ~ y)
plot(y,z,main=paste("R squared =",summary.lm(fit)[8]))
abline(coefficients(fit),col=2)
取 y 和 z 的对数给出:
#regression of logged values
fit <- lm(log(z) ~ log(y))
plot(log(y),log(z),main=paste("R squared =",summary.lm(fit)[8]))
abline(coefficients(fit),col=2)
请记住,对记录的数据进行回归会改变拟合方程的形式,从 到 (或者)。
除了这种情况,我会说尝试绘制记录的数据永远不会受到伤害,即使它不会使残差更加同调。它通常会揭示您不会看到的细节,或以有用的方式展开/压缩数据