程序员常用的统计公式

By Evan Miller May 19, 2013

能够应用统计学知识就像拥有秘密超能力。 当大多数人只看到平均值时,你却能看到置信区间。 当有人说“7 大于 5”时,你能指出它们实际上是相同的。 在嘈杂的声音中,你听到求救的呼喊。 不幸的是,拥有这种超能力的程序员还不够多。这很可惜,因为应用统计学几乎总能增强数据的展示和解读。

作为我对开发者群体的一点贡献,我收集了我认为最有用的统计公式;这个页面将它们集中在一处,相当于一份供实践程序员使用的统计速查表。

这些公式中的大多数可以在 Wikipedia 上找到,但其他的则散落在期刊文章或教授的个人网页中。它们都是经典的(非贝叶斯)公式,为了方便理解,我添加了简明的注释。我还添加了链接和参考文献,这样即使你不熟悉底层概念,也可以去了解更多。穿不穿红色披风是可选的。

如有建议和更正,请发送邮件至 emmiller@gmail.com

目录

  1. 报告平均值的公式 1. 修正的标准差 2. 均值的标准误差 3. 均值的置信区间 4. 双样本 T-Test
  2. 报告比例的公式 1. Bernoulli 参数的置信区间 2. 多项式置信区间 3. 卡方检验
  3. 报告计数数据的公式 1. 泊松分布的标准差 2. 泊松参数的置信区间 3. 两个泊松参数的条件检验
  4. 比较分布的公式 1. 将经验分布与已知分布进行比较 2. 比较两个经验分布 3. 比较三个或更多经验分布
  5. 绘制趋势线的公式 1. 最佳拟合趋势线的斜率 2. 斜率的标准误差 3. 斜率的置信区间

1. 报告平均值的公式

任何编程语言的第一课之一就是计算平均值。但是很少有人停下来问:平均值实际上告诉我们关于底层数据的什么信息?

1.1 修正的标准差

标准差是一个单一的数字,反映了数据的实际 离散程度。应该与平均值一起报告(除非用户会感到困惑)。 s=√1N−1N∑i=1(xi−ˉx)2 其中:

参考:Standard deviation (Wikipedia)

1.2 均值的标准误差

从统计学的角度来看,“平均值”实际上只是对底层总体均值的 估计。该估计具有不确定性,该不确定性由标准误差概括。 SE=s√N

参考:Standard error (Wikipedia)

1.3 均值的置信区间

置信区间反映了在给定显著性水平下不会被拒绝的统计假设集。因此,均值的置信区间反映了均值的所有可能值,这些值不会被数据拒绝。它是标准误差乘以一个系数,然后加到均值上并从均值中减去。 CI=ˉx±tα/2SE

其中:

参考:Confidence interval (Wikipedia)

1.4 双样本 T-Test

双样本 t 检验可以判断两组观测值在其均值上是否存在差异。 检验统计量由下式给出: t=¯x1−¯x2√s21/n1+s22/n2

如果 |t| 超过自由度等于以下值的 t 分布的 (1−α/2) 分位数,则拒绝均值相等的假设: df=(s21/n1+s22/n2)2(s21/n1)2/(n1−1)+(s22/n2)2/(n2−1)

你可以在 Evan’s Awesome Two-Sample T-Test 中看到这些概念的演示。 参考:Student’s t-test (Wikipedia)

2. 报告比例的公式

通常报告二元结果或分类数据的相对比例,但一般来说,如果没有置信区间和独立性检验,这些比例就毫无意义。

2.1 Bernoulli 参数的置信区间

Bernoulli 参数是二元结果事件的基础比例(例如,硬币正面朝上的百分比)。置信区间由下式给出: CI=(p+z2α/22N±zα/2√[p(1−p)+z2α/2/4N]/N)/(1+z2α/2/N)

其中:

此公式也可用作排序标准。 参考:Binomial proportion confidence interval (Wikipedia)

2.2 多项式置信区间

如果你有两个以上的类别,则多项式置信区间会同时提供所有类别比例的上限和下限置信限。该公式与前面的公式几乎相同。

CI=(pj+z2α/22N±zα/2√[pj(1−pj)+z2α/2/4N]/N)/(1+z2α/2/N)

其中:

参考:Confidence Intervals for Multinomial Proportions

2.3 卡方检验

Pearson 卡方检验可以检测行计数的分布是否在列之间似乎不同(反之亦然)。在比较两组或更多组类别比例时,此方法非常有用。

称为 X2 的检验统计量计算如下: X2=n∑i=1m∑j=1(Oi,j−Ei,j)2Ei,j

其中:

预期计数由下式给出: Ei,j=∑nk=1Ok,j∑ml=1Oi,lN

其中:

如果 X2 大于自由度为 (m−1)×(n−1) 的 χ2 分布的 (1−α) 分位数,则存在统计依赖性。

