卡方检验的公式(2×2)

卡方检验的公式(2×2)
A short-cut formula for Chi-square test a 2 by 2 table

最近发现一个快速计算卡方检验的公式。
对于2×2的表格

\(
\begin{array}{|c|c|c|}
\hline
a & b & (a+b)\\ \hline
c & d & (c+d)\\ \hline
(a+c) & (b+d) & n\\ \hline
\end{array}
\)
上式中\(n=a+b+c+d\)

卡方检验的统计量是:
\(
\chi^2_1 = \frac{n(ad-bc)^2}{(a+b)(c+d)(a+c)(b+d)}
\)

这个方法和R计算的结果(不要用continuity correction, e.g. chisq(…, correct = FALSE))是一致的。

-- February 17, 2017更新 --

刚刚发现Matthew’s Correlation Coefficient (MCC)的定义和2×2 table的卡方检验有如下联系
\(
|MCC| = \sqrt{\frac{\chi^2}{n}}
\)
因为MCC的范围是-1到1,因此\(\chi^2 \)的范围是0到\(n\)

卡方检验

卡方检验
Chi-square test

卡方检验的全称是Pearson’s Chi-square test,这是统计中最重要的检验。
从用途来讲, 卡方检验可以做两件事:
(1)适配度检定(Goodness of fit),检查样本是否符合某种随机分布;
(2)独立性检定(Independence test),检查多个变量之间是否独立。

这篇不讲怎么用卡方检验,而是讲讲卡方检验的公式,推导,以及和似然检验的联系,目的是温故知新。

从公式来讲卡方检验:

$$ \chi^2 = \sum_i \frac{(O_i – E_i)^2}{E_i} $$
这里\(O_i\)是观察到的次数,\(E_i\)是期望的次数,
统计量\(\chi^2\) 服从自由度\(df\)的卡方分布(\(\chi^2\) distribution)。

假设有一个有可能是多项分布的随机变量\(X \sim Multinomial(N, p_1, p_2, \ldots, p_k)\)。
观察到\(k\)类的次数分别是\(x_1, x_2, \ldots,x_k\).
为了统计检验\(X\)是否服从这个分布,列出零假设\(H_0\) 为\(X\)服从多项分布,对立假设为\(X\)不服从这个多项分布,可以得到:

$$ \chi^2 = \sum_i \frac{(O_i – E_i)^2}{E_i} = \sum_i \frac{(O_i – N \cdot p_i)^2}{N \cdot p_i}$$

注意这个每一项的分母是\( N \cdot p_i \), 但根据中心极限定理(Central Limit Theorem),
$$\frac{O_i – N \cdot p_i}{\sqrt{N \cdot p_i \cdot (1-p_i)}} \rightarrow Normal(0, 1)$$

同卡方检验的公式相比较,这里面有两个问题:
1. 为什么卡方检验不是\(N\)个\(\frac{O_i – N \cdot p_i}{\sqrt{N \cdot p_i \cdot (1-p_i)}}\)的平方和?
2. 为什么\( \chi^2 \)的自由度是\( n-1 \),而不是 \( n \)?

回答这两个问题的一个方法是推导一下 \( \chi^2 \) 的分布。
根据[1],推导的思路如下:

1. 令\( Z_i = \frac{O_i – N * p_i}{\sqrt{N*p_i}} \),因此\( \chi^2 = \sum_i Z_i^2 \).

2.
根据中心极限定理,
\( Z_i \rightarrow \sqrt{1-p_i} N(0, 1) = N(0, 1-p_i) \)
\( Cov(Z_i, Z_j) = \frac{Cov(O_i, O_j)}{n*\sqrt{p_i*p_j}} = -\sqrt{p_i * p_j} \)

3. 为了得到\( Z_1^2 + Z_2+ \ldots + Z_k^2 \) 的极限分布,
我们先假设\( \vec{g} = (g_1, g_2, \ldots, g_r) \) 是i.i.d.的正态分布,
再假设单位向量 \( \vec{p} = (\sqrt{p_1}, \sqrt{p_2}, \ldots, \sqrt{p_k}) \).
当\( \vec{g} \) 向量 减去 它在\( \vec{p} \)的投影时,
\( \vec{g^p} = \vec{g} – ( \vec{g} \cdot \vec{p} ) \cdot \vec{p} \) 的分布和 \( Z_1, Z_2, \ldots, Z_k \) 是 一样的。
为了证明这一点, 可以证明 \( E(Z_i^2) \rightarrow (g^p_i)^2 \) 和 \( E(Z_i Z_j) \rightarrow g^p_i \cdot g^p_j \) 。
有了\( \vec{g^p} \), 就可以把\( \chi^2 \) 表示为 \( \chi^2 = \sum_i (\vec{g^p}_i)^2 \) 即 \( \vec{g^p} \) 长度的平方。

4. 下面计算\( \vec{g^p} \) 的分布
\( \vec{g} \) 的每个分量是i.i.d的正态分布。
根据正态分布的性质,对\( \vec{g} \) 的坐标进行正交变换后,在新坐标下,每个坐标仍然是i.i.d的正态分布 (见[2])
因此我们构造出一个特殊的正交变换使得\( \vec{g} \) 变换之后有一个坐标系和\( \vec{p} \)同一个方向,
因此可以把\( \vec{g} \) 表示为\( (g’_1, g’_2, \ldots, g’_k) \),并且
\( \vec{g^p} = (g’_1, g’_2, \ldots, g’_{k-1}, 0) \)。
因此\( \chi^2 = \sum_{i=1}^{k-1} (g’_i)^2 = \chi^2_{k-1} \)。

以上四个步骤可以从理论上证明卡方检验。另外一种思路是把似然检验(G-test)和卡方检验联系起来:
$$ \begin{align} G
&= 2 \sum_i O_i \log(\frac{O_i}{E_i}) \\
&= 2 \sum_i O_i \log(1 + \frac{O_i – E_i}{E_i}) \\
&\sim 2 \sum_i O_i \frac{O_i – E_i}{E_i} \\
&= 2 \sum_i \frac{O_i^2 – E_i * O_i}{E_i}\\
&= 2 \sum_i \frac{O_i^2 – 2 * E_i * O_i + E_i^2}{E_i}\\
&= 2 \sum_i \frac{(O_i – E_i)^2} {E_i}
\end{align}
$$
上面的计算中用到了\( \log(1+x) \sim x \) 和 \( \sum_i O_i = \sum_i E_i \)。
可见两种检验基本上是等价的(上面推导来自[3],但更简洁)。

然而,似然检验和卡方检验相比,似然检验需要计算对数,在皮尔森的年代,这是很不方便的。
卡方检验则便于手算,这或许是得到广泛应用的原因之一吧。

[1]Pearson’s Theorem http://ocw.mit.edu/courses/mathematics/18-443-statistics-for-applications-fall-2003/lecture-notes/lec23.pdf
[2]Orthogonal Transformation of Standard Normal Sample http://ocw.mit.edu/courses/mathematics/18-443-statistics-for-applications-fall-2003/lecture-notes/lec15.pdf
[3]The Two-Way Likelihood Ratio (G) Test http://arxiv.org/pdf/1206.4881v2.pdf