卡方独立性检验|卡方拟合性检验

article/2025/8/19 0:51:32

目录

1.独立性检验 

 2.卡方拟合性检验

3.自定义卡方检验

4.P值是什么

5.原假设/备择假设


1.独立性检验 

“独立性检验”验证从两个变量抽出的配对观察值组是否互相独立(例如:每次都从A国和B国各抽一个人,看他们的反应是否与国籍无关)。

独立性检验主要用于两个或两个以上因素多项分类的计数资料分析,也就是研究两类变量之间的关联性和依存性问题。如果两变量无关联即相互独立,说明对于其中一个变量而言,另一变量多项分类次数上的变化是在无差范围之内;如果两变量有关联即不独立,说明二者之间有交互作用存在。

独立性检验一般采用列联表的形式记录观察数据, 列联表是由两个以上的变量进行交叉分类的频数分布表,是用于提供基本调查结果的最常用形式,可以清楚地表示定类变量之间是否相互关联。又可具体分为:

  • 四格表的独立性检验:又称为2*2列联表的卡方检验。四格表资料的独立性检验用于进行两个率或两个构成比的比较,是列联表的一种最简单的形式。
  • 行x列表资料的独立性检验:又称为RxC列联表的卡方检验。行x列表资料的独立性检验用于多个率或多个构成比的比较

理论频数表

'''
(1)假设检验重要知识
H0:A与B相互独立  H1:A与B不相互独立
若卡方值大于临界值,拒绝原假设,表示A与B不相互独立,A与B相关
函数中re返回为1表示拒绝原假设,0表示接受原假设
'''
def chi2_independence(alpha, data):chis, p_value, dof, expctd = chi2_contingency(data)if dof == 0:print('自由度应该大于等于1')elif dof == 1:cv = chi2.isf(alpha * 0.5, dof)else:cv = chi2.isf(alpha * 0.5, dof-1)if chis > cv:re = 1  # 表示拒绝原假设else:re = 0  # 表示接受原假设return chis, p_value, dof, re, expctdalpha = 0.05  # 置信度,常用0.01,0.05,用于确定拒绝域的临界值
data = np.array([[178,272],[38,502]])
chis, p_value, dof, re, expctd = chi2_independence(alpha, data)
print('卡方值:',chis)
print('P值:',p_value)
print('自由度:',dof)
print('判读变量:',re)
print('原数据数组同维度的对应理论值:',expctd)
卡方值: 150.2623232486362
P值: 1.5192261812214016e-34
自由度: 1
判读变量: 1
原数据数组同维度的对应理论值: [[ 98.18181818 351.81818182][117.81818182 422.18181818]]

 2.卡方拟合性检验

2.1 定义

卡方检验能检验单个多项分类名义型变量各分类间的实际观测次数与理论次数之间是否一致的问题,这里的观测次数是根据样本数据得多的实计数,理论次数则是根据理论或经验得到的期望次数。这一类检验称为拟合性检验。其自由度通常为分类数减去1,理论次数通常根据某种经验或理论。

总而言之,卡方拟合度检验用于判断不同类型结果的比例分布相对于一个期望分布的拟合程度

2.2 应用条件

卡方拟合性检验适用于变量为类别型变量的情况。 例如:变量为有罪或无罪。

当每个类别中观察到的或预期的频率太小时,此检验无效。要求样本含量应大于40且每个格子中的理论频数不应小于5

2.3应用实例

随机抽取60名高一学生,问他们文理要不要分科,回答赞成的39人,反对的21人,问对分科的意见是否有显著的差异。

'''
(1)假设检验重要知识
H0:类别A与B的比例没有差异  H1:类别A与B的比例有差异
若卡方值大于临界值,拒绝原假设,表示A与B不相互独立,A与B相关
函数中re返回为1表示拒绝原假设,0表示接受原假设
'''
import numpy as np
from scipy.stats import chisquare
from scipy.stats import chi2
def chi2_fitting(data, alpha, sp=None):chis, p_value = chisquare(data, axis=sp)i, j = data.shape  # j为自由度  if j == 0:print('自由度应该大于等于1')elif j == 1:cv = chi2.isf(alpha * 0.5, j)else:cv = chi2.isf(alpha * 0.5, j - 1)if chis > cv:re = 1  # 表示拒绝原假设else:re = 0  # 表示接受原假设return chis, p_value, cv, j-1, re
data = np.array([[39, 21], ])
alpha = 0.05
chis, p_value, cv, dof, re = chi2_fitting(data, alpha)
print('卡方值:',chis)
print('P值:',p_value)
print('拒绝域临界值:',cv)
print('自由度:',dof)
print('判读变量:',re)
卡方值: 5.4
P值: 0.02013675155034633
拒绝域临界值: 5.02388618731489
自由度: 1
判读变量: 1

