1.什么是卡方检验
卡方检验是一种用途很广的假设检验方法,属于非参数检验的范畴。
主要是比较两个或两个以上样本率以及两个分类变量的关联性分析。
根本思想是在于比较理论频次与实际频次的吻合程度或拟合优度问题。
分子代表了实际值与期望值的偏差,而分母则是标准化过程。因此卡方的值越小,表示观测值与期望值(理论值) 越接近,说明两个变量之间越符合卡方分布。而卡方分布的前提是变量之间相互独立,因此卡方值越小,越表示两个变量之间独立。
我们以经典的四格表为例,看看卡方检验的基本流程
1.建立假设检验,原假设一般都是变量之间相互独立。
2.计算期望频次。
3.代入卡方统计公式计算卡方值。
4.计算自由度。
5.查表,比较卡方值或者P值或者α \alphaα值。
————————————————
通过上表可以看出来,自由度为1,显著性水平为0.05,当卡方值<3.84的时候,可以接受原假设,即变量之间没有相关性。卡方值越小,不相关的概率越大。现在卡方值远大于3.84,说明两者不相关的概率很小,即抽烟与肺癌有关。
5.P-value
P值,也就是常见到的 P-value。P 值是一种概率,指的是在 H0 假设为真的前提下,样本结果出现的概率。如果 P-value 很小,则说明在原假设为真的前提下,样本结果出现的概率很小,甚至很极端,这就反过来说明了原假设很大概率是错误的。通常,会设置一个显著性水平(significance level)α \alphaα与 P-value 进行比较。如果P − v a l u e < α P-value < \alphaP−value<α ,则说明在显著性水平 α \alphaα 下拒绝原假设。
————————————————
举例说明:
研究职业与咖啡口味的关系时,如果关心的是职业与咖啡是否有关系,则应进行独立性检验。随机抽取一个人群样本后,将职业和咖啡口味分为不同的组,形成列联表进行检验。
研究是不同职业组对不同咖啡口味的要求是否一致,则应进行一致性检验。在不同职业组中进行抽样。把每一个职业组作为一个类别,检验在不同咖啡口味上的分布是否一致。
卡方检验 (Chi-square test / Chi-square goodness-of-fit test)_dqhl1990的博客-CSDN博客
Python卡方检验实现
一、引言
卡方检验是用于检验两种变量之间是否存在关联的一种统计方法。它可以判断两个变量之间的关系是否是随机的。卡方检验在很多领域都有着广泛的应用,如医学、社会科学、经济学和生物学等领域。在Python中,使用scipy库中的stats模块就可以很方便地实现卡方检验。
二、原理
卡方检验用于检验两个分类变量之间是否存在关联。其原理在于,假设两个变量之间没有关联,则预期的频数可以通过行总计与列总计的比例来计算。如果观测值与预期值有较大的偏差,则可以认为两个变量之间存在关联。卡方检验的计算公式如下:
def chi_square(observed, expected): return np.sum(np.power(observed - expected, 2) / expected)
其中,observed为实际观测频数,expected为预期频数。
三、实现
1. 导入依赖库
import numpy as np from scipy.stats import chi2_contingency
导入一个numpy库作为计算的基础,以及调用scipy.stats库下的卡方检验函数。
2. 使用numpy生成模拟数据
data = np.array([[10, 20, 30], [20, 30, 40], [30, 40, 50]])
这里使用numpy生成了一个3 x 3的矩阵,每个元素代表两个分类变量之间的观测频数。
3. 计算卡方检验结果
stat, p, dof, expected = chi2_contingency(data) print('stat=%.3f, p=%.3f, dof=%d' % (stat, p, dof)) print(expected)
chi2_contingency函数将生成的数据传递到API中进行计算。计算结果中,在截尾的情况下,p值越小,说明两个变量之间越有可能存在关联。在这里也打印输出了期望频数。
4. 结语
上述就是Python中通过scipy库实现卡方检验的方法。卡方检验是一种非常重要的统计方法,在分析数据时经常用到,也非常基础。了解和掌握此方法对数据分析师和数据科学家都是非常有帮助的。