假设检验之卡方检验

news2025/1/11 19:41:41

之前我对卡方检验的了解都是一知半解的,即知道作用是对离散变量分布差异的比较,根据期望频数和观察频数的差异计算出来一个卡方值,之后根据自由度和显著性水平查卡方分布对应的临界值,比较大小得出有无明显差异的结论。

一般我们都说单元格期望数最好不小于5,也就是期望频数不小于5,但这里我个问题:

为什么要求期望频数不小于5?假设期望频数小于5会有什么后果?

这两个问题相信不少人都不是很清楚,今天我们就来讲下这两个问题。

标准化残差是将残差与期望频数平方根相除得到的,太小的期望频数很可能任性地放大了残差,进而导致卡方统计量过大,有可能造成“弃真”错误(第1类错误),所以,期望频数接近最小的硬性指标5时,就需要检查相应单元格的残差时不是特别大。

换句话说,假如我们做出了接受原假设的结论,即使此时有些期望频数小于5也无所谓,因为他们只会导致更大的卡方值。

而当我们做出了拒绝原假设的结论时,就需要特别注意是不是有些期望频数小于5,这个时候我们有可能会因为有些期望频数小于5这个因素过大的计算了卡方值,进而造成“弃真”错误。此时需要重点关注相应单元格的残差时不是特别大。

1.导入数据

import pandas as pd
data=pd.read_clipboard()
data.head()

请添加图片描述

2.统计观察频数

data.columns=['city','answer','score','driver_num']
data1=pd.pivot_table(data=data,index=['answer'],columns=['city'],values=['driver_num'],\
                    aggfunc='sum',fill_value=0)
data1.columns=data1.columns.droplevel(level=0)
data1.reset_index(drop=False,inplace=True)
data2=data1.melt(id_vars=['answer'],value_name='观察频数')
data2.head()

请添加图片描述

3.统计各组总数目和总体的期望分布

rate=(data2.groupby(['answer'])['观察频数'].sum()/data2.groupby(['answer'])['观察频数'].sum().sum()).reset_index()
rate.columns=['answer','rate']
group_sum=data2.groupby(['city'])['观察频数'].sum().reset_index()
group_sum.columns=['city','司机数']
group_sum

请添加图片描述

4.计算期望频数和卡方值

import math
data3=pd.merge(data2,group_sum,on=['city'],how='left')
data3=pd.merge(data3,rate,on=['answer'],how='left')
data3['期望频数']=data3['司机数']*data3['rate']
data3['卡方值']=data3.apply(lambda x: math.pow((x.期望频数-x.观察频数),2)/x.期望频数,axis=1)
data3['残差']=data3.apply(lambda x: (x.观察频数-x.期望频数),axis=1)
data3.head()

请添加图片描述

5.根据自由度查表得出结论

卡方分布表查询

data3['卡方值'].sum()

请添加图片描述
由于此时是拒绝了原假设,需要特别注意有无期望频数小于5的情况。若有,还需要关注对应的残差的大小情况。

6.两两比较

由于3个城市整体来看并不是无明显差异,所以可以进一步两两比较,这个时候可以直接调用
python的chi2_contingency函数用于计算。

def chi2_contingency_my(data_input,city1,city2):
    values1=data_input[data_input['city']==city1]['观察频数'].tolist()
    values2=data_input[data_input['city']==city2]['观察频数'].tolist()
    data = np.array([values1, values2])
    try:
        kf = chi2_contingency(data)
        print('--------------')
        print('chisq-statistic=%.4f, p-value=%.4f, df=%i expected_frep=%s'%kf)
        #第一个值为卡方值,第二个值为P值,第三个值为自由度,第四个为与原数据数组同维度的对应理论值
        if kf[1]<0.05:
            print("{}与{}的选择存在显著差异".format(city1,city2))
        else:
            print("{}与{}的选择无显著差异".format(city1,city2))
    except:
        print('--------------')
        print("{}与{}的某选项均为0,无法计算".format(city1,city2))
city_list=data3['city'].unique().tolist()
for i in range(0,len(city_list)-1):
    for j in range(i+1,len(city_list)):
         chi2_contingency_my(data3,city_list[i],city_list[j])

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/118216.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于FPGA平台实现 ARM Cortex-M0 SOC(一)简介

