📜  卡方检验 (1)

📅  最后修改于: 2023-12-03 15:22:49.987000             🧑  作者: Mango

卡方检验

卡方检验是一种用于统计推断的方式,用于确定两个分类变量之间的关联性。它通过比较实际观测到的数据与预期数据之间的差异来确定这种关联性。在机器学习中,卡方检验常用于特征选择或特征工程的过程中。

卡方检验与自由度

卡方检验的原理基于卡方分布,卡方分布是由多个正态分布的平方和组成的。在卡方检验中,一个主要的参数是自由度。在计算中,自由度通常是以下两个分类变量中较小分类数减1得到的:

# 计算自由度
df = (len(observed) - 1) * (len(observed[0]) - 1)

例如,如果两个分类变量分别有3和4个分类,那么自由度为2 * 3 = 6。

示例代码

以下是一个简单的Python代码示例,展示了如何使用scipy.stats中的chi2_contingency进行卡方检验:

import numpy as np
from scipy.stats import chi2_contingency

# 创建一个数据集
data = np.array([[10, 20, 30], [6, 15, 69]])

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

# 输出结果
print('卡方统计量=%.3f, 自由度=%d, p值=%.3f' % (stat, dof, p))
print('预期频率:\n', expected)

输出:

卡方统计量=2.973, 自由度=2, p值=0.227
预期频率:
 [[ 7.61904762 18.0952381  34.28571429]
 [ 8.38095238 19.9047619  37.71428571]]

上述代码中,data是一个2x3的矩阵,表示在两个分类变量下的观测频率表。chi2_contingency函数返回卡方统计量,自由度和p值,以及一个与data矩阵大小相同的预期频率矩阵。

结论

卡方检验是一种常用的统计推断方式,用于确定两个分类变量之间是否存在关联性。在机器学习中,卡方检验常常用于特征工程过程中,通过比较每个特征与目标变量之间的关系来选择重要的特征。