程序员常用的统计公式 (2013)
程序员常用的统计公式
By Evan Miller May 19, 2013
能够应用统计学知识就像拥有秘密超能力。
当大多数人只看到平均值时,你却能看到置信区间。
当有人说“7 大于 5”时,你能指出它们实际上是相同的。
在嘈杂的声音中,你听到求救的呼喊。
不幸的是,拥有这种超能力的程序员还不够多。这很可惜,因为应用统计学几乎总能增强数据的展示和解读。
作为我对开发者群体的一点贡献,我收集了我认为最有用的统计公式;这个页面将它们集中在一处,相当于一份供实践程序员使用的统计速查表。
这些公式中的大多数可以在 Wikipedia 上找到,但其他的则散落在期刊文章或教授的个人网页中。它们都是经典的(非贝叶斯)公式,为了方便理解,我添加了简明的注释。我还添加了链接和参考文献,这样即使你不熟悉底层概念,也可以去了解更多。穿不穿红色披风是可选的。
如有建议和更正,请发送邮件至 emmiller@gmail.com
目录
- 报告平均值的公式 1. 修正的标准差 2. 均值的标准误差 3. 均值的置信区间 4. 双样本 T-Test
- 报告比例的公式 1. Bernoulli 参数的置信区间 2. 多项式置信区间 3. 卡方检验
- 报告计数数据的公式 1. 泊松分布的标准差 2. 泊松参数的置信区间 3. 两个泊松参数的条件检验
- 比较分布的公式 1. 将经验分布与已知分布进行比较 2. 比较两个经验分布 3. 比较三个或更多经验分布
- 绘制趋势线的公式 1. 最佳拟合趋势线的斜率 2. 斜率的标准误差 3. 斜率的置信区间
1. 报告平均值的公式
任何编程语言的第一课之一就是计算平均值。但是很少有人停下来问:平均值实际上告诉我们关于底层数据的什么信息?
1.1 修正的标准差
标准差是一个单一的数字,反映了数据的实际 离散程度。应该与平均值一起报告(除非用户会感到困惑)。 s=√1N−1N∑i=1(xi−ˉx)2 其中:
- N 是观测的数量
- xi 是第 i 个观测的值
- ˉx 是 xi 的平均值
参考:Standard deviation (Wikipedia)
1.2 均值的标准误差
从统计学的角度来看,“平均值”实际上只是对底层总体均值的 估计。该估计具有不确定性,该不确定性由标准误差概括。 SE=s√N
1.3 均值的置信区间
置信区间反映了在给定显著性水平下不会被拒绝的统计假设集。因此,均值的置信区间反映了均值的所有可能值,这些值不会被数据拒绝。它是标准误差乘以一个系数,然后加到均值上并从均值中减去。 CI=ˉx±tα/2SE
其中:
- α 是显著性水平,通常为 5%(1 减去置信水平)
- tα/2 是自由度为 N−1 的 t 分布的 1−α/2 分位数
参考: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)
其中:
- p 是感兴趣的观测比例
- zα/2 是正态分布的 (1−α/2) 分位数
此公式也可用作排序标准。 参考:Binomial proportion confidence interval (Wikipedia)
2.2 多项式置信区间
如果你有两个以上的类别,则多项式置信区间会同时提供所有类别比例的上限和下限置信限。该公式与前面的公式几乎相同。
CI=(pj+z2α/22N±zα/2√[pj(1−pj)+z2α/2/4N]/N)/(1+z2α/2/N)
其中:
- pj 是第 j 个类别的观测比例
参考:Confidence Intervals for Multinomial Proportions
2.3 卡方检验
Pearson 卡方检验可以检测行计数的分布是否在列之间似乎不同(反之亦然)。在比较两组或更多组类别比例时,此方法非常有用。
称为 X2 的检验统计量计算如下: X2=n∑i=1m∑j=1(Oi,j−Ei,j)2Ei,j
其中:
- n 是行数
- m 是列数
- Oi,j 是行 i 和列 j 中的观测计数
- Ei,j 是行 i 和列 j 中的预期计数
预期计数由下式给出: Ei,j=∑nk=1Ok,j∑ml=1Oi,lN
其中:
- N 是所有单元格的总和,即观测的总数
如果 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)
其中:
- γ−1(p,c) 是下不完全伽马函数的逆函数
参考: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)!}
其中:
- 观测 1 由 t1 个时间段内的 c1 个事件组成
- 观测 2 由 t2 个时间段内的 c2 个事件组成
- c=c1+c2 且 t=t1+t2
你可以在 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
其中:
- h=k−1
- Jh/2 是阶数为 h/2 的第一类 Bessel 函数
- γ(h−2)/2,n 是 J(h−2)/2 的第 n 个零点
要计算临界值,也必须迭代求解此方程。当 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
其中:
- {x1,…,xN} 是独立变量,样本均值为 ˉx
- {y1,…,yN} 是因变量,样本均值为 ˉy
5.2. 斜率的标准误差
估计斜率周围的标准误差是: SE=√∑Ni=1(yi−ˉy−m(xi−ˉx))2/(N−2)√∑Ni=1(xi−ˉx)2
5.3. 斜率的置信区间
置信区间构造如下: CI=m±tα/2SE
其中:
- α 是显著性水平,通常为 5%(1 减去置信水平)
- tα/2 是自由度为 N−2 的 t 分布的 1−α/2 分位数