本系列笔记为基于FPGA平台实现 ARM Cortex-M0 SOC 集创赛作品复盘 Platform&#xff1a; ARM Cortex-M0 Design Srart AT510 XLINX FPGA ARM MDK 5 CM0-Design start 是ARM公司放出的一个免费的ARM 内核学习版本&#xff0c;它比M3还要简单&#xff0c;并且官方把整块代码模糊化…

TFN CK1840B 喇叭天线 定向 18GHz~40GHz

TFN CK1840B 喇叭天线 定向 18GHz~40GHz 产品概述 TFN CK1840B喇叭天线工作频率为 18GHz~40GHz。具有频带宽&#xff0c; 性能可靠&#xff0c; 增益高等优 点&#xff0c; 是理想的 EMC 测试、电子对抗等领域的定向接收、发射天线。 应用领域 ● 电子对抗领域 ● EMC 测试…

基于python多光谱遥感数据处理、图像分类、定量评估及机器学习方法应用

普通数码相机记录了红、绿、蓝三种波长的光&#xff0c;多光谱成像技术除了记录这三种波长光之外&#xff0c;还可以记录其他波长&#xff08;例如&#xff1a;近红外、热红外等&#xff09;光的信息。与昂贵、不易获取的高光谱、高空间分辨率卫星数据相比&#xff0c;中等分辨…

Gateway

Gateway—SpringCloud微服务网关组件 一、Spring Cloud Gateway简介 1.为什么要用Gateway&#xff1f; 在微服务架构中&#xff0c;通常一个系统会被拆分为多个微服务&#xff0c;微服务之间的调用可以用OpenFeign&#xff0c;但面对这么多微服务客户端调用会遇到哪些问题呢…

Hudi(3):Hudi之基本概念

目录 0. 相关文章链接 1. 时间轴&#xff08;TimeLine&#xff09; 1.1. Instant action&#xff1a;在表上执行的操作类型 1.2. Instant time 1.3. State 1.4. 两个时间概念 2. 文件布局&#xff08;File Layout&#xff09; 2.1. Hudi表的文件结构 2.2. Hudi存储的两…

Cocos 引擎生态部负责人李阳:己之所欲,可施于人,希望通过生态促进国内引擎技术发展

前言 “小小的身体&#xff0c;大大的能量&#xff0c;这个应该是我对大表姐最直接的感觉&#xff0c;在她娇小的身躯里蕴含了无限的精力和潜力&#xff0c;很像漫威里的神奇女侠&#xff0c;作为一个具备冒险精神的非典型程序员&#xff0c;大表姐热爱的体育活动都是很具挑战…

大数据系列——什么是ClickHouse?ClickHouse有什么用途?

目录 一、什么是ClickHouse 二、ClickHouse有什么用途 三、ClickHouse的不足 四、适用场景 五、ClickHouse特点 六、ClickHouse VS MySQL 七、类SQL 语句 八、核心概念 一、什么是ClickHouse clickHouse是俄罗斯的 Yandex 公司于 2016 年开源的列式存储数据库&#x…

win11系统用户名称为中文导致文件夹出现繁体字文件夹、系统路径配置错误修改教程(博主亲测,基于win11,系统文件保留)

写在前面&#xff1a;很多人在拿到新电脑激活那会&#xff0c;命名就是简单的中文&#xff0c;但是中文命名电脑系统名称&#xff0c;会导致系统用户文件夹自动命名为中文&#xff0c;在后期使用中会导致c盘系统用户文件夹下面出现不知名繁体字文件夹&#xff0c;甚至有的朋友会…

终难逃一阳

阳了&#xff0c;抗原试剂显示我阳了。每天都带口罩的我还是未能逃过此劫。真是覆巢之下&#xff0c;焉有完卵。 ​ 1.背景 12月初国家逐步放开防疫&#xff0c;随之而来的就是奥秘克戎肆虐全国。身边同事和朋友一个接着一个倒下&#xff0c;朋友圈里更是哀嚎一片。好在专家…

《CSAPP》笔记——链接、异常控制流、虚拟内存

文章目录传送门链接基础链接器的意义编译器驱动程序静态链接ELF目标文件格式可重定位目标文件符号和符号表链接过程符号解析解析规则静态链接库带有静态链接库的解析过程重定位重定位条目重定位节重定位符号引用重定位相对引用重定位绝对引用加载可执行目标文件动态链接共享库库…

