R - 卡方检验
R - 卡方独立性检验
Section titled “R - 卡方独立性检验”卡方(χ²)独立性检验是一种统计假设检验,用于确定两个分类变量之间是否存在显著关联。例如,你可以用它来检验一个人的冰淇淋口味(一个分类变量)与他们的性别(另一个分类变量)之间是否存在关系。这些变量应来源于同一总体。
该检验通过比较列联表中的观测频率(observed frequencies)与在变量之间没有关联时所期望的频率(expected frequencies)来工作。
核心函数是 chisq.test()。它通常应用于列联表(一个矩阵或表格对象)。
chisq.test(table_object)table_object:一个包含分类变量频率计数的列联表。
示例:汽车类型和安全气囊
Section titled “示例:汽车类型和安全气囊”我们将使用内置的 Cars93 数据集(来自 MASS 包)来调查汽车的类型(例如,紧凑型、运动型)与其安全气囊类型之间是否存在关系。
假设:
- 零假设(H₀):汽车类型和安全气囊之间没有关联(它们是独立的)。
- 备择假设(H₁):汽车类型和安全气囊之间存在关联(它们是相关的)。
# 加载用于数据集的 MASS 包library(MASS)
# 1. 创建观测频率的列联表# 我们为此使用 table() 函数。car_table <- table(Cars93$Type, Cars93$AirBags)
# 打印表格以查看观测计数print(car_table)
# 2. 执行卡方检验chi_test_result <- chisq.test(car_table)
# 打印完整的测试结果print(chi_test_result)执行代码会产生以下输出:
# 列联表 Driver & Passenger Driver only None Compact 2 9 5 Large 4 7 0 Midsize 7 11 4 Small 0 5 16 Sporty 3 8 3 Van 0 3 6
# 检验结果 Pearson's Chi-squared test
data: car_tableX-squared = 33.001, df = 10, p-value = 0.0002723
Warning message:In chisq.test(car_table) : Chi-squared approximation may be incorrect- X-squared = 33.001:这是检验统计量。值越大表示观测频率与期望频率之间的差异越大。
- df = 10:自由度,计算方法为
(行数 - 1) * (列数 - 1)=(6 - 1) * (3 - 1)= 10。 - p-value = 0.0002723:这是在零假设为真时,观察到如此极端(或更极端)的检验统计量 33.001 的概率。由于这个 p 值非常小(通常小于 0.05 的显著性水平),我们拒绝零假设。我们得出结论,汽车类型及其安全气囊配置之间存在统计上显著的关联。
最佳实践:处理低计数警告
Section titled “最佳实践:处理低计数警告”当表格中某些单元格的期望计数较低时(常见规则是任何期望计数小于 5),会出现警告 Chi-squared approximation may be incorrect。卡方检验依赖于近似,在小样本情况下准确性较低。你可以这样查看期望计数:
# 检查期望频率print(chi_test_result$expected)当你看到这个警告时,你有两种更好的替代方案:
- 费舍尔精确检验(Fisher’s Exact Test):它计算精确的 p 值,适用于小样本量。语法非常相似。
- 蒙特卡罗模拟(Monte Carlo Simulation):你可以指示
chisq.test模拟 p 值,这在低计数情况下也更可靠。
# 替代方案 1:费舍尔精确检验(推荐用于小表格)fisher.test(car_table)
# 替代方案 2:使用模拟 p 值的卡方检验chisq.test(car_table, simulate.p.value = TRUE, B = 10000) # B 是模拟次数