卡方检验实际上就是个“猜谜”游戏,心里想的是:这两个变量混在一起,到底有没有混账的规律?我们按着步骤去解这个谜。 起初,你得把手里的表格摆平,然后把那些零碎的格子给凑紧。

为啥要把格子凑紧?出于卡方检验最厌恶“留白”。

要是一个格子填了 0,那它就不代表啥了,没法代表一个“事件”的成功或黄了,故此你得把它合并到一个相邻的格子里,否则它就是个空的无意义空间。

比如你看到第一行第一列是 10,第二行第一列是 5,第二行第二列是 20,第三行第二列是 15,这时候你就得仔细看看能不能合并。

要是第一行第一列和第二行第二列能凑成一样大的块,并且它们的总和刚好等于总样本数 n,那就能够合并。

要是你发现某一行加起来比总样本还少,要么某一列加起来比总样本还少,那得赶紧把能凑的凑,凑不成的也别硬凑,否则整个检验的基础就塌了。

只有当所有行和列的总和都稳稳地等于 n 时,你的表格才算好了。 你得算出每个格子里的理论次数,也就是你猜的“应当有多少”。

如何猜?你拿第一行的总和非零格子的总数,除以总样本数,再乘以这个格子原本有多少,就如此好办。公式就是 $E_{ij} = frac{(sum E_{i+}) times (sum E_{+j})}{n}$,但这中间逻辑得理顺。

比如你总共有 100 个样本,第一行有 25 个非零格子,那第一行的预期分布就是 $25/100 = 0.25$。再比如第二列有 15 个非零格子,那这一列的预期分布就是 $15/100 = 0.15$。拿着这两个系数去乘上格子原本的实际数量,就是那个格子的理论值了。

这一步实际上挺像把骰子按在骰子板上,你知道各个面能不能出现,也知道哪些面重合了,把重合的局部算出来,除以总数乘以实际点数,就能拿到理论上的分布。 然后,比较直觉和理论。别被那些漂亮的数学符号绕晕了,咱们直接看数字。把每个格子的实际观察值 $O_{ij}$ 和理论值 $E_{ij}$ 放在一起对比,算出它们的差值 $O - E$,千万别乱搞绝对值,差值本身就有正负,正负代表方向。

接着,把每个格子的差值的平方 ($O-E)^2$ 加起来,别忘了除以 $(O-E)$ 的立方,这是为了消除量纲的影响,让不同大小的样本也能公平比较。

这一步算出来,就是卡方统计量 $chi^2$。

最终,拿这个算出来的 $chi^2$,去查那个长条图,就是那里面的 p 值。 举个例子,你有个 2x2 的表格,第一行是 {'10', '15'},第二行是 {'12', '20'},总样本数 n=57。

第一列总和是 22,第二列是 35,加起来 57,没难题。

第一行总和 25,第二行总和 32,加起来 57,也没难题。 目前计算第一格的理论值 $E_1 = (25 times 35) / 57 approx 15.68$。实际值 $O_1 = 10$,差值 $-5.68$,平方是 32.26,除以 15.68 大约是 2.05。 第二格的理论值 $E_2 = (25 times 35) / 57 approx 15.68$(出于只有一列非零),实际值 $O_2 = 15$,差值 $-0.68$,平方是 0.46,除以 15.68 大约是 0.03。 第三格的理论值 $E_3 = (22 times 35) / 57 approx 13.32$,实际值 $O_3 = 12$,差值 $-1.32$,平方是 1.74,除以 13.32 大约是 0.13。 第四个格子的理论值 $E_4 = (22 times 35) / 57 approx 13.32$,实际值 $O_4 = 20$,差值 $6.68$,平方是 44.62,除以 13.32 大约是 3.36。 加总一下,$chi^2 approx 2.05 + 0.03 + 0.13 + 3.36 = 5.57$。 最终查表,自由度 df = (行 - 1) (列 - 1) = 1 1 = 1。自由度为 1 时,$chi^2 = 5.57$ 对应的 p 值大约就在 0.01 到 0.02 之间。

这意味着要是是随机分配的,拿到如此差的结局的概率挺小,联合效应确实存有。 实际上卡方检验那个绿色的曲线图,就是那个长条图,它告诉你的是:当你由大量数据堆砌出来的时候,抽出来的抽样分布是不是能覆盖到全图。

要是 p 值挺小,说明你的数据确实超出了随机程度那么大的范围,那就要小心了。

要是只是偶然碰巧,那 p 值就会挺大,你就应当信任数据只是随机的。

故此卡方检验别看像个猜谜游戏,但只要把格子凑齐、把理论算准、把实际和理论掰扯清楚,那个 p 值自然就出来了。