Kafka 消费者组开发

Kafka consumer - 消费者组 上一篇文章学习到kafka消费者、消费者组之间处理消息的差异&#xff0c;总结起来就是&#xff1a; 同一个消费组的不同消费实例 共同消费topiic的消息, 一个消息只会消费一次&#xff1b; 也叫做集群消费同一个消息被不同的消费组同时消费&#xf…

机器学习基石1(ML基本概念和VC dimension)

文章目录一、什么是机器学习?二、什么时候可以使用机器学习?三、感知机perceptron四、机器学习的输入形式五、机器真的可以学习吗&#xff1f;六、vc dimension一、什么是机器学习? 其实第一个问题和第二个问题是穿插到一块儿回答的&#xff0c;首先机器学习要解决的是常规的…

RedisTemplate操作redis

目录 Redis Repositories方式 a、启用 Repository 功能 b、注解需要缓存的实体 c、创建一个 Repository 接口 d、测试类中测试 Redis Repositories方式 Spring Data Redis 从 1.7 开始提供 Redis Repositories &#xff0c;可以无缝的转换并存储 domain objects&#xff0…

TOPSIS法(熵权法)(模型+MATLAB代码)

TOPSIS可翻译为逼近理想解排序法&#xff0c;国内简称为优劣解距离法 TOPSIS法是一种常用的综合评价方法&#xff0c;其能充分利用原始数据的信息&#xff0c;其结果能精确地反映各评价方案之间的距离 一、模型介绍 极大型指标&#xff08;效益型指标&#xff09; &#xff…

OR-Tools工具介绍以及实战(从入门到超神Python版)

目录前言0、安装一、什么是优化问题&#xff1f;1-1、优化问题介绍1-2、举例1-2-1、导入所需要的库1-2-2、声明求解器1-2-3、创建变量1-2-4、定义约束条件1-2-5、定义目标函数1-2-6、调用求解器&#xff0c;并且显示结果。二、python有关于各种优化问题示例2-1、简单的线性编程…

AlexNet 深度学习奠基作之一(1)

2012年发表 imagenet 一百二十万的图片 1000个种类 cv 对于刷榜 是非常在意的 AlexNet 有六千万的参数&#xff0c;和65000的神经元 为了减少过拟合 我们使用了dropout 很work 很有效 而且 这篇文章没有conclusion 只有 讨论 当他发现 从5个层里面去掉一个 performence会降…

ubuntu设置core文件

长久不写代码&#xff0c;突然发现ubuntu当前运行目录下没有生成core文件&#xff0c;记录如下&#xff0c;避免下次重找。 1、首先开启core文件权限&#xff1a; ulimit -c 如果结果为0&#xff0c; 则表示没有开启&#xff0c;需要开启&#xff0c;如下&#xff1a; 通过u…

【Linux】Linux系统SSH客户端断开后保持进程继续运行配置方法;Python等脚本在终端后台运行的方法

0. 概述 在Linux系统中&#xff0c;通常我们在执行一些运行时间比较长的任务时&#xff0c;必须等待执行完毕才能断开SSH连接或关闭客户端软件&#xff0c;否则可能会导致执行中断。本文介绍几种保障程序在用户退出登录后持续运行的方法。 一、方法 1. 使用nohup执行 nohup…

网络编程 事件选择模型

目录 1.概念分析 2.事件选择代码逻辑 1.WSACreateEvent函数 2.WSACloseEvent函数 3.WSAEventSelect函数 4.WSAWaitForMultipleEvents()函数 5.WSAEnumNetworkEvents函数 事件分类 3.##模型代码样例 1.概念分析 本质上是操作系统处理用户行为&#xff0c;详细如下 事件选…

目标检测之YOLOv5算法分析

YOLOv5共有5个版本的网络模型及其权重文件&#xff0c;即&#xff08;n,s,m,l,x&#xff09;。 &#xff08;下图来自github上yolov5官方开源项目的性能截图&#xff09; 其中n,s,m,l,x网络模型结构如出一辙&#xff0c;差异在参数上。另外的n6,s6,m6,l6,x6模型是对于更大分辨…