卡方检验(Chi-square test)主要用于处理分类变量(categorical variables),适用于以下几种情况:
1. 两个分类变量的独立性检验
即检验两个分类变量是否相互独立。常用于确定不同类别之间是否存在关联。
例子
假设你想研究不同的短信内容(变量1:A/B组)是否会影响客户的回复情况(变量2:回复/未回复)。
- 变量1:短信内容(A组、B组)
- 变量2:客户回复(回复、未回复)
可以构建如下的列联表(Contingency Table):
回复 | 未回复 | 合计 | |
---|---|---|---|
A组 | 80 | 920 | 1000 |
B组 | 150 | 850 | 1000 |
合计 | 230 | 1770 | 2000 |
卡方检验可以用来检验短信内容与客户回复之间是否有显著关系。
2. 配适度检验
用于检验观测数据与理论分布(预期分布)之间的差异程度,判断观测频数是否符合某种分布。
例子
假设你有一个理想的客户分布(理论分布),需要检验实际客户的回复是否符合这种分布。
3. 单样本卡方检验
用于检验一个分类变量的实际分布是否与预期分布相符。
卡方检验的具体实施步骤
1. 构建列联表
根据实验数据构建列联表。
2. 计算期望频数
计算每个单元格的期望频数。期望频数的计算公式为:
[ E_{ij} = \frac{(row_i\ total \times column_j\ total)}{grand\ total} ]
3. 计算卡方统计量
卡方统计量的计算公式为:
[ \chi^2 = \sum \frac{(O_{ij} - E_{ij})^2}{E_{ij}} ]
其中,( O_{ij} )是观测频数,( E_{ij} )是期望频数。
4. 确定自由度
自由度(degrees of freedom, df)的计算公式为:
[ df = (number\ of\ rows - 1) \times (number\ of\ columns - 1) ]
5. 查找卡方分布表
根据计算得到的卡方统计量和自由度,在卡方分布表中查找对应的p值。
6. 结果解读
- 如果p值小于显著性水平(如0.05),则拒绝原假设,认为两个变量之间有显著关系。
- 如果p值大于显著性水平,则无法拒绝原假设,认为两个变量之间没有显著关系。
示例代码
假设我们有上述例子的实验数据,可以使用Python进行卡方检验:
import pandas as pd
from scipy.stats import chi2_contingency
# 构建列联表
data = [[80, 920], [150, 850]]
df = pd.DataFrame(data, columns=['回复', '未回复'], index=['A组', 'B组'])
# 进行卡方检验
chi2, p, dof, expected = chi2_contingency(df)
print(f"卡方统计量:{chi2:.2f}")
print(f"p值:{p:.4f}")
print(f"自由度:{dof}")
print("期望频数:")
print(expected)
结果解读
- 卡方统计量(chi2):反映观测数据与期望数据的偏差程度。
- p值(p-value):用于判断是否拒绝原假设(一般选择0.05作为显著性水平)。
- 自由度(dof):决定卡方分布的形状。
- 期望频数(expected):用于计算卡方统计量的中间值。
通过以上步骤和示例,可以确定在何种情况下使用卡方检验,以及如何实施和解读卡方检验的结果。