卡方检验(Chi-Square Test)

卡方检验是一种用于检验分类变量之间关联关系的统计方法,常用于检验实际观测频数与理论频数之间的差异。该方法在社会科学、医学、遗传学等领域应用广泛。

一、起源

卡方检验由英国统计学家卡尔·皮尔逊(Karl Pearson)于1900年提出。皮尔逊在研究生物统计学时,发现传统的统计方法难以处理分类数据,因此提出了卡方检验,以评估观测数据与预期数据之间的差异。

二、原理

卡方检验基于样本频数与期望频数之间的差异,通过计算卡方统计量来判断两个变量是否独立。卡方统计量的计算公式如下:

χ2=∑(Oi−Ei)2Ei\chi^2 = \sum \frac{(O_i - E_i)^2}{E_i}χ2=Ei(OiEi)2

其中:

  • OiO_iOi 为观测频数。
  • EiE_iEi 为期望频数。

卡方统计量服从卡方分布,其自由度为(r−1)(c−1)(r-1)(c-1)(r1)(c1),其中 rrr 为行数,ccc 为列数。

三、步骤

  1. 数据准备:收集分类变量的数据,构建列联表。
  2. 计算期望频数:根据行和列的边际总和计算期望频数。
  3. 计算卡方统计量:根据公式计算卡方统计量。
  4. 确定显著性水平:根据卡方分布表确定显著性水平,比较卡方统计量与临界值。

四、应用场景

卡方检验广泛应用于各个领域,特别是在以下情况下:

  • 评估两个分类变量之间的独立性。
  • 检验样本分布与理论分布的适配度。
  • 分析不同组间的差异,如药物实验中的治疗效果比较。

五、案例分析

假设我们有一组数据,包含不同性别和是否喜欢某种饮料的人数。我们希望通过卡方检验来评估性别与饮料偏好之间是否有显著关系。数据如下:

性别  喜欢  不喜欢
男    30   20
女    25   25
  1. 数据准备

    性别  喜欢  不喜欢
    男    30   20
    女    25   25
    
  2. 计算期望频数

    期望频数计算公式为:

    Eij=(row_totali×col_totalj)grand_totalE_{ij} = \frac{(row\_total_i \times col\_total_j)}{grand\_total}Eij=grand_total(row_totali×col_totalj)

    喜欢:((55 * 50) / 100) = 27.5
    不喜欢:((55 * 50) / 100) = 22.5
    
  3. 计算卡方统计量

    χ2=∑(Oi−Ei)2Ei\chi^2 = \sum \frac{(O_i - E_i)^2}{E_i}χ2=Ei(OiEi)2

    χ2=(30−27.5)227.5+(20−22.5)222.5+(25−27.5)227.5+(25−22.5)222.5=0.91\chi^2 = \frac{(30 - 27.5)^2}{27.5} + \frac{(20 - 22.5)^2}{22.5} + \frac{(25 - 27.5)^2}{27.5} + \frac{(25 - 22.5)^2}{22.5} = 0.91χ2=27.5(3027.5)2+22.5(2022.5)2+27.5(2527.5)2+22.5(2522.5)2=0.91

  4. 确定显著性水平

    自由度为1,查表得知在0.05显著性水平下的临界值为3.841,由于0.91 < 3.841,因此我们不能拒绝原假设,即性别与饮料偏好之间无显著关系。

六、Python代码示例

使用Python进行卡方检验,可以使用scipy库中的chi2_contingency函数:

import numpy as np
from scipy.stats import chi2_contingency

# 数据准备
data = np.array([[30, 20], [25, 25]])

# 计算卡方检验
chi2, p, dof, expected = chi2_contingency(data)

print(f"卡方统计量: {chi2}")
print(f"p值: {p}")
print(f"自由度: {dof}")
print(f"期望频数: {expected}")

七、R代码示例

使用R进行卡方检验,可以使用chisq.test函数:

# 数据准备
data <- matrix(c(30, 20, 25, 25), nrow = 2, byrow = TRUE)

# 计算卡方检验
result <- chisq.test(data)

print(paste("卡方统计量:", result$statistic))
print(paste("p值:", result$p.value))
print(paste("自由度:", result$parameter))
print("期望频数:")
print(result$expected)

八、注意事项

  • 卡方检验适用于频数数据,样本量较小时可能不适用。
  • 每个单元格的期望频数应大于5,若小于5,建议合并分类或使用费舍尔精确检验。
  • 卡方检验只适用于独立样本,不适用于配对样本或重复测量数据。

九、总结

卡方检验是一种灵活且有效的统计方法,特别适用于分析分类变量之间的关系。通过卡方检验,研究者可以评估分类变量之间的独立性和差异性,为社会科学、医学和其他领域的研究提供重要支持。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