卡方介绍
卡方检验是针对自变量和因变量都是分类数据,也就是说带有属性的数据;而单因素方差分析是自变量是分类数据,因变量是连续型的数据。还有一点:方差分析是参数检验,而卡方检验是属于非参数检验。
卡方检验是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小:卡方值越大,偏差越大,越趋于不符合;卡方值越小,偏差越小,越趋于符合,若两个值完全相等时,卡方值就为0,表明理论值完全符合。
案例介绍
本次实验是研究聚类结果和标签DR的关系,即检验我们的聚类有没有意义。标签是0、1区分,聚类是0、1、2区分的
首先我们需要检查他们的交叉表,即
然后我们通过这个表看不出聚类结果的簇间患病差异性大小,因此采用卡方检验,首先做出假设:
然后计算理论值:
示例:比如cluster0&DR=0的理论值是:sum(cluster0)*sum(DR=0)/总数
然后通过卡方的公式:
A是实际值,T是理论值,
再计算卡方的 自由度 v:
v=(行数-1)(列数-1)=(2-1)(3-1) = 2
最后根据计算结果查表即可。
卡方临界值 为 (一般取 p=0.05),因此对应表中的结果是5.99,我们的程序结果:
22.6>5.99,因此拒绝0假设,即两个因素之间存在联系。
python实现
程序示例如下:
# -*- encoding: utf-8 -*-
"""
@Modify Time 2021/6/26 15:44
@Author Tunan
@Filename test1.py
@Desciption
"""
from scipy.stats import chi2_contingency
class CHISQUARE:
def __init__(self, d0, d1):
self.d0 = d0
self.d1 = d1
def get_tabel(self):
dd0 =