显然chis(卡方值)是大于cv(临界值)的,因此拒绝原假设,认为对于文理分科,学生们的态度是有显著的差异的。 

从表面上看,拟合性检验和独立性检验不论在列联表的形式上,还是在计算卡方的公式上都是相同的,所以经常被笼统地称为卡方检验。但是两者还是存在差异的。

首先,两种检验抽取样本的方法不同。如果抽样是在各类别中分别进行,依照各类别分别计算其比例,属于拟合优度检验。如果抽样时并未事先分类,抽样后根据研究内容,把入选单位按两类变量进行分类,形成列联表,则是独立性检验。

其次,两种检验假设的内容有所差异。拟合优度检验的原假设通常是假设各类别总体比例等于某个期望概率,而独立性检验中原假设则假设两个变量之间独立。

最后,期望频数的计算不同。拟合优度检验是利用原假设中的期望概率,用观察频数乘以期望概率,直接得到期望频数。独立性检验中两个水平的联合概率是两个单独概率的乘积。

 


stats.chi2.rvs()

stats.chi2.pdf()

stats.chi2.cdf()

stats.chi2.isf()

1.stats.chi2.rvs()卡方分布直方图

from scipy import stats
import seaborn as sns
import matplotlib.pyplot as plt
samples = stats.chi2.rvs(size=10000, df=1)#产生服从指定分布的随机数,chi2指定了卡方分布
sns.distplot(samples)
plt.title('$\chi^2$,df=1')#自由度为1
plt.show()

 

2.stats.chi2.pdf()概率分布密度函数  

from scipy import stats
stats.chi2.pdf(2, df=1)#概率密度函数
#上图2对应的位置是0.1037from scipy import stats
stats.chi2.pdf(1, df=1)#概率密度函数
#上图1对应的位置是0.24

3.stats.chi2.cdf()随机变量的累积分布函数,它是概率密度函数的积分(也就是x时p(X<x)的概率)。产生对应x的这种分布的累积分布函数的值。 

 

from scipy import stats
stats.chi2.cdf(1, df=1)
from scipy import stats
stats.chi2.cdf(6, df=1)

4.stats.chi2.isf(),对应上表图的值,置信度,自由度 


3.自定义卡方检验

原假设:“青少年行为”与“家庭状况”独立。
备择假设:“青少年行为”与“家庭状况”不独立。

from scipy import stats
import numpy as np
from scipy.stats import chi2_contingency
def custom_chi2_contingency(observed):# 每一行求和row = observed.sum(axis=1)# 每一列求和col = observed.sum(axis=0)# 总数求和all_sum = observed.sum()# meshgrid 生成网格x1, x2 = np.meshgrid(col, row)# 期望频数expected_count = x1 * x2 / all_sum# 统计量,即卡方值chi2 = ((observed - expected_count)**2 / expected_count).sum()# 自由度df = (len(row) - 1) * (len(col) - 1)# 计算 p 值,这里用到了卡方分布的概率积累函数,# 因为这个 cdf 是计算从左边到这点的累计积分,因此用 1 减它p = 1 - stats.chi2.cdf(chi2, df=df)return chi2, p, df, expected_count
obs = np.array([[178, 272], [38, 502]])
result1 = custom_chi2_contingency(obs)
result2 = chi2_contingency(obs)
print('自定义卡方检验的函数返回:')
print(result1,'\n')
print('scipy 提供的卡方检验返回:')
print(result2)

自定义卡方检验的函数返回: (152.16271892047084, 0.0, 1,

                                                  array([[ 98.18181818, 351.81818182], [117.81818182, 422.18181818]]))

scipy 提供的卡方检验返回: (150.2623232486362, 1.5192261812214016e-34, 1,

                                                array([[ 98.18181818, 351.81818182], [117.81818182, 422.18181818]])) 

4.P值是什么

