1.1 简介

抽样分布有三大应用:T分布、卡方分布和$\Gamma$分布。可以简单用四个字概括它们的作用:“以小博大”,即通过小数量的样本容量去预估总体容量的分布情况。这里开始介绍卡方分布。${\chi ^{\text{2}}}$分布在数理统计中具有重要意义。  ${\chi ^{\text{2}}}$分布是由阿贝(Abbe)于1863年首先提出的,后来由海尔墨特(Hermert)和现代统计学的奠基人之一的卡·皮尔逊(C K.Pearson)分别于1875年和1900年推导出来,是统计学中的一个非常有用的著名分布。

1.2 定义

若n个相互独立的随机变量${\xi _1},{\xi _2}, \cdots ,{\xi _n}$,均服从标准正态分布,则这n个服从标准正态分布的随机变量的平方和构成一新的随机变量${\text{X}}\left( {} \right)$,其分布规律称为卡方分布。记作:

$${\text{X}} \sim {\chi ^{\text{2}}}\left( k \right)$$

1.3 卡方分布的密度函数

$${f_k}(x) = \frac{{{{(1/2)}^{\frac{k}{2}}}}}{{\Gamma (k/2)}}{x^{\frac{k}{2} - 1}}{e^{ - \frac{x}{2}}}$$

卡方分布的概率密度图

其中x≥0, 当x≤0时fk(x) = 0。这里$\Gamma$代表Gamma 函数。

在大多数涉及卡方分布的书中都会提供它的累积分布函数的对照表。此外许多表格计算软件如OpenOffice.org Calc和Microsoft Excel中都包括卡方分布函数。

卡方分布可以用来测试随机变量之间是否相互独立,也可用来检测统计模型是否符合实际要求。自由度为 k 的卡方变量的平均值是 k,方差是 2k。

1.4 性质(后续填坑)

2. 卡方检验

2.1 简介

卡方检验(chi-square,记为χ2\chi^2检验)是统计学中常用来计数数据分析的方法,对于总体的分布不作任何假设,因此它属于非参数检验法中的一种。本博文从理论到实际应用去阐述卡方检验,最后用python语言去实现卡方分布的代码。

${\chi ^{\text{2}}}$检验的基本思想是根据样本数据推断总体的频次与期望频次有显著性差异, ${\chi ^{\text{2}}}$的计算公式为:

$${\chi ^{\text{2}}} = \frac{{{{({f_0} - {f_e})}^2}}}{{{f_e}}}$$

其中,${{f_0}}$为实际观察频次,${{f_e}}$为理论值

这是卡方检验的原始公式,其中当${{f_e}}$越大,近似效果越好。显然${{f_0}}$与${{f_e}}$相差越大,卡方值就越大;${{f_0}}$与${{f_e}}$相差越小,卡方值就越小。因此它能够用来表示${{f_0}}$与${{f_e}}$相差的程度。根据这个公式,可认为卡方检验的一般问题是要检验名义型变量的实际观测次数和理论次数分布之间是否存在显著差异。

一般卡方检验方法进行统计检验时,要求样本容量不宜太小,理论次数$\geqslant 5$,否则需要进行校正。如果个别单元格的理论次数小于5,处理的方法有以下四种:

  • 单元格合并法
  • 增加样本数
  • 去除样本数
  • 使用校正公式,当某一期次数小于5时,应该利用校正公式计算卡方值。校正公式为:$${\chi ^{\text{2}}} = \sum {\frac{{{{(\left| {{f_0} - {f_e}} \right| - 0.5)}^2}}}{{{f_e}}}} $$

知道了卡方分布的原理,那具体是如何使用的呢?卡方分析有两个常见的应用——适合度(拟合性)分析和独立性分析。从我目前的经验来看,这也是应用十分广泛的一种统计分析方式。那么什么是卡方适合度分析和独立性分析呢?且听我慢慢道来。

“适配度检验”验证一组观察值的次数分配是否异于理论上的分配。

2.2 卡方独立性检验

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

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

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

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

2.3.1 独立性检验步骤

  • Step1:建议原假设

