3.4 累积分布函数

理解了百分位数,现在我们可以开始学习累积分布函数(CDF)了。CDF函数就是值到其在分布中百分等级的映射。

CDF是x的函数,其中x是分布中的某个值。计算给定x的CDF(x),就是计算样本中小于等于x的值的比例。

以下函数的参数是样本t和值x:

def Cdf(t, x): 
  count = 0.0 
  for value in t: 
    if value <= x: 
      count += 1.0 

  prob = count / len(t) 
  return prob

读者应该很熟悉这个函数,这跟前面的PercentileRank函数几乎一样,唯一区别就是该函数返回的结果是0~1范围内的概率,而不是0~100范围内的百分等级。

来看个例子,给定一个样本{1, 2, 2, 3, 5}。下面是其中某些值的CDF:

CDF(0) = 0 
CDF(1) = 0.2 
CDF(2) = 0.6 
CDF(3) = 0.8 
CDF(4) = 0.8 
CDF(5) = 1

我们可以计算任意值x的CDF,而不仅是样本中出现的值。如果x比样本中最小的值还要小,那么CDF(x)就等于0。如果x比样本中的最大值还要大,那么CDF(x)就是1。

图3-2是这个CDF的图形化表示。样本的CDF是一个阶梯函数。在下一章,我们会看到作为连续函数的CDF的分布。

图3-2 CDF示例