卡方检验 (Chi-square test / Chi-square goodness-of-fit test)

article/2025/11/6 5:03:59

卡方检验 (Chi-square test / Chi-square goodness-of-fit test)


1. 什么是卡方检验

卡方检验是一种以 χ 2 \chi^2 χ2分布为基础的用途广泛的假设检验方法。是一种非参数检验方法。它的无效假设 H 0 H_0 H0为:观察频数与期望频数没有显著性差异。

2. 独立性检验 (Independence)

A test of independence assesses whether unpaired observations on two variables, expressed in a contingency table, are independent of each other

独立性检验评估的是,在一个列联表中,不成对的观测对象中的两个变量是不是相互独立的

以下面的表格为例,我们来探究喝牛奶对感冒发病率有没有影响:

实际值感冒人数未感冒人数合计感冒率
喝牛奶组439613930.94%
不喝牛奶组288411225.00%
合计7118025128.29%

2.1 期望值计算

根据无效假设 H 0 H_0 H0,我们假设喝不喝牛奶和感冒与否并没有显著性关系,则人群的感冒率为:
43 + 28 43 + 28 + 96 + 84 = 28.29 % \frac{43 + 28}{43+28+96+84} = 28.29\% 43+28+96+8443+28=28.29%
则对于上述的实验对象,我们能够得到每个格中的期望值

期望值感冒人数未感冒人数合计感冒率
喝牛奶组139 * (1-0.2829)139*0.282913928.29%
不喝牛奶组112*(1-0.2829)112*0.282911228.29%
合计7118025128.29%

卡方检验就是用来比较实际值与期望值是不是有显著性差异的。如果没有,证明控制变量(喝不喝牛奶)是不会影响因变量(感不感冒)的;有显著性差异,就证明就关系。

2.2 卡方值计算

χ 2 = ∑ ( A − E ) 2 E = ∑ i = 1 k ( A i − n p i ) 2 n p i (1) \chi^2 = \sum\frac{(A-E)^2}{E} = \sum_{i=1}^k\frac{(A_i-np_i)^2}{np_i} \tag{1} χ2=E(AE)2=i=1knpi(Ainpi)2(1)

其中, A i A_i Ai为单元格 i i i中的观察值, p i p_i pi为单元格 i i i中的在 H 0 H_0 H0假设前提下的概率, k k k为单元格数。

上例中 χ 2 = 1.077 \chi^2 = 1.077 χ2=1.077

2.3 H 0 H_0 H0假设拒绝与接受

根据得到的 χ 2 \chi^2 χ2值,还并不能直接到的p-value。因为卡方分布根据其自由度有所不同,如下图所示:

在这里插入图片描述