H0:两变量相互独立;H1:两变量相互不独立

  • Step2:计算自由度与理论频数

自由度:$df = (r - 1)(c - 1)$,理论频数:${e_{ij}} = \frac{{{F_{{Y_i}}} \cdot {F_{{X_j}}}}}{n}$

  • Step3:计算统计量

$${\chi ^{\text{2}}} = \sum\limits_{i = 1}^r {\sum\limits_{j = 1}^c {\frac{{{{({f_{ij}} - {e_{ij}})}^2}}}{{{e_{ij}}}}} }  \sim {\chi ^{\text{2}}}(df)$$

  • Step4:查${\chi ^{\text{2}}}$分布临界值表,确定接受域和拒绝域

接受域:$${\chi ^{\text{2}}}_{1 - \frac{\alpha }{2}}(df) < {\chi ^{\text{2}}} < {\chi ^{\text{2}}}_{\frac{\alpha }{2}}(df)$$

2.3.2 应用条件

要求样本含量应大于40且每个格子中的理论频数不应小于5。当样本含量大于40但理论频数有小于5的情况时卡方值需要校正,即公式:$${\chi ^{\text{2}}} = \sum {\frac{{{{(\left| {{f_0} - {f_e}} \right| - 0.5)}^2}}}{{{f_e}}}} $$

2.3.3 应用实例

例:对下表所示频数分布表,以95%显著水平,检验色觉与性别是否有关。

解:

  • Step1:H0:色觉与性别相互独立;H1:色觉与性别相互不独立(相关)
  • Step2:自由度$df = (r - 1)(c - 1) = (2 - 1)(2 - 1) = 1$,理论频数计算如表2。

  • Step3:计算统计量

  • Step4:查分布临界值表

$${\chi ^{\text{2}}}_{0.975}(1) = 0.00098,{\chi ^{\text{2}}}_{0.025}(1) = 5.0239$$

统计推断:${\chi ^{\text{2}}} = 27.1 > 5.0239$,所以拒绝原假设,即色觉与性别相互不独立。

2.3.4 RxC列联表的卡方检验

  • 专用公式:

r行c列表资料卡方检验的${\chi ^{\text{2}}} = n \times (\frac{{{A_{11}}}}{{{n_1}{n_1}}} + \frac{{{A_{12}}}}{{{n_1}{n_2}}} +  \cdots  + \frac{{{A_{rc}}}}{{{n_r}{n_c}}}) - 1$

  • 应用条件

要求每个格子中的理论频数T均大于5或1<T<5的格子数不超过总格子数的1/5。当有T<1或1<T<5的格子较多时,可采用并行并列、删行删列、增大样本含量的办法使其符合行x列表资料卡方检验的应用条件。多个率的两两比较可采用行x列表分割的办法。

独立性检验的理论频数的计算公式为:

$${f_e} = \frac{{{f_{xi}} \times {f_{yi}}}}{N}$$

2.3.5 独立性检验python实现

(1)环境配置

 1 # -*- coding:utf-8 -*-2 # @Time    : 2018/6/29 18:083 # @Author  : yuanjing liu4 # @Email   : lauyuanjing@163.com5 # @File    : 4.py6 # @Software: PyCharm7 8 # 卡方独立性检验9 import numpy as np
10 from scipy.stats import chi2_contingency
11 from scipy.stats import chi2