得到“检验统计量”有个缺点,就是它是一个很“死”的数字,我们看到 152,我们只能直观感觉它很大,因为如果观察频数与理论频数大约相等,这个值应该很小,但不能量化这个值有多大。这只是统计量服从某个自由度的卡方分布的情况。

那么问题来了,如果统计量服从其它分布呢?统计量这个干巴巴的数字,你怎么知道这个这个分布取到这个统计量的概率有多大?因此还差一步,我们还必须查表。所以得到P值的过程就是帮你查表了,P值是一个概率值,它介于0 和1之间,P值是当前分布取到这个统计量的概率到当前分布极端值(指的是概率很小的极端值)这个区间的累计概率之和,即取到这个值,到比这个值更“差”的概率之和,如果P 值很大,说明统计量取当前值的概率在一个正常的范围(一般是认为设定成95%),如果P 值很小,说明这个统计量取当前值的概率也非常小。

特别说明:对于连续型随机变量来说,取到某个值的概率其实是0,因此上面才用到了对于区间取概率之和。

1.统计量=2时,累计概率之和较小0.103,也就是p值小,0.103这个概率也小,此时不合理,应拒绝原假设,接受备择假设

2.统计量=1时,这一点到极端值累计之和0.317比较大,也就是p值大,0.24这个概率取值也大,合理

p值作用:小于显著性水平,拒绝原假设,否则不能拒接原假设,小拒大接

上面所说的累积概率之和如果很小,小于一个临界值,这个临界值我们称之为“显著性水平”,用 表示,一般取α=0.05 。多说一句,这个显著性水平其实是我们在原假设成立的情况下,拒绝原假设的概率,即犯第一类错误的概率.

1-α 为置信度或置信水平,其表明了区间估计的可靠性

我们认为,在 \chi _{^2} 分布,如果一个点到右边无穷的累计积分小于“显著性水平”,我们就认为这个点以及右边所有的点的取值,都是小概率事件。

1、P值统一了假设检验的比较标准,把计算统计量的概率大小统一变成计算P值,如果这个P值小于一个预先设定好的很小的数,则拒绝原假设,如果P值大于这个预先设置好的很小的数,则说明没有充分证据拒绝原假设
2、使用P值进行假设检验的时候,会更便利。因此,使用P值进行假设检验的评判标准就只要一个,就是记住这句话“小拒大接”,即比0.05小,就拒绝“原假设”,比 0.05大,结论是“没有理由拒绝原假设”。

P>0.05 碰巧出现的可能性大于5% ,不能否定无效假设,两组差别无显著意义
P<0.05 碰巧出现的可能性小于5% ,可以否定无效假设,两组差别有显著意义
P<0.01 碰巧出现的可能性小于1% ,可以否定无效假设,两者差别有非常显著意义


5.原假设/备择假设

5.1独立性检验-青少年行为家庭状况关系-两类变量之间的关联性和依存性问题

原假设:“青少年行为”与“家庭状况”独立。
备择假设:“青少年行为”与“家庭状况”不独立

备择假设通常是研究者想收集证据予以支持的假设;原假设是研究者想收集证据予以推翻的假设。

我们把倾向于要证明的结论设置为“备择假设”,而推理是基于“原假设”成立进行的,推理得出矛盾,说明“原假设”错误,从错误的起点推出了错误的结论,因此“原假设”不成立,这就是假设检验里面说的“拒绝原假设”。

卡方检验的“原假设”一定是假设独立,“备择假设”一定是假设相关

卡方=152.15,在直方图几乎看不到,说明概率很低

概率 = 2.956796099836173e-35,几乎为0,说明在我们的假设【“青少年行为”与“家庭状况”独立】下,得到这组观测数据的概率很低很低,但它却发生了,就证明了我们的“原假设”是不正确的,即有充分证据决绝“原假设”。接受备择假设认为:“青少年行为”与“家庭状况”不独立。


5.2拟合优性检验-硬币-实际观测次数与理论次数之间是否一致

原假设:硬币均衡

备择假设:硬币不均衡

如果你想通过种种论证,证明一件事情,就要把这件事情写成“备择假设”。备择假设通常用于表达研究者自己倾向于支持的看法(这很主观),然后就是想办法收集证据拒绝原假设,以支持备择假设。一般不说接受原假设而说没有理由拒绝原假设

