使用 Python 进行卡方测试

news/2024/7/7 13:04:00
土耳其超级联赛的三大足球俱乐部

一、说明

        卡方检验用于检验为分类变量创建的模型。也就是说,这是我们在统计学中经常遇到的另一个经典假设检验。该测试是事实与期望的统计版本。我们有一个理论,一个对事件的期望,我们也有观察,现在我们想比较它们。

二、卡方一般概念

        我们可以通过两种方式应用卡方检验:

  1. 拟合优度检验:我们有一个分类变量。我们想检查我们的样本对整个总体的反映程度。
  2. 独立性测试:我们有两个分类变量。我们想检查这两者之间是否存在关系。

        公式!

        卡方值是观测值和预期值之差的平方和除以期望值。c 是自由度。

2.1 合身性

假设我们欺骗了100名在伊斯坦布尔塔克西姆广场散步的人,承诺购买啤酒,并问他们支持哪支球队。根据瑞士科学家的研究,我们已经知道支持加拉塔萨雷的人的比例是45%。费内巴切占35%,贝西克塔斯占20%。这是我们的期望。另一方面,当我们查看在塔克西姆喝啤酒后收集的样本时,我们的观察结果分别如下:54、38 和 8。

Data table

        我们的零假设是瑞士科学家是对的。另一种假设是他们错了。我们选择显著性水平为 5%。我们的自由度是2(如果我们有两个俱乐部的支持者数量,我们也可以获得第三个俱乐部的数量)。还有 c = k-1 = 3–1 = 2。

        现在让我们使用等式:

        度数为 9 的卡方值为 27.0,置信水平为 05.5 的卡方值为 991.0。卡方表链接在这里。Excel 公式为 “ = CHISQ。INV(95.2,<>)”。

        如果我们的值大于临界值,我们可以拒绝零假设,是的,在这种情况下,我们拒绝零并接受替代方案,这意味着瑞士人错了!

#python code for the above example
observed = [54,38,8]
expectation = [45,35,20]
x = sum([(o-e)**2./e for o,e in zip(observed,expectation)])
#chi square = 9.257
#import chi2 from scipy to get the critical value
from scipy.stats import chi2
alpha = 0.05
df = 2
cr=chi2.ppf(q=1-alpha,df=df)
#critical value is 5.991

2.2 独立性测试

        这是一回事,但还有一个变量。因此,让我们在上面的示例中再添加一个。我们注意到酒吧里的 100 个热爱足球的朋友正在喝 2 种啤酒;比尔森和拉格。我们想知道足球队和啤酒类型的选择之间是否存在关系。我们再次收集样本。

        啤酒

        添加另一个变量后的观测数据表

        为了计算期望值,我们将使用联合概率,即:P(联合)=边际概率*边际概率。例如,我们可以计算出喜欢喝比尔森啤酒的加拉塔萨雷球迷的期望值如下;

        E = (54 * 43) / 100 = 23.2。因此,让我们计算所有预期值:

        计算出的期望数据

        因此,我们的零假设 Ho 是支持的团队与啤酒偏好无关。替代假设 Ha 是支持的团队不独立于啤酒偏好。我们的自由度是 df = (r-1)(c-1) = (3–1)(2–1) = 2。我们再次使用相同的方程来计算卡方值:

        计算值 22.74 再次大于临界值,因此我们拒绝原假设并接受替代假设。我们可以说这两个变量都是依赖的。

三、结论

        卡方检验用于检查分类变量。在选择机器学习特征时,我们可以使用卡方。


http://lihuaxi.xjx100.cn/news/1703943.html

相关文章

Flutter 类似onResume 监听,解决入场动画卡顿

在Flutter 实际开发过程中&#xff0c;页面数据往往是异步加载&#xff0c;接口请求回来后&#xff0c;数据刷新显示到界面上。 由于Flutter性能原因&#xff0c;也可能因为获取数据量比较大&#xff0c;在新页面路由进场动画执行过程中&#xff0c;接口请求结果回来了&#x…

搞个微信小程序001

一&#xff0c;申请账号 开始 | 微信开放文档 二&#xff0c;安装开发者工具 开始 | 微信开放文档 我这里搞了个稳定版的。 三&#xff0c;第一个小程序 1&#xff0c;打开工具&#xff0c;扫码登录 2&#xff0c;新建以小程序 选择&#xff0c;不使用云服务&#xff0c…

TensorRT学习笔记--常用卷积、激活、池化和FC层算子API

目录 1--Tensor算子API 1-1--卷积算子 1-2--激活算子 1-3--池化算子 1-4--FC层算子 2--代码实例 3--编译运行 1--Tensor算子API TensorRT提供了卷积层、激活函数和池化层三种最常用算子的API&#xff1a; // 创建一个空的网络 nvinfer1::INetworkDefinition* network …

【C++11】列表初始化

在C98中&#xff0c;标准允许使用花括号“{}”对数组元素进行统一的集合&#xff08;列表&#xff09;初始值设定&#xff0c;比如&#xff1a; int arr[5]{0}; int arr[]{1,2,3}; 这些都是合法的表达式。不过一些自定义类型&#xff0c;却无法享受这样便利的初始化。通常&…

java泛型场景补充注意事项

前言 本文不是对泛型的系统介绍&#xff0c;也不打算对其进行入门讲解&#xff0c;只是对遇到的一些泛型场景的补充。看过宋红康和韩顺平的javase课程可以花几分钟看看。 1.&符号在泛型中的使用&#xff0c;用来描述有边界的受约束泛型 class A{} interface B{} public …

OpenStack云计算平台实战-----创建空白虚拟机

1、创建空白虚拟机 需要注意的步骤会截图一下&#xff0c;其它的基本都是下一步&#xff0c;默认的即可 建议将虚拟机命名为自己的名字加后缀 将处理器数量和每个处理器的内核量都修改为2 将虚拟机的内存设置为8G&#xff0c;不然不够用 将指定磁盘大小设置为200G&#xff0c;…

『C语言进阶』字符函数和内存函数(2)

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f516;系列专栏&#xff1a; C语言、Linux、Cpolar ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 一、strtok函数1.1 函数认识1.2 注意事项 二、strerror函数2.1 函数认识2.2 注意事项 三、memcpy函数3.1 函数…

Linux查看日志命令

首先cd 进入服务容器里文件所在目录 1. cat 命令 适合查看简短的文件,如配置文件 application.properties,当然也可以看日志 #看配置文件 cat application.properties#看运行日志文件 cat xxx.out#配合检索命令 cat application.properties | grep xxx 2. tail -f 命令 #-1…