(2)卡方独立性检验函数

 1 '''2 (1)假设检验重要知识3 H0:A与B相互独立  H1:A与B不相互独立4 若卡方值大于临界值,拒绝原假设,表示A与B不相互独立,A与B相关5 函数中re返回为1表示拒绝原假设,0表示接受原假设6 7 (2)参数说明8 输入:9 alpha --- 置信度,用来确定临界值
10 data  --- 数据,请使用numpy.array数组
11 输出:
12 g     --- 卡方值,也就是统计量
13 p     --- P值(统计学名词),与置信度对比,也可进行假设检验,P值小于置信度,即可拒绝原假设
14 dof   --- 自由度
15 re    --- 判读变量,1表示拒绝原假设,0表示接受原假设
16 expctd--- 原数据数组同维度的对应理论值
17
18 (3)应用场景
19 要求样本含量应大于40且每个格子中的理论频数不应小于5
20
21 理论知识详见博客:
22 '''
23
24
25 def chi2_independence(alpha, data):
26     g, p, dof, expctd = chi2_contingency(data)
27
28     if dof == 0:
29         print('自由度应该大于等于1')
30     elif dof == 1:
31         cv = chi2.isf(alpha * 0.5, dof)
32     else:
33         cv = chi2.isf(alpha * 0.5, dof-1)
34
35
36     if g > cv:
37         re = 1  # 表示拒绝原假设
38     else:
39         re = 0  # 表示接受原假设
40
41     return g, p, dof, re, expctd

(3)测试

1 # test
2 alpha1 = 0.05  # 置信度,常用0.01,0.05,用于确定拒绝域的临界值
3 data1 = np.array([[442, 514], [38, 6]])
4 g, p, dof, re, expctd = chi2_independence(alpha1, data1)

(4)输出

1 g = 25.554809338151387
2 p = 4.2999294019586401e-07
3 dof = 1
4 re = 1
5 expctd = array([[ 458.88,  497.12], [  21.12,   22.88]])

输出变量的含义,在函数处都已经说明,re=1表示拒绝原假设,结果和上面例子手算的一致。

2.4 卡方拟合性检验

2.4.1 定义

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

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

2.4.2 应用条件

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

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

2.4.3 应用实例

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

解:

(1)提出H0:学生们对文理分科的意见没有差异

(2)分析:如果没有显著的差异,则赞成与反对的各占一般,因此是一个无差假设的检验,于是理论次数为60/2=30,带入公式:

$${\chi ^{\text{2}}}{\text{ = }}\sum {\frac{{{{\left( {{f_0} - {f_e}} \right)}^2}}}{{{f_e}}}}  = \frac{{{{\left( {39 - 30} \right)}^2}}}{{30}} + \frac{{{{\left( {21 - 30} \right)}^2}}}{{30}} = 5.4 > \chi _{0.05}^2\left( 1 \right) = 3.84$$

其中自由度df = 类别-1 = 2-1 = 1

所以拒绝原假设,认为对于文理分科,学生们的态度是有显著的差异的。

2.4.4 卡方拟合性检验python实现

(1)环境配置

1 # 卡方拟合性检验
2 import numpy as np
3 from scipy.stats import chisquare
4 from scipy.stats import chi2

(2)卡方独立性检验函数

 1 '''2 (1)假设检验重要知识3 H0:类别A与B的比例没有差异  H1:类别A与B的比例有差异4 若卡方值大于临界值,拒绝原假设,表示A与B不相互独立,A与B相关5 函数中re返回为1表示拒绝原假设,0表示接受原假设6 7 (2)参数说明8 输入:9 alpha --- 置信度,用来确定临界值
10 data  --- 数据,请使用numpy.array数组
11 sp  --- 表示输入数组的形状参数,默认为一维
12 输出:
13 chis     --- 卡方值,也就是统计量
14 p_value  --- P值(统计学名词),与置信度对比,也可进行假设检验,P值小于置信度,即可拒绝原假设
15 cv --- 拒绝域临界值
16 j   --- 自由度
17 re    --- 判读变量,1表示拒绝原假设,0表示接受原假设
18
19 (3)应用场景
20 要求样本含量应大于40且每个格子中的理论频数不应小于5
21
22 理论知识详见博客:
23 '''
24
25
26 def chi2_fitting(data, alpha, sp=None):
27     chis, p_value = chisquare(data, axis=sp)
28     i, j = data.shape  # j为自由度
29
30     if j == 0:
31         print('自由度应该大于等于1')
32     elif j == 1:
33         cv = chi2.isf(alpha * 0.5, j)
34     else:
35         cv = chi2.isf(alpha * 0.5, j - 1)
36
37     if chis > cv:
38         re = 1  # 表示拒绝原假设
39     else:
40         re = 0  # 表示接受原假设
41
42     return chis, p_value, cv, j-1, re

