文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【Python】卡方检验

2023-09-06 18:29

关注

卡方检验是一种用途很广的计数资料的假设检验方法,属于非参数检验范畴。这种检验方法主要用于推断两个总体率之间有无差别、多个总体率之间有无差别、多个样本率之间的多重比较、两个分类变量之间有无关联性和频数分布拟合优度的检验等。

卡方检验的𝐻0是:实际频数与理论频数没有差别。该检验的基本思想是:假设𝐻0成立,基于此前提计算出𝜒2值,它表示观察值与理论值之间的偏离程度。根据𝜒2分布及自由度可以确定在𝐻0成立的情况下获得当前统计量及更极端情况下的概率P。如果P值很小,说明观察值与理论值偏离程度太大,应当拒绝𝐻0,表示资料之间有显著性差异。否则就不能拒绝𝐻0,尚不能认为样本所代表的实际情况和理论假设有差别。

在实际工作中,对于四格表资料,通常规定:

  1. 𝑛≥40且所有的𝑇≥5时,用卡方检验的基本公式;当𝑃≈𝛼时,改用四格表的Fisher确切概率法。

  1. 𝑛≥40但又1≤𝑇≤5时,用四格表资料卡方检验的校正公式。或改用四格表资料的Fisher确切概率法。

  1. 𝑛<40𝑇<1时,用四格表资料的Fisher确切概率法。

1. 基本的卡方检验

某研究者欲比较膳食干预(实验组)和普通健康教育(对照组)对糖尿病患者血糖的控制达标情况,将171例糖尿病患者随机分为两组,干预6个月后结果如下。问两组控制空腹血糖的总体达标率有无差别?

import numpy as npfrom scipy import statsbg=np.array([[30,56],[43,42]])stats.chi2_contingency(bg,correction=False)#参数correction默认为True,表示对数据进行Yates校正。

(4.309367914097781,

0.03790304243911501,

1,

array([[36.71345029, 49.28654971],

[36.28654971, 48.71345029]]))

P=0.038<0.05,可以认为膳食干预组的空腹血糖达标率高于普通健康教育组。

bg_t=np.ones((2,2))for i in [0,1]:    for j in [0,1]:        bg_t[i,j]=bg[i].sum()*bg[:,j].sum()/bg.sum()        ((bg-bg_t)**2/bg_t).sum()

2. 使用Yates校正的卡方检验

某医师欲比较胞磷胆碱与神经节苷脂治疗脑血管疾病的疗效,将78例脑血管疾病患者随机分为两组,结果如下。问两种药物治疗脑血管疾病的有效率是否相等。

data=np.array([[46,6],[18,8]])stats.chi2_contingency(data,correction=True)

(3.144810267857143,

0.07616885892288706,

1,

array([[42.66666667, 9.33333333],

[21.33333333, 4.66666667]]))

P=0.076>0.05,还不能认为两种药物治疗脑血管疾病的有效率不等。

3. Fisher确切概率法

某医师为研究乙肝免疫球蛋白预防胎儿宫内感染HBV的效果,将33例乙肝表面抗原(HBsAg)阳性孕妇随机分为预防注射组和非预防组,结果如下。问两组新生儿的HBV总体感染率有无差别。

data=np.array([[4,18],[5,6]])oddsr,p=stats.fisher_exact(data,alternative='two-sided')#参数alternative有三个值,'two-sided'表示双侧检验,'less'和'greater'表示单侧检验。# fisher_exact()返回两个值:优势比和p值。p

0.12104475057756482

P=0.121>0.05,

还不能认为预防注射与非预防组的新生儿HBV感染率不等。

4. 配对卡方检验(McNemar检验)

某实验室分别用乳胶凝集法和免疫荧光法对58例可疑系统性红斑狼疮患者血清中抗核抗体进行测定,结果如下。问两种方法的检测结果有无差别。

import statsmodels.stats.contingency_tables as tbldata=np.array([[11,12],[2,33]])result=tbl.mcnemar(data)print(result)

pvalue 0.012939453125

statistic 2.0

P=0.0129<0.05,可以认为两种方法的检测结果不同。

5. 卡方分布

卡方分布:n个独立分布(标准正态分布)的变量的平方和服从自由度为n的卡方分布。

即n个独立的标准正态随机变量的总和Y服从具有n个自由度的卡方分布。

import matplotlib.pyplot as pltx1=np.random.normal(0,1,1000000)x2=np.random.normal(0,1,1000000)x3=np.random.normal(0,1,1000000)x4=np.random.normal(0,1,1000000)x5=np.random.normal(0,1,1000000)x6=np.random.normal(0,1,1000000)q1=x1**2    # n=1q2=q1+x2**2 # n=2q3=q2+x3**2 # n=3q4=q3+x4**2 # n=4q5=q4+x5**2 # n=5q6=q5+x6**2 # n=6fig,axs=plt.subplots(2,3,figsize=(14,8))axs[0,0].hist(q1,100)axs[0,0].set_title("n=1")axs[0,1].hist(q2,100)axs[0,1].set_title("n=2")axs[0,2].hist(q3,100)axs[0,2].set_title("n=3")axs[1,0].hist(q4,100)axs[1,0].set_title("n=4")axs[1,1].hist(q5,100)axs[1,1].set_title("n=5")axs[1,2].hist(q6,100)axs[1,2].set_title("n=6")

来源地址:https://blog.csdn.net/missinghead/article/details/128765212

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