想要证明硬币是不均衡的,推理是基于原假设正反次数都是25次进行的,推理得到0.72<3.8,拒绝原假设,接受备择假设,硬币不均衡

参考资料

https://www.cnblogs.com/Yuanjing-Liu/articles/9252844.html

https://www.jianshu.com/p/154673042ba5

 


http://chatgpt.dhexx.cn/article/6JG6tLOg.shtml

相关文章

[18调剂]中科院信工所·哈工程联合实验室2018年招收硕士生

点击文末的阅读原文或者公众号界面左下角的调剂信息是计算机/软件等专业的所有调剂信息集合&#xff0c;会一直更新的。 “中科院信工所 哈工程联合实验室”由信工所和哈工程于2017年3月共同围绕国家信息安全重大战略需求而组建&#xff0c;7月8日正式揭牌&#xff08;http://…

信工所复试收集材料分享

文章目录 面试问题汇总一室&#xff1a;二室三室五室 英语面试汇总综合面试汇总常见综合问题【前沿知识】 面试问题汇总 http://www.cskaoyan.com/forum.php?modviewthread&tid654445&fromuid443063 栈和堆的区别&#xff1f;&#xff1a; 1、栈由编译器自动分配释放…

中科院信工所 考研面试经验贴

转载于王道论坛&#xff0c;原文作者为&#xff1a;kxkxssz 点击原文链接&#xff0c;可进入原帖。 我们是23号面试的&#xff0c;由于这次本人的分数卡着复试线进的&#xff0c;本着要作死就往大了作的态度&#xff0c;报了个人觉得胜算最小的六室。接下来是我们的流程1.体检&…

2019年中科院信工所夏令营考核内容

二室考核分四项 心理素质测试 专业笔试 英语面试 专业面试 心理素质测试 专业笔试 45min&#xff0c;至少分了3套卷&#xff0c;10个选择题&#xff0c;是专业课知识&#xff0c;数据结构、计算机网络为主&#xff0c;没有数学&#xff1a;给出前序和中序遍历&#xff0c;求后…

信工所复试(专业面)

原文请戳2022年中科院信工所二室考研杂记__Melody&#xff5e;的博客-CSDN博客 一&#xff0c;408复习&#xff1a; 一&#xff09;计算机网络 &#xff08;见专题文章计算机网络专题__Melody&#xff5e;的博客-CSDN博客&#xff09; 二&#xff09;数据结构 1&#xff0c…

2020保研夏令营之路——武大网安、北理计算机、中科院信工所六室

2020年夏令营就这么毫无体验感地开始了。。。各个学校都变成了线上面试。不过依照往年的面经来说&#xff0c;基本没有什么变化。鉴于我本人比较菜&#xff0c;只有成绩拿得出手的那种&#xff0c;所以跟我有同样情况的学弟学妹们可以找我交流交流&#xff01; 本人情况&#…

保研夏令营记录-上交清华深研院北大信工中科院自动化所

保研夏令营记录 个人基本情况前期准备上海交通大学 &#xff08;6月1号&#xff09;清华深研院&#xff08;7月5日-10日&#xff09;北大信工(7月10日-7月13日)中科院自动化所&#xff08;7月15日-7月19日&#xff09;关于九推 注&#xff1a;此帖所涉及的夏令营全部没有机试&a…

【中科院信工所】-2021考研经验-记录一段每天都在思考如何学习的日子

今天出了录取名单&#xff0c;二战上岸&#xff0c;突然觉得综艺&#xff0c;B站都好没意思&#xff0c;也不知道该干什么&#xff0c;索性记录一下备考的这段日子&#xff0c;碎碎念可能会很多&#xff0c;想看干货可以直接点标题阅读。 目录 基本情况 初试备考 数学一&#x…

【大咖说Ⅱ】中科院信工所研究员林政:大规模预训练语言模型压缩技术

欢迎来到2022 CCF BDCI大咖说系列专题报告 听顶级专家学者围绕特定技术领域或选题&#xff0c;讲述自身成果的研究价值与实际应用价值 便于广大技术发烧友、大赛参赛者吸收学术知识&#xff0c;强化深度学习 每周一、三、五&#xff0c;「大咖说」与你相约“一碗数据汤”~ 本…

2020中科院信工所夏令营面试