(3)测试

1 data1 = np.array([[39, 21], ])
2 alpha1 = 0.05
3 chis1, p_value1, cv1, dof, re1 = chi2_fitting(data1, alpha1)

(4)输出

chis1 = 5.4000000000000004
p_value1 = 0.020136751550346329
cv1 = 5.0238861873148917
dof = 1
re1 = 1

显然chis1(卡方值)是大于cv1(临界值)的,因此拒绝原假设,认为对于文理分科,学生们的态度是有显著的差异的。与前面结果一直。这里可以输入多维度数组,而不是简单的一维数组,因为在国内没有找到合适的多维度多类别数组的例子,想结合例子来讲解,更便于理解,既然没有例子也就不使用python进行这个知识点的展示了,望理解。但是此函数中sp给多维度多类别的数组输入提供了方法,原理和scipy.stats.chisquare中的axis参数一样,请大家查阅官方文档。

2.5 卡方拟合性检验和独立性检验之间的关系

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

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

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

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

3 文献

卡方检验 - 维基百科,自由的百科全书
https://zh.wikipedia.org/wiki/%E5%8D%A1%E6%96%B9%E6%A3%80%E9%AA%8C

卡方分布 - MBA智库百科
http://wiki.mbalib.com/wiki/%E5%8D%A1%E6%96%B9%E5%88%86%E5%B8%83

用Python进行卡方分析 - 简书
https://www.jianshu.com/p/c307d04eee56

拟合优度检验_百度百科
https://baike.baidu.com/item/%E6%8B%9F%E5%90%88%E4%BC%98%E5%BA%A6%E6%A3%80%E9%AA%8C

列联表分析2——独立性检验(卡方检验)_关文忠工作室_新浪博客
http://blog.sina.com.cn/s/blog_4d69c7430101ndub.html

卡方分布分析与应用 - 云+社区 - 腾讯云
https://cloud.tencent.com/developer/article/1010577

卡方检验 | Ren’s Cabinet of Curiosities
http://www.ryanzhang.info/tag/%E5%8D%A1%E6%96%B9%E6%A3%80%E9%AA%8C/

scipy.stats.chi2 — SciPy v1.1.0 Reference Guide(卡方分布)
https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.chi2.html#scipy.stats.chi2

scipy.stats.chi2_contingency — SciPy v0.15.1 Reference Guide(卡方独立性检验)
https://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.stats.chi2_contingency.html

scipy.stats.chisquare — SciPy v1.1.0 Reference Guide(卡方拟合性检验)
https://docs.scipy.org/doc/scipy/reference/generated/scipy.sta