卡方分布的概率密度函数如下:
f ( x ; k ) = { x ( k / 2 − 1 ) e − x / 2 2 k / 2 Γ ( k 2 ) , x > 0 0 , o t h e r w i s e (2) f(x; k) = \begin{cases} \frac{x^{(k/2-1)}e^{-x/2}}{2^{k/2}\Gamma(\frac{k}{2})}, &\ x > 0\\ 0,&otherwise \end{cases}\tag{2} f(x;k)={2k/2Γ(2k)x(k/21)ex/2,0, x>0otherwise(2)
其中 k k k为自由度。

所以,首先需要计算所研究样本的自由度
k = ( R − 1 ) ( C − 1 ) (3) k = (R -1)(C-1)\tag{3} k=(R1)(C1)(3)
其中 R R R为单元格的行数, C C C为单元格的列数。
上述例子中,自由度 k = ( 2 − 1 ) ( 2 − 1 ) = 1 k = (2-1)(2-1) = 1 k=(21)(21)=1

根据所给定的自由度 k k k以及 χ 2 \chi^2 χ2值,即可计算p-value。

对于得到的p-value,与自己指定的显著性水平作比较(通常将0.05作为显著性水平),如果得到的p-value小于0.05,那我们认为样本所表现出来的结果是小概率事件,则我们有理由拒绝原假设 H 0 H_0 H0;否则,我们需要接受原假设 H 0 H_0 H0

通常情况下,也可以通过查表得形式来选择接受或者拒绝原假设。
如下表:
在这里插入图片描述
我们看到, χ 2 \chi^2 χ2分布在自由度 k = 1 k=1 k=1 p = 0.05 p=0.05 p=0.05时的取值为3.84。我们得到的 χ 2 \chi^2 χ2值1.077,小于3.84,且接近于 p = 0.3 p=0.3 p=0.3时的 χ 2 \chi^2 χ2值1.07,故不能拒绝原假设 H 0 H_0 H0


3 适合度检验 (Goodness of fit)

A test of goodness of fit establishes whether an observed frequency distribution differs from a theoretical distribution

适合度检验展示了一个观察到的频率分布是否与一个理论分布不同。

以掷骰子为例,下表为投掷120次六面骰子的实际观察值:

点数观察值
118
219
323
420
516
624

3.1 期望值

我们知道,在正常情况下,掷骰子服从二项分布 X ∼ B ( n , p ) X\sim B(n, p) XB(n,p),其数学期望 E [ X ] = n p E[X]=np E[X]=np,方差为 V a r [ X ] = n p ( 1 − p ) Var[X] = np(1-p) Var[X]=np(1p)

在进行适合度检验时,我们的原假设 H 0 H_0 H0为观察到的掷骰子结果符合理论上的二项分布(Binomial distribution)。那么,我们就能得到掷骰子的理论值如下表:

点数观察值
120
220
320
420
520
620

3.2 χ 2 \chi^2 χ2值计算

根据公式(1),我们得到
χ 2 = 2.3 \chi^2 = 2.3 χ2=2.3

3.3 自由度确定

对于适合度检验,自由度的计算按照以下公式:
k = C − M k = C - M k=CM
其中, C C C为我们观察到的类别数,此例中为6; M M M为我们要比较的理论分布的参数的个数,此例中为1;因此 k = 5 k = 5 k=5

3.4 H 0 H_0 H0假设接受与拒绝

通过根据公式(2)或者查表我们能够得到,统计量 χ 2 = 2.3 \chi^2 = 2.3 χ2=2.3所对应的p-value大约为0.8,与显著性水平0.05相差甚远,故我们应该接受原假设 H 0 H_0 H0.


http://chatgpt.dhexx.cn/article/N98ORQK1.shtml

相关文章

【零基础Eviews实例】01异方差的检验与修正

使用说明 本文档主要介绍有关线性回归模型关于异方差常见的判断方法(包括图像法、辅助回归、怀特检验三种)以及修正方式(加权最小二乘法)。使用软件为Eviews,和上一篇文章相同,此处也仅仅关注操作性的东西…

计量经济学笔记5-Eviews操作-异方差的检验与消除(White检验与加权最小二乘)

完成期末作业的同时来更一下博客 问题背景: 对中国储蓄存款总额(Y,亿元)与GDP(亿元)两个变量进行一元线性回归,检验并消除异方差。 White检验是通过一个辅助回归式进行异方差检验。用残差平方对…

stata学习笔记|异方差问题

异方差无法用OLS进行估计的根源问题:方差较大的数据包含的信息量较小,但OLS是对所有数据进行相同的处理。异方差的问题并不会影响估计量的无偏性、一致性、渐近正态性,只是效率较低使得t检验和F检验失效。 说白了就是回归出来的系数不会改变…

计量经济学及Stata应用 陈强 第七章异方差习题7.3

7.3恩格尔曲线是否存在异方差?数据集food.dta包含有关每周食物开支(food_exp)与每周收入(income)的40个观测值。 (1)将food_exp与income的散点图与线性拟合图画在一起。根据此图,是…

R费希尔精确检验(Fisher‘s exact test)

R费希尔精确检验(Fishers exact test) Fisher精确检验是一种显著性检验(significance想),当样本量较小时,用它来代替22表的卡方检验。 # 如何在R中进行Fisher精确测试。 # 为了在R中进行Fisher检验,我们只需要一个22的数据集。使用下面的代码,我生成一个仿真的22数据…

超几何分布检验(hypergeometric test)与费歇尔精确检验(fisher‘s exact test)

1,超几何分布检验常用来对venn图两个圈overlap的显著性进行检验,费歇尔精确检验常用来对2x2的列联表进行检验。 2,假设有如下的统计数据: smokenon-smokelung cancer106normal112 现在对其进行费歇尔精确检验,有两种…

【Python计量】异方差性的检验

目录 一、画残差图 二、BP检验 (一)手动编制函数进行BP检验 (二)调用statsmodels的函数进行BP检验 三、怀特检验 (一)手动编制函数进行White检验 (二)调用statsmodels的函数进…

stata 异方差专题【计量经济系列(四)】

stata 异方差专题【计量经济系列(四)】 文章目录 1. 异方差检验方法2. 散点图法3. BP检验4. 怀特检验5. FWLS 可行权的最小二乘法6. 小练习 ʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯…

Python的strip()函数

在python API中这样解释strip()函数: 声明:s为字符串,rm为要删除的字符序列 s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符 s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字符 …

.strip().split('t')和.strip().split()

.strip().split(t) line nihao, zhenhao,dajiahao print(line).strip().split(t) .strip().split() line nihao, zhenhao,dajiahao print(line.strip().split())

Python Strip()使用详解

一、函数定义 可使用快捷键ctrlb,查看函数的定义。 函数功能:默认删除字符前后的空格,如果有指定字符删除自定字符前后指定字符。 注意,该函数只能删除字符前后的字符,不能删除字符中间的字符。 二、默认情况下删除…

python中的strip()和split()

一.strip() strip()简单来说就是: 返回删除前导和尾随空格的字符串副本。如果给定了chars而不是None,则删除chars中的字符。 下面来举几个例子: 1.strip()括号内无任何字符 2.strip()括号内存在字符 二.split() split()函数通常是对字符…

python中strip的使用

今天聊聊python去除字符串空格的函数:strip()和replace() 1.strip(): 函数功能描述:Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。 注意&#…

Python 中strip()方法怎么用?

Python strip() 方法用于去除字符串开头和结尾处指定的字符(默认为空格或换行符)或字符序列,不会去除字符串中间对应的字符。 相关函数有lstrip()和rstrip() 。用法与strip()相同。 lstrip()方法用于去除左边(开始)的空白字符; rstrip()方法用于去除右边(末尾)的…

Linux中source filename .(点)filename ./filename sh filename的区别

在shell中source filename 和 . filename是一样的,但source和 ./filename.sh的执行结果有很大区别,借用一张网上的图。如下 可以看到通过./filename.sh执行shell脚本,脚本内执行的命令和设置的环境变量不影响执行shell脚本的shell环境变量…

is not valid as filename in directory

svn在checkout/update动作时报错:is not valid as filename in directory 进入版本库浏览器查看发现有文件或文件夹名称带空格导致的。 解决方案: 在svn服务器中将文件名按要求命名规范,再本地执行update

git报错Filename too long

描述 碰见一个小小问题,Git在拉代码的时候提示Filename too long,具体如图 刚开始,一开始我是使用git自带的那个工具有问题了,然后我就下载了一个tortoisegit,结果还是有问题,这可是22G文件,我…

__dirname与__filename

(1) __filename变量 node.js中,在任何模块文件内部,可以使用__filename变量获取当前模块文件的带有完整绝对路径的文件名。 在应用程序根目录下新建app.js文件,其中代码如下所示。 var testModule1require(‘./tes…

with open()as filename

使用文件用with的好处 1.会在运行完后自动关闭文件 2.很简单 打开文件并读取 with open(c.xls,r) as t1:content t1.read()print(content) with open(c.xls,r) as t1:content t1.read()con t1.readlines()print(content)print(con) open参数的解释: &#…

__dirname和__filename

1. 概念 __dirname 可以用来动态获取当前文件所属目录的绝对路径__filename 可以用来动态获取当前文件的绝对路径,包含当前文件__dirname 和 __filename 是不受执行node命令所属路径影响的 2. 代码演示 目录结构 app.js文件,使用node app.js 命令执行…