在统计学中为什么要对变量取对数?

关注者
4,729
被浏览
2,473,990

78 个回答

对数据做一些变换的目的是它能够让它符合我们所做的假设,使我们能够在已有理论上对其分析。

对数变换(log transformation)是特殊的一种数据变换方式,它可以将一类我们理论上未解决的模型问题转化为已经解决的问题。我将说两类比较有代表性的模型。

  • 理论上:随着自变量的增加,因变量的方差也增大的模型。

先给个很经典的例子,如分析美国每月电力生产数。


左边是正常数据,可以看到随着时间推进,电力生产也变得方差越来越大,即越来越不稳定。这种情况下常有的分析假设经常就不会满足(误差服从独立同分布的正态分布,时间序列要求平稳)。

这必然导致我们寻求一种方式让数据尽量满足假设,让方差恒定,即让波动相对稳定。而这种目的可以通过对数转换做到。

理论上,我们将这类问题抽象成这种模型,即分布的标准差与其均值线性相关

\sqrt{Var(Z_{t})} =\mu _{t}\times \sigma ,其中E(Z_{t}) =\mu _{t}

由定义可推:Z_{t}=\mu _{t}\left( 1+\frac{Z_{t}-\mu _{t}}{\mu _{t}} \right) ,利用log函数的性质:log(1+x)\approx x(当x足够小)

那么log(Z_{t})\approx log(\mu _{t})+\frac{Z_{t}-\mu _{t}}{\mu _{t}} .

那么很容易就知道E(log(Z_{t})) \approx log( \mu _{t})Var(log(Z_{t})) \approx \sigma ^{2} .

所以对数变换能够很好地将随着自变量的增加,因变量的方差也增大的模型转化为我们熟知的问题。

  • 经验上:研究数据的增长率分布存在一定规律的模型。

再给个例子:实际研究中,某一研究对象自身性质难以研究,但其增长率是服从一定分布。例如说:Z_{t}=(1+X_{t}) \times Z_{t-1},其中X_{t}是每年增长率(不很大)。

我们可以考虑对数变换:log(Z_{t})-log(Z_{t-1})=log\left( \frac{Z_{t}}{Z_{t-1}} \right)=log\left( 1+X_{t} \right)\approx X_{t}

这样,我们又可以将研究数据的增长率分布存在一定规律的模型转化为我们熟知的问题。


在对数转换后,人们又思考了很多其他的转换方式(如Cox-Box转换)。但总而言之,每一种转换方式都是为了让数据符合我们的假设,来对其进行分析。我所说的对数变换原因只是冰山一角,如有不正确的地方还请各位多多指正。

To transform or not to transform? That is the question!

总的说来,对数变换是数据变换的一种常用方式,数据变换的目的在于使数据的呈现方式接近我们所希望的前提假设,从而更好的进行统计推断。但需要注意的是,数据是离散变量时进行对数变换要额外小心!

当然,我们可以追问的更多:

  1. (Why)为什么需要做数据变换?
  • 从直观上讲,是为了更便捷的发现数据之间的关系(可以理解为更好的数据可视化)。举个栗子,下图的左图是各国人均GDP和城市人口数量的关系,可以发现人均GDP是严重左偏的,并且可以预知在回归方程中存在明显的异方差性,但如果对GDP进行对数变换后,可以发现较明显的线性关系。为什么呢?因为我们度量相关性时使用的Pearson相关系数检验的是变量间的线性关系,只有两变量服从不相关的二元正态分布时,Pearson相关系数才会服从标准的t-分布,但如果变量间的关系是非线性的,则两个不独立的变量之间的Pearson相关系数也可以为0.
  • 所以,数据变换后可以更便捷的进行统计推断(t检验、ANOVA或者线性回归分析)。例如通常构造估计量的置信区间时是使用样本均值加减两倍标准差的方式,而这就要求样本均值的分布是渐近正态分布,如果数据呈现出明显的偏度,则此时使用上述统计推断方式就是不适用的;另外,最经典的例子就是回归分析中的异方差性,误差项的方差随着自变量的变化而变化,如果直接进行回归估计残差的方差会随着自变量的变化而变化,如果对变量进行适当变换,此时残差服从同一个正态分布。

