4.5 对数正态分布

如果一组数值做对数变换后服从正态分布,我们就称其服从对数正态分布(lognormal distribution)。对数正态分布的CDF跟正态分布一样,只是用logx代替原来的x:

CDFlognormal(x)=CDFnormal(logx)CDF_{lognormal}(x) = CDF_{normal}(log x)

正态分布的参数通常用μ和σ表示。但要记住,这两个参数的意思不是均值和标准差,对数正态分布的均值是exp(μ+σ2/2)exp(\mu + \sigma^2/2),标准差则比较复杂〔1〕。

〔1〕详见http://wikipedia.org/wiki/Log-normal_distribution

可以证明,成人体重的分布是近似对数正态的。〔2〕

〔2〕我是在http://mathworld.wolfram.com/LogNormalDistribution.html网页上看到这种观点的,但未注明来源。随后,我发现了一篇提出对数变换并解释其中原因的论文:Penman and Johnson, “The Changing Shape of the Body Mass Index Distribution Curve in the Population,” Preventing Chronic Disease, 2006 July; 3(3): A74。其网址是 http://www.ncbi.nlm.nih.gov/pmc/articles/PMC1636707

美国国家慢性病预防和健康促进中心(NCCDPHP)每年都会进行一次调查,调查结果会作为行为风险因素监测系统(BRFSS)的一部分〔3〕。2008年,他们访谈了414 509位被调查者,询问了他们的人口统计特征、健康和健康风险方面的问题。

〔3〕Centers for Disease Control and Prevention (CDC). Behavioral Risk Factor Surveillance System Survey Data. Atlanta, Georgia: U.S. Department of Health and Human Services, Centers for Disease Control and Prevention, 2008.

这份调查数据中包含了398 484位被调查者的体重信息(单位是千克)。图4-8是logwlog w的分布,其中w为体重,服从正态分布。

图4-8 成人体重的CDF(经过对数变换)

正态模型可以很好地拟合数据,但即使经过了对数变换,体重的最大值还是超过了我们的期望。而w取对数后符合正态分布,因此我们可以判断w服从对数正态分布。

练习4-11

http://thinkstats.com/CDBRFS08.ASC.gz下载BRFSS数据,读取该数据的代码在http://thinkstats.com/brfss.py上。运行brfss.py,应该可以看到它会在屏幕上显示出一些变量的汇总统计量。

写一个程序从BRFSS中读取成人体重,生成w和logw的正态概率图。答案可以从http://thinkstats.com/brfss_figs.py下载。

练习4-12

城镇人口分布是帕累托分布的一个真实例子。

美国人口普查局(U.S. Census Bureau)发布的人口数据涵盖全美所有城镇。我编写了一个小程序下载这些数据并将其保存到文件中,程序可以从http://thinkstats.com/populations.py下载。

  1. 看一下程序,弄明白它能做什么,然后运行改该程序下载和处理数据。
  2. 写个程序计算数据中14 593个城镇的人口分布,并画图。
  3. 分别画出线性和取对数后的CDF,看看分布的形状。然后两次取对数后画出CCDF,看看该分布是否符合帕累托分布的特征。
  4. 尝试本章中介绍的其他变换,画图,看看是否存在其他模型能更好地拟合这个数据。

关于城镇规模的分布,我们可以得出什么结论?相关代码可以从http://thinkstats.com/populations_cdf.py下载。

练习4-13

美国国税局(IRS)在http://irs.gov/taxstats上提供了关于个人所得税的数据。

其中一个文件中记录了2008年个人收入信息,网址是http://thinkstats.com/08in11si.csv。我将其转换为逗号分隔文件(CSV),读者可用csv模块读取该文件。

从该数据集中抽取收入的分布。本章中介绍的连续分布是否能较好地拟合该数据?答案可从http://thinkstats.com/irs.py下载。