你可以在 Evan’s Awesome Chi-Squared Test 中看到这些概念的 2x2 演示。 参考:Pearson’s chi-squared test (Wikipedia)

3. 报告计数数据的公式

如果传入事件是独立的,则它们的计数可以通过泊松分布很好地描述。泊松分布采用参数 λ,该参数是分布的均值 — 也就是说,单位时间内事件的平均到达率。

3.1. 泊松分布的标准差

通常不需要显式计算泊松数据的标准差。相反,它可以从泊松参数推断出来: σ=√λ

例如,可以使用此事实来读取未标记的销售图表。 参考:Poisson distribution (Wikipedia)

3.2. 泊松参数的置信区间

泊松参数周围的置信区间表示无法被数据拒绝的到达率集合。它可以从在 t 个时间段内观察到的 c 个事件的单个数据点推断出来,公式如下: CI=(γ−1(α/2,c)t,γ−1(1−α/2,c+1)t)

其中:

参考:Confidence Intervals for the Mean of a Poisson Distribution

3.3. 两个泊松参数的条件检验

请永远不要这样做:

从统计学的角度来看,5 个事件与 7 个事件没有区别。在用鲜红色文本报告一个计数大于另一个计数之前,最好对两个泊松均值进行检验。

p 值由下式给出: p=2×c!tc×min{c1∑i=0ti1tc−i2i!(c−i)!,c∑i=c1ti1tc−i2i!(c−i)!}

其中:

你可以在 Evan’s Awesome Poisson Means Test 中看到这些概念的演示。 参考:A more powerful test for comparing two Poisson means (PDF)

4. 比较分布的公式

如果要测试几组观测值是否来自相同的(未知)分布,或者一组观测值是否来自已知的分布,则需要 Kolmogorov-Smirnov 检验。 K-S 检验将测试整个分布的相等性,而不仅仅是分布的均值。

4.1. 将经验分布与已知分布进行比较

最简单的版本是单样本 K-S 检验,它将具有观测到的累积分布函数 F 的 n 个点的样本与具有 c.d.f. G 的已知分布函数进行比较。检验统计量是: Dn=supx|F(x)−G(x)|

用简单的英语来说,Dn 是对于任何 x 值,两个 c.d.f. 中最大差异的绝对值。

显著性水平为 α 时 Dn 的临界值由 Kα/√n 给出,其中 Kα 是求解以下方程的 x 的值: 1−α=√2πx∞∑k=1exp(−(2k−1)2π2/(8x2))

临界值必须迭代求解,例如通过牛顿法。如果只需要 p 值,则可以通过求解上述 α 直接计算。 参考:Kolmogorov-Smirnov Test (Wikipedia)

4.2. 比较两个经验分布

双样本版本类似,只不过检验统计量由下式给出: Dn1,n2=supx|F1(x)−F2(x)|

其中 F1 和 F2 分别是两个样本的经验 c.d.f.,分别具有 n1 和 n2 个观测值。检验统计量的临界值为 Kα/√n1n2/(n1+n2),其中 Kα 的值与上述相同。 参考:Kolmogorov-Smirnov Test (Wikipedia)

4.3. 比较三个或更多经验分布

J. Kiefer 在 1959 年的一篇论文 中描述了 Kolmogorov-Smirnov 的 k 样本扩展。检验统计量是: T=supxk∑j=1nj|Fj(x)−ˉF(x)|

其中 ˉF 是组合样本的 c.d.f.。 T 的临界值为 a2,其中 a 求解: 1−α=4Γ(h2)2h/2ah∞∑n=1(γ(h−2)/2,n)h−2exp[−(γ(h−2)/2,n)2/2a2][Jh/2(γ(h−2)/2,n)]2

其中:

要计算临界值,也必须迭代求解此方程。当 k=2 时,该方程简化为双样本 Kolmogorov-Smirnov 检验。 k=4 的情况也可以简化为更简单的形式,但对于 k 的其他值,该方程无法简化。 参考:K-sample analogues of the Kolmogorov-Smirnov and Cramer-v. Mises tests (JSTOR)

5. 绘制趋势线的公式

趋势线(或最佳拟合线)可用于建立两个变量之间的关系并预测未来的值。

5.1. 最佳拟合线的斜率

最佳拟合(最小二乘)线的斜率是: m=∑Ni=1(xi−ˉx)(yi−ˉy)∑Ni=1(xi−ˉx)2

其中:

5.2. 斜率的标准误差

估计斜率周围的标准误差是: SE=√∑Ni=1(yi−ˉy−m(xi−ˉx))2/(N−2)√∑Ni=1(xi−ˉx)2

5.3. 斜率的置信区间

置信区间构造如下: CI=m±tα/2SE

其中:

参考:Simple linear regression (Wikipedia)