2. (Why)为什么可以做数据变换?

  • 这个问题很难,每当做数据变换时,禁不住会想这样原始的数据信息是否经过变换后存在损失?数据变换有没有标准程序原始数据的统计推断又该怎么进行?我也没有完全理清思路,但想通过几个例子抛砖引玉。
  • 先从理论情形下去考虑,例子1,如果一个数是连续的,并且服从对数正态分布ln(X)\sim N(\mu,\sigma^{2}),可以很容易知道X的概率密度函数(PDF)f_{X}(x)=\frac{1}{x\sqrt{2\pi}\sigma} e^{-\frac{(lnx-\mu)^2}{2\sigma^{2}} } ,这样E(X)=e^{\mu+\frac{\sigma^{2}}{2}}Var(X)=\left( e^{\sigma{2}-1} \right)e^{2\mu+\sigma^2} ,此时可以看到已知变换后的数据的统计特征可以反过来推导出原始数据的统计特征,不存在数据信息的损失(可以看到对数转换后变量的均值可以直接由样本数据的均值得到,但不进行变化却需要由样本均值方差两方面去推断得到);例子2,如果一个数是离散的,服从负二项分布,概率质量函数(PMF)可以写成f\left( k:\theta,p\right)=C_{\theta-1}^{k+\theta-1} \left( 1-p \right)^\theta p^k,如果对这个变量进行对数变换后,情形又会怎样呢?此时,E\left( k \right) =\frac{p^{\theta}}{1-p} Var\left( k \right)=\frac{p^\theta}{(1-p)^2} ,假设数据的生成过程服从负二项分布,并且在不同的\theta=0.5,1,2,5,10,100下模拟生成数据,再用不同的方式去估计\tilde{\mu}=Y ,可以设计评价指标B=\frac{1}{S}\Sigma_{\left(s\right)} \tilde{\mu} -\mu,可以看到不同的数据变换方式下的估计精度是不同的。可以看到,如果假设数据服从负二项分布,估计的误差很小,如果假设数据对数变换后服从正态分布时会出现较大误差(由于离散分布时数据可以取0,此时对数变换需要用ln\left( x+k \right) 的形式,可以发现k取值并非随意),如果假设数据根号变换后服从正态分布时的误差要小于对数变换。所以,从一个小的随机模拟实验可以看出,数据的变换方式并非随意,并且对数变换也不一定是最好的变换,尤其是离散数据情况下(详见"Do not log-transform count data").

  • 但上述仅仅是在理论前提下数据变换的讨论,但实际应用中呢?理论前提下,即使再复杂总能找到处理的办法,但应用问题却没有标准答案。在我看来,数据变换方法的使用更是一门艺术(先验知识+经验+运气),需要结合应用领域的专门知识。例如,在宏观计量中,许多不平稳的经济数据要进行时间序列建模,就需要进行差分变换或者去除趋势,按照经济增长理论,经济数据应该存在趋势,那对数据应该进行去除趋势变换,但后来实证发现数据进行差分变换后的ACF/PACF图更符合模型的假设,这就要求建模时使用差分变换而非去除趋势变换(从理论上可以证明一个非平稳的变量如果错误进行变换仍然是非平稳的),所以这就存在困惑(貌似说的有点远……)。

至于,怎么去做数据变换(Box-Cox正态性变换还是均匀变换)?(When)什么时候需要做什么样的数据变换?(What)数据变换后的结果是什么,如何解释?当理清上述两个为什么时,我想应该基本就能回答了。当然,我的回答一定还存在问题与遗漏,不当之处还望指正^_^