卡方分布、卡方独立性检验和拟合性检验理论及其python实现相关推荐

  1. 7. R语言【独立性检验】:卡方独立性检验、Fisher精确检验 、Cochran-Mantel-Haenszel检验

    文章目录 1. 卡方检验 2. 费希尔精确检验(Fisher Exact Test) 3. Cochran-Mantel-Haenszel检验 独立性检验:用来判断变量之间相关性的方法,如果两个变量彼 ...

  2. 【非参数统计05】分类数据的关联分析:列联表、卡方独立性齐性、Fisher精确性、Mantel-Haenszel检验、关联规则、Ridit检验法、对数线性模型

    目录导引 5 分类数据的关联分析 5.1 分类变量独立性检验 5.1.1 r×sr\times sr×s列联表 5.1.2 χ2\chi^2χ2独立性检验 5.1.3 χ2\chi^2χ2齐性检验 5 ...

  3. GESD 离群值检验——理论与 Python 实现

    文章目录 GESD 离群值检验 步骤 Python 代码 本文主要根据标准 ISO 16269-4: 2010 的 4.3.2 条款 设样本为 x1,x2,⋯,xnx_1, x_2, \cdots, ...

  4. 卡方 python_卡方优度检测 (Python 实现) --基于jupyter

    卡方独立性检验 import numpy as np from scipy.stats import chi2_contingency # 列联表分析 from scipy.stats import ...

  5. 数学建模拓展内容:卡方检验和Fisher精确性检验(附有SPSS使用步骤)

    卡方检验和Fisher精确性检验 卡方拟合度检验 卡方独立性检验 卡方检验的前提假设 Fisher精确性检验 卡方拟合度检验 卡方拟合度检验概要:卡方拟合度检验也被称为单因素卡方检验,用于检验一个分类 ...

  6. 卡方分布和卡方验证的关系理解,以及Python实现

    卡方分布 定义:设 X1-Xn是服从标准正态分布的随机变量,则称统计量 服从自由度为n的卡方分布,自由度为n时,他的期望是n,方差为2n 他是标准正态分布变量的平方和,网上找了一张概率密度图: 然后我 ...

  7. 卡方 matlab,matlab卡方分布 卡方检验(Chi-square test)及其MATLAB实现 - 余姚娱乐网

    拟合性检验是用于分析实际次数与理论次数是否相同,适用于单个因素分类的计数数据.独立性检验用于分析各有多项分类的两个或两个以上的因素之间是否有关联或是否独立的问题. 2.卡方检验的应用条件 四格表: 1 ...

  8. 方差分析/卡方/fisher精确检验

    方差分析 前提条件: 1.各样本须是相互独立的随机样本; 2.各样本来自正态分布总体; 3.各总体方差相等,即方差齐.(方差不齐,用非参数检验) 适用数据情况: 分类变量的连续变量 例如: 卡方检验 ...

  9. python卡方拟合优度检验_如何使用Python中的科学库执行卡方拟合优度检验?

    假设我有一些我凭经验得到的数据: from scipy import stats size = 10000 x = 10 * stats.expon.rvs(size=size) + 0.2 * np ...

  10. 卡方独立性检验chisq.test()

    先引用一段R IN ACTION 的话:R提供了多种检验类别型变量独立性的方法.本节中描述的三种检验分别为卡方独立性检验.Fisher精确检验和Cochran-Mantel–Haenszel检验. 你 ...

最新文章

  1. antd 验证 动态 required_3分钟短文:十年窖藏,Laravel告诉你表单验证的正确姿势
  2. 16 BasicHashTable基本哈希表类(三)——Live555源码阅读(一)基本组件类
  3. 嵌入式小白到大神学习全攻略(学习路线+课程+学习书籍+练习项目)
  4. cisco 《连接网络》实验wan综合实验_GNS3实验环境优化与安装
  5. 如何在 Web Forms 中引入依赖注入机制
  6. PHP案例:实现登录功能
  7. [红外] 求一个数的反码, 并作为高位追加到 这个数的前面
  8. ASP.NET的gridview设置数据格式(DataFormatString={})与 String.Format()【转载】
  9. TCPIP详解 卷一核心概念整理
  10. 电子申请客户端(EAC)在64位系统上的兼容性问题
  11. 计算机网络考研知识点整理,计算机网络考研知识点
  12. HttpClient 4 和 HttpClient 3 设置超时
  13. 腾讯云服务器操作系统TencentOS的正确安装方法
  14. 熊哥课件--DOM获取、修改、新增、删除、事件
  15. 辉芒微IO单片机FT60F121-RB
  16. Jetson TX2 安装 D435i ROS驱动
  17. [转载]VBA创建数据透视表
  18. 计算机组装慕课平台,计算机组装与维修
  19. PHPMYSQL物联网监控系统Web端
  20. CAD高版本转低版本怎么转?分享几种好用的转换方法

热门文章

  1. SVN项目提交设置忽略上传资源
  2. Vite 使用TSX/JSX
  3. NFT和游戏化的革命-通过 Play Earn 尝试世界上第一个国际象棋游戏
  4. 【技术思路】极客时间-左耳听风-开篇词1
  5. 在Excel中优化跨页的合并单元格,避免打印后产生空白
  6. git版本控制gitosis的安装与使用
  7. comsol-旋度的形象化概念
  8. 企业微信开发之获取media_id的值
  9. xposed android 4.4.2,xposed新版54
  10. 进程间的通信(管道通信)