◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎
前面讨论的条形图与直方图(histogram)相似,但是条形图适用于频数或计数数据(count data)的视觉显示,而直方图适用于连续性数据的视觉显示。R绘制直方图的函数是hist(x),其中x是数值向量。R默认绘制频数直方图(frequency histogram)。不过,我们也可以通过设置变元freq=FALSE绘制密度直方图(density histogram),图形总面积为1。R默认的直方图密度估计( )采用以下公式(Ugarte et al .,2015,p.108):
其中, n 是样本量, h 是类区间(class interval)宽度,即箱宽(bin width), v k 是类区间( ]样本点(sample points)数。R默认的 v k 是左边开放、右边封闭的区间。在函数hist中设置变元right=FALSE,则 v k 是一个左封闭、右开放的区间。更多有关直方图变元的设置,可利用?hist查询。
使用直方图的一个核心问题是确定合适的 h 。R默认breaks=' Sturges' ,即类区间宽度为Sturges算法。Sturges算法(Sturges,1926,p.65)为:
其中, R 是样本 n 的全距(range,即样本最大值与最小值的差,又称极差)。公式2.2的推导依据正态分布总体。类区间数是不小于1+log2 n 的最小整数。如果使用公式2.2计算多峰态(multimodal)或偏态(skewed)数据的类区间数,由此得到的直方图不能很好地估计总体真正的密度函数(Ugarte et al .,2015,p.109)。R实际计算的 h 利用函数pretty调整 h Sturges ,返还合适的分界点(breakpoints)。图2.16显示变量 X 数据的密度直方图。
图2.16 密度直方图与正态分布曲线比较
图2.16中的虚线代表总体正态分布(其平均数和标准差与样本数据的平均数和标准差相同)的曲线,绘制曲线的目的是便于诊断直方图。直方图显示,分界点数为6个,样本数据分布过多集中在5~10之间,右偏,且有异常值。该图中类区间样本点数依次为17,2,0,0,1。
假如有变量DV的一组数据:8,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,12,12,15,17,17。试绘制频数直方图,概括数据的特点。
根据以下R命令得到如图2.17所示的结果:
>par(mai=c(0.45,0.45,0,0),omi=c(0,0,0,0.001),mgp=c(2,0.6,0),cex=0.75)
>DV<-c(8,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,12,12,15,17,17)
>hist(DV,main='',xlim=c(7,18),ylim=c(0,20))
图2.17 数据分布频数直方图
图2.17显示6个分界点、5个类区间数,中间类区间没有样本点,说明数据分布缺乏连续性。整体上看,该组数据呈右偏分布,有异常值。