【Python】卡方检验

这篇具有很好参考价值的文章主要介绍了【Python】卡方检验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Python】卡方检验

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

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

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

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

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

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

  • 基本的卡方检验:stats.chi2_contingency(data,correction=False)

  • 使用Yates校正的卡方检验:stats.chi2_contingency(data,correction=True)

  • Fisher确切概率法:stats.fisher_exact(data,alternative='two-sided')

  • 配对卡方检验(McNemar检验):tbl.mcnemar(data)

1. 基本的卡方检验

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

【Python】卡方检验
import numpy as np
from scipy import stats

bg=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例脑血管疾病患者随机分为两组,结果如下。问两种药物治疗脑血管疾病的有效率是否相等。

【Python】卡方检验
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总体感染率有无差别。

【Python】卡方检验
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例可疑系统性红斑狼疮患者血清中抗核抗体进行测定,结果如下。问两种方法的检测结果有无差别。

【Python】卡方检验
import statsmodels.stats.contingency_tables as tbl

data=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的卡方分布。

【Python】卡方检验

即n个独立的标准正态随机变量的总和Y服从具有n个自由度的卡方分布。文章来源地址https://www.toymoban.com/news/detail-429755.html

import matplotlib.pyplot as plt
x1=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=1
q2=q1+x2**2 # n=2
q3=q2+x3**2 # n=3
q4=q3+x4**2 # n=4
q5=q4+x5**2 # n=5
q6=q5+x6**2 # n=6

fig,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")
【Python】卡方检验

到了这里,关于【Python】卡方检验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 正态分布,二维正态分布,卡方分布,学生t分布——概率分布学习 python

    目录 基本概念 概率密度函数(PDF: Probability Density Function) 累积分布函数(CDF: Cumulative Distribution Function) 核密度估计((kernel density estimation) 1.正态分布 概率密度函数(pdf) 正态分布累积分布函数(CDF) 正态分布核密度估计(kde) 正态分布四则运算 二维正态分布(逐渐补充) 马

    2024年02月03日
    浏览(45)
  • python统计(二)假设检验

    DescrStatsW.ztest_mean() statsmodels.stats.weightstats.DescrStatsW.ztest_mean(value=0, alternative=\\\'two-sided\\\') 参数 说明 value 假设的均值 alternative 备择假设的形式,可选值:‘two-sided’, ‘larger’, ‘smaller’ weightstats.ztest() statsmodels.stats.weightstats.ztest(x1, x2=None, value=0, alternative=\\\'two-sided\\\') 参数 说明

    2023年04月09日
    浏览(39)
  • Python快速检验数据分布

    假设检验的前提是确定数据的分布,本文介绍Python检验数据样本是否服从一定分布。使用方法是柯尔莫可洛夫-斯米洛夫检验(Kolmogorov–Smirnov test,K-S test),K-S检验方法适用于探索连续型随机变量的分布,对于离散分布(二项分布和泊松分布)需要使用其他方法进行检验。

    2024年02月11日
    浏览(45)
  • 利用Python进行调查问卷的信度检验和效度检验,并对量表进行因子分析

    关于问卷是否需要进行问卷信效度检验,前提时你的问卷含有量表题,量表题有两种量表:李克特量表和瑟斯顿量表 ,并且只有量表题才参与信效度检验。所以,信效度检验前需要对量表每一个选项的得分数据放到独立的一列数据中。如下图所示(Excel表) 我们说量表的信度

    2024年02月06日
    浏览(47)
  • 【Python】单样本、独立样本、配对样本的t检验

    t检验通常分为三种,分别是单样本t检验、两独立样本t检验和配对样本t检验。 python中经常使用scipy模块中的t检验相关函数进行t检验。 单样本t检验使用 ttest_1samp() 函数。 独立样本t检验使用 ttest_ind() 函数。 配对样本t检验使用 ttest_rel() 函数。 单样本t检验用于,在已知总体均

    2024年02月05日
    浏览(45)
  • Java开发者的Python快速进修指南:掌握T检验

    T检验是一种用于比较两个独立样本均值差异的统计方法。它通过计算T值和P值来判断样本之间是否存在显著性差异。通常情况下,我们会有两组数据,例如一组实验组和一组对照组。 T检验的原假设是两组样本的均值相等,备假设是两组样本的均值不相等。T检验会计算一个

    2024年03月09日
    浏览(67)
  • 相关分析——皮尔逊相关系数、t显著性检验及Python实现

    (1)衡量事物之间或称变量之间线性相关程度的强弱,并用适当的统计指标表示出来的过程。 (2)比如家庭收入和支出、一个人所受教育程度与其收入、子女身高和父母身高的相关性。 (1)衡量变量之间相关程度的一个量值。 (2)相关系数r的数值范围是在-1到+1之间。 (

    2024年02月03日
    浏览(56)
  • 理论:(1)卡方分布、非中心卡方分布详解 (概念、求阈值方法、非中心化参数求解办法等)

    //======================================================================// GNSS/INS紧组合导航系统完好性监测(理论和c++代码)专栏,后续会开源全部代码 https://blog.csdn.net/hltt3838/category_12207970.html?spm=1001.2014.3001.5482 //======================================================================// 一、相关概念 1、卡方

    2024年02月01日
    浏览(48)
  • 配对卡方分析

    某医院用两种不同方法对53例肺癌患者进行诊断,收集到结果如下表,现在想知道两种方法的检测结果有无差别。 本案例分析的目的是比较两种方法对同一批样本的检测结果有无差别,且检测结果为二分类变量(阳性or阴性),针对这类情况,可以使用配对卡方检验进行研究

    2024年02月15日
    浏览(33)
  • 【python统计分析】stats.ttest_ind 独立样本T检验

    用法 ttest_ind 官方文档 当两总体方差相等时,即具有方差齐性,可以直接检验。 当不确定两总体方差是否相等时,应先利用levene检验,检验两总体是否具有方差齐性。如果返回结果的p值远大于0.05,那么我们认为两总体具有方差齐性。 如果两总体不具有方差齐性,需要加上参

    2024年02月16日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包