让我们回到全国家庭增长调查的数据。本章的代码在first.py中。前言中介绍了如何下载和使用本书代码。

刚开始使用一个新数据集时,我建议你逐个探索计划用到的变量,使用直方图就是一个很好的方法。

在1.6节中,我们将agepreg变量的单位从百分之一年转换为年,并将birthwgt_lbbirthwgt_oz结合生成一个数值totalwgt_lb。在这一节中,我将使用这些变量展示直方图的一些特点。

首先,读入数据,选取成功生产的记录。

preg = nsfg.ReadFemPreg()
live = preg[preg.outcome == 1]

方括号中的表达式是一个布尔型Series,从DataFrame中选取满足条件的行,返回一个新的DataFrame。接下来,要为成功生产记录的birthwgt_lb生成并绘制直方图。

hist = thinkstats2.Hist(live.birthwgt_lb, label='birthwgt_lb')
thinkplot.Hist(hist)
thinkplot.Show(xlabel='pounds', ylabel='frequency')

如果Hist方法的参数是一个pandas Series对象,对象中的nan值都将去除。label是图例字符串。

图2-1展示了前一段代码的结果。结果中出现最多的值为7磅,这个值称为众数(mode)。这个分布大致为钟形。钟形是正态(normal)分布,即高斯(Gaussian)分布的形状。但是,结果的分布是不对称的,相较右方,尾端(tail)向左延伸更长,这一点与正态分布不符。

图像说明文字

图2-1 新生儿体重的磅值直方图

图2-2展示了变量birthwgt_oz的直方图,该变量表示新生儿体重的盎司值。理论上,我们预期这个分布是均匀(uniform)分布,即所有值都具有相同的频数。实际上,0的频数最高,1和15频数最低。这可能是因为调查参与者将接近整数的体重值进行了四舍五入。

图像说明文字

图2-2 新生儿体重的盎司值直方图

图2-3展示了变量agepreg的直方图,该变量表示产妇在妊娠结束时的年龄。这一分布的众数为21岁,分布形状大致为钟形,但是尾端向右延伸较长。大部分产妇年龄为20多岁,较少为30多岁。

图像说明文字

图2-3 产妇在妊娠结束时的年龄直方图

图2-4展示了变量preglngth的直方图,该变量表示妊娠周数。图中最常出现的值为39周。这一分布的左尾比右尾更长。妊娠期少于39周的并不少见,但是很少有超过43周的。如果妊娠期超过43周,医生通常会进行干预。

图像说明文字

图2-4 妊娠周数直方图

30:00