分类变量的统计推断:从拟合优度到独立性检验
卡方分布(Chi-Square Distribution)是一族只取非负值的右偏连续分布,由自由度 df 唯一确定。若 Z₁, Z₂, ..., Zₖ 是独立的标准正态变量,则:
卡方分布的均值等于自由度 df,方差等于 2df。随着自由度增大,分布逐渐对称并趋近正态分布。
卡方统计量本质上是标准化离差平方和的分布。当样本量足够大时,根据中心极限定理,观测频数与期望频数的标准化差异平方和服从卡方分布。这使得我们可以用 χ² 分布来计算 P 值,做出统计决策。
拟合优度检验(Goodness of Fit Test)用于判断观测数据的分布是否与某一理论分布相符。检验统计量为:
其中 Oᵢ 为第 i 类的观测频数,Eᵢ 为第 i 类的期望频数(基于原假设的理论分布)。自由度 df = k − 1 − m,k 为类别数,m 为从数据中估计的参数个数。
独立性检验判断两个分类变量是否相互独立。数据通常以列联表(Contingency Table)形式呈现:
| 类别 B₁ | 类别 B₂ | ... | 行合计 | |
|---|---|---|---|---|
| 类别 A₁ | O₁₁ | O₁₂ | ... | R₁ |
| 类别 A₂ | O₂₁ | O₂₂ | ... | R₂ |
| 列合计 | C₁ | C₂ | ... | N |
若变量 A 与 B 独立,则期望频数 Eᵢⱼ = (Rᵢ × Cⱼ) / N。检验统计量仍为 χ² = Σ (O−E)² / E,自由度 df = (行数−1) × (列数−1)。
卡方检验要求每个单元格的期望频数 Eᵢ 一般不小于 5。若存在期望频数过小的单元格,可合并相邻类别,或使用 Fisher 精确检验替代。
自由度反映了可以自由变化的单元格数量。对于 r × c 列联表,df = (r−1)(c−1)。计算出 χ² 统计量后,与临界值比较或计算 P 值:
产品偏好调查:检验消费者对不同口味的偏好是否符合均匀分布。
医学分类变量关联:分析吸烟与肺癌是否独立。
骰子公平性检验:验证六面骰各面出现概率是否均为 1/6。
基因型分布检验:判断实验群体的基因型是否符合孟德尔遗传定律。
拟合优度:若 H₀ 为均匀分布,Eᵢ = N / k;若为其他比例,Eᵢ = N × pᵢ。
独立性检验:Eᵢⱼ = (第 i 行合计 × 第 j 列合计) / 总样本量 N。
常用临界值(α = 0.05):
| df | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| χ²₀.₀₅ | 3.84 | 5.99 | 7.81 | 9.49 | 11.07 | 12.59 |
计算出的 χ² 大于临界值即拒绝 H₀。实际应用中更常用软件直接输出 P 值。
一枚六面骰投掷 120 次,各面出现次数为:18, 22, 17, 25, 20, 18。在 α = 0.05 下检验骰子是否公平。
H₀:骰子公平,每面概率 p = 1/6;H₁:骰子不公平。
期望频数 Eᵢ = 120 / 6 = 20(每类相同)。
χ² = (18−20)²/20 + (22−20)²/20 + (17−20)²/20 + (25−20)²/20 + (20−20)²/20 + (18−20)²/20
= 4/20 + 4/20 + 9/20 + 25/20 + 0 + 4/20 = 46/20 = 2.30。
df = 6 − 1 = 5,查表得 χ²₀.₀₅(5) = 11.07。
调查 200 名用户对两款产品 A 和 B 的偏好,按性别分类如下表。检验性别与产品偏好是否独立(α = 0.05)。
| 偏好 A | 偏好 B | 合计 | |
|---|---|---|---|
| 男性 | 55 | 45 | 100 |
| 女性 | 35 | 65 | 100 |
| 合计 | 90 | 110 | 200 |
H₀:性别与偏好独立;H₁:两者有关联。
期望频数:
E₁₁ = (100×90)/200 = 45,E₁₂ = (100×110)/200 = 55
E₂₁ = (100×90)/200 = 45,E₂₂ = (100×110)/200 = 55
χ² = (55−45)²/45 + (45−55)²/55 + (35−45)²/45 + (65−55)²/55
= 100/45 + 100/55 + 100/45 + 100/55 ≈ 2.22 + 1.82 + 2.22 + 1.82 = 8.08。
df = (2−1)(2−1) = 1,χ²₀.₀₅(1) = 3.84。
某医院研究某种治疗方案对不同年龄段患者的疗效,数据如下。检验疗效与年龄是否独立(α = 0.05)。
| 有效 | 无效 | 合计 | |
|---|---|---|---|
| 青年 | 40 | 10 | 50 |
| 中年 | 35 | 15 | 50 |
| 老年 | 25 | 25 | 50 |
| 合计 | 100 | 50 | 150 |
H₀:疗效与年龄独立;H₁:有关联。
期望频数 Eᵢⱼ = (行合计 × 列合计) / 150:
E₁₁ = 50×100/150 = 33.33,E₁₂ = 50×50/150 = 16.67
E₂₁ = 33.33,E₂₂ = 16.67,E₃₁ = 33.33,E₃₂ = 16.67
χ² = (40−33.33)²/33.33 + (10−16.67)²/16.67 + (35−33.33)²/33.33 + (15−16.67)²/16.67 + (25−33.33)²/33.33 + (25−16.67)²/16.67
≈ 1.33 + 2.67 + 0.08 + 0.17 + 2.08 + 4.17 = 10.50。
df = (3−1)(2−1) = 2,χ²₀.₀₅(2) = 5.99。
根据孟德尔遗传定律,某植物的三种基因型 AA、Aa、aa 的理论比例应为 1:2:1。现观察 200 株,计数分别为 45、105、50。检验实际分布是否符合理论比例(α = 0.05)。
H₀:比例为 1:2:1,即 p(AA)=0.25, p(Aa)=0.50, p(aa)=0.25。
期望频数:E₁ = 200×0.25 = 50,E₂ = 200×0.50 = 100,E₃ = 200×0.25 = 50。
χ² = (45−50)²/50 + (105−100)²/100 + (50−50)²/50 = 25/50 + 25/100 + 0 = 0.50 + 0.25 = 0.75。
df = 3 − 1 = 2,χ²₀.₀₅(2) = 5.99。
MATLAB 的统计工具箱提供了 chi2gof 和 crosstab 函数,可快速完成卡方检验。以下代码分别演示拟合优度检验、独立性检验以及卡方分布可视化。
运行结果:
chi2gof 可进行更复杂的分布拟合检验(如正态性检验),crosstab 直接返回列联表与卡方统计量。chi2pdf 和 chi2cdf 分别用于计算卡方分布的 PDF 和 CDF,是构建自定义检验的基础。