中科院信工所夏令营招了很多人&#xff08;二室进群的有73个&#xff0c;大群好像二三百人&#xff09;&#xff0c;注重项目能力&#xff0c;获得重大奖项。 流程是&#xff1a;先在系统上报名->有人给你打电话&#xff0c;说让你来面试&#xff08;我的是二室&#xff09…

活动报名 | 中科院信工所陈恺:人工智能安全攻防对抗

活动议程 日期&#xff1a;2月24日&#xff08;周五&#xff09; 时间 主题10:00-10:05开场简介孟国柱 中国科学院信息工程研究所信息安全国家重点实验室副研究员&#xff0c;青源会会员10:05-10:50人工智能安全攻防对抗陈恺 中国科学院信息工程研究所研究员&#xff0c;中国科…

2021网安保研之路-----中科院信工所

2021保研之路-----中科院信工所 个人情况信工所情况介绍夏令营流程 个人情况 西安某211的2018级本科生&#xff0c;本科专业是网络空间安全&#xff0c;当时是被调剂的这个专业。到大三保研的时候才觉得网安专业保研还比较轻松&#xff0c;相对于计算机科学啥的轻松多了&#…

2019年中科院信工所复试经验帖

总述&#xff1a; 今天是4月1日愚人节&#xff0c;距离复试结束已经3天了&#xff0c;很幸运收到了信工所拟录取通知。复试成绩83.74分。因为复试刚刚结束&#xff0c;趁着自己还没忘&#xff0c;想记录一些复试经验&#xff0c;给师弟师妹们考研复试做为参考。我一志愿报的二室…

【中科院信工所】22考研经验分享

2022年4月7日&#xff0c;随着信工所拟录取的名单公布&#xff0c;我长达十四个月的考研征程终于画上了圆满的句号。回首看这一年多的征程&#xff0c;发现有很多想复盘的地方&#xff0c;在这里写出来&#xff0c;可供同行者浏览&#xff0c;后来者借鉴&#xff0c;以及多年后…

褒贬不一,中科院信工所是否值得报考?

写在前面 近年来&#xff0c;中科院发展迅猛&#xff0c;报名人数逐年增加。多数保研er对中科院了解可能仅限于中国科学院大学这所“双一流”高校&#xff0c;对中科院的诸多研究院所不甚了解&#xff0c;信息工程研究所作为中科院研究所的一员&#xff0c;近几年发展迅速&…

清北级别,补助丰厚,这样的中科院信工所你心动了吗?

1、院校介绍 中国科学院信息工程研究所是2011年批准成立的中国科学院直属科研机构。目前拥有信息安全国家重点实验室、信息内容安全技术国家工程实验室等一批国家级和省部级的科研创新平台。主要研究方向包括&#xff1a;密码理论与安全协议、信息智能处理、数据安全、通信与电…

数字图像处理习题(一)

数字图像处理习题&#xff08;一&#xff09; 文章目录 数字图像处理习题&#xff08;一&#xff09;一、简答题二、编程题1. 图像处理1.1 图像导入、裁减显示&#xff08;长宽分别为原尺寸1/2)、彩色图像灰度化、保存 2. 图像采样与量化2.2 利用求均值方法是实现4倍降采样2.3 …

图片标注问题image_caption

数据集&#xff1a; 数据集中的训练集使用的是coco train 2014&#xff0c;82783张图片&#xff0c;测试集使用的是 val 2017 &#xff0c;5000张图片,对应的caption是captions_train2014.json,和captions_val2017.json。 该文件中是以字典的形式包含其内容信息&#xff0c;key…

OpenCV —— 频率域滤波(傅里叶变换,低通和高通滤波,带通和带阻滤波,同态滤波)

频率域滤波 基本概念傅里叶变换二维离散的傅里叶变换快速傅里叶变换傅里叶幅度谱与相位谱谱残差显著性检测卷积与傅里叶变换的 频率域滤波低通滤波和高通滤波带通和带阻滤波同态滤波 基本概念 频率域滤波 —— 百度百科 频率域滤波是对图像进行傅里叶变换&#xff0c;将图像由…

基于matlab的数字图像基本处理运算

一、实验目的 &#xff08;1&#xff09;掌握线性拉伸和非线性拉伸的概念实现方法 &#xff08;2&#xff09;掌握图像代数运算的概念和实现方法 &#xff08;3&#xff09;掌握图像放大、缩小、平移、镜像、旋转原理和实现方法 &#xff08;4&#xff09;掌握最邻近插值和…