做数据分析为何要学统计学(6)——什么问题适合使用卡方检验?

卡方检验作为一种非常著名的非参数检验方法(不受总体分布因素的限制),在工程试验、临床试验、社会调查等领域被广泛应用。但是也正是因为使用的便捷性,造成时常被误用。本文参阅相关的文献,对卡方检验的适用性进行粗浅的论述。

首先,从技术角度来看,(1)卡方检验的样本涉及的因素(也就是变量)需要两个(含)以上,而且是定性变量(分类变量,定类变量),其值可以是数字,也可以符号,但是即使是数字也不具备数量的含义,只是用于区分。比如性别变量,它的值可以是男或女,也可以是0或1,A或B;(2)其样本数据是由多个因素在不同水平(取值)情况下共同决定的数据,直观上表现为列联表(交互分类表,交叉表),形如下表。

某项产品的地区调查(人)
北京上海
满意600480
一般120150
不满意8070

上表涉及的因素(变量)有两个,分别是地区和满意度,其值分别是[北京,上海]和[满意,一般,不满意]。而样本是由两个变量的不同取值作用下的统计数据,可以是总和,也可以是平均数,或者其他统计量。

其次,从应用的角度来看,我们的目的是要进行无差异推断,或者不相关推断(无差异等价于不相关)。比如上述问题可以回答北京、上海两地对该产品的满意度是否无差异,或者说对该产品的满意度是否与上述地区不相关。通过即调用卡方检验函数,获得p=0.00472,在显著性水平0.05下,两地满意度无差异(或与地区不相关)的假设被拒绝。于是我们可以认为“两地对某产品的满意度是有差异的”或“某产品的满意度与地区有相关性”。代码如下:

#chi2_contingency是卡方检验函数
from scipy.stats import chi2_contingency
import numpy as np
#定义样本数据
X= np.array([[600,120,80],[480,150,70]])
chi2_contingency(X)
结果:(10.714285714285714, 0.004714356473549276, 2, array([[576., 144.,  80.],[504., 126.,  70.]]))。这些数值分别为卡方值、p值、自由度和理论值。

还有一种特殊情况,就是样本数据只有一组,也就是说表面上看因素只有一个,这种情况实际是进行“试验值(实际值,经验值)与理论值的无差异”推断。如下例:

进行抛硬币试验,进行七轮,每轮抛20次,数据如下表所示。是否可以认为硬币正面与反面(只有这两种情况)朝上的概率相同。

硬币正面向上的频数
第一轮第二轮第三轮第四轮第五轮第六轮第七轮
812107989

乍一看,此样本只有一组数据,而结合要解答的问题,实际上还有一组数据,即理论值。该理论值是等概率条件下硬币正面向上的次数,也就是每轮都是10。于是样本就变成了

硬币正面向上的频数
第一轮第二轮第三轮第四轮第五轮第六轮第七轮
812107989
10101010101010

通过将上述样本数据带入卡方检验函数,p=0.98928。即在显著性水平0.05下,我们接受“硬币正面与反面朝上的概率相同”这一假设。

再来看一个例子,某餐厅对一年内每周内每天的营业额进行统计(均值),看看营业情况是否存在时间方面的差异,数据如下。

一周的营业额统计(万元)

周一周二周三周四周五周六周日
9116781510

该问题同样是一种“试验值(实际值,经验值)与理论值的无差异”推断问题。只不过理论值的与上例不同。如果我们认为营业额与时间无关,也就意味的每天营业额是相同的,于是理论值将由每天营业额的均值来体现。即样本数据为:

一周的营业额统计(万元)

周一周二周三周四周五周六周日
9116781510
9.429.429.429.429.429.429.42

通过将上述样本数据带入卡方检验函数,p=0.85073。即在显著性水平0.05下,我们接受“营业额不存在时间方面的差异”这一假设。尽管从表面来看,该结果不太容易被接受,似乎周末营业情况更好,但是放眼总体(更长的时间范围),并不能支持直观感受。

***********************接下来划重点,举一个非常有代表性的误用卡方检验的例子***************

某调查机构调查了不同收入水平话费支出的情况,试图分析收入水平是否与话费支出水平相关。数据如下

收入

3000

4000500060007000800010000
话费90100150180200300400

然后对两组数据进行了卡方检验,p=0.000006。结论:拒绝两者不相关的假设。也就是说收入水平与话费支出水平是相关的。从结果来看是没有问题的,两组数据确实是显著正相关的,其皮尔逊相关系数corr=0.9758。但是从样本数据本身来看,不符合使用卡方检验的适用条件。因为:

(1)收入和话费两个因素不是定性变量,而是定量变量。

(2)样本值也不是两个因素共同确定的数值,而是归属于每个因素本身。

对于此类问题使用相关系数才是合理的。

如果上述调查结果改为不同收入水平和话费支出水平下的用户数量,则可以应用卡方检验。比如数据转换为

30004000500060007000800010000
<=90853024718123
90-100710011291295
100-150152075141068
150-2005459019161
200-250698350113
250-300316151415806
>30029419132090

使用卡方检验后1.12896*10^{-300}<0.05,于是我们可以拒绝收入水平与话费支出水平不相关的假设,也就是说收入水平会影响(或决定)话费支出水平。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Java8构建Docke镜像

基于Java8构建Docke镜像 搜索java8安装包 docker search java8 --no-trunc &#xff0c; --no-trunc展开描述信息 选择拉取 docker pull docker.io/mykro/java8-jre&#xff0c;为了减少磁盘占用&#xff0c;选择jre版本基础镜像 在宿主机创建文件夹iot&#xff0c;并把所需…

opencv 十五 红外图像中虹膜的提取

一、算法需求 在医疗检测中&#xff0c;需要使用红外相机拍摄眼睛照片&#xff0c;然后提取出虹膜的区域。在拍摄过程瞳孔需要进行运动&#xff0c;其通常不在正前方&#xff0c;无法形成圆形&#xff0c;不能使用常规的霍夫圆检测进行提取定位。且在在红外图像中&#xff0c;…

Java 语言关键字

Java关键字是电脑语言里事先定义的&#xff0c;有特别意义的标识符&#xff0c;有时又叫保留字&#xff0c;还有特别意义的变量。Java的关键字对Java的编译器有特殊的意义&#xff0c;他们用来表示一种数据类型&#xff0c;或者表示程序的结构等&#xff0c;关键字不能用作变量…

鸿蒙OS应用开发者高级认证题库

一、判断题 云函数打包完成后&#xff0c;需要到AppGallery Connect创建对应函数的触发器才可以在端侧中调用&#xff08;错&#xff09; 在column和Row容器组件中&#xff0c;aligntems用于设置子组件在主轴方向上的对齐格式&#xff0c;justifycontent用于设置子组件在交叉轴…

IO零拷贝

在介绍零拷贝之前我们先看看传统的 Java 网络 IO 编程是怎样的。 下面代码展示了一个典型的 Java 网络程序。 File file new File("index.jsp");RandomAccessFile rdf new RandomAccessFile(file, "rw");byte[] arr new byte[(int) file.length()];rdf…

差分进化算法DE

此算法是一种基于贪心的并行直接搜索算法。 1.过程 &#xff08;1&#xff09;初始化种群 NP个D维的参数向量(i1,2,...,NP)作为每一代G种群&#xff0c;种群规模必须>4 &#xff08;2&#xff09;变异 使用种群中两个不同向量来干扰一个现有向量&#xff0c;进行差分操…

穿梭时光的Java魔法:轻松掌握Date类,揭示当前时间的神秘面纱!

一、实现目标 获取当前时间&#xff01; 二、上代码 import java.text.SimpleDateFormat; import java.util.Date; public class Date_ { // 输出当前的时间 public static void main(String[] arg…

集群监控Zabbix和Prometheus

文章目录 一、Zabbix入门概述1、Zabbix概述2、Zabbix 基础架构3、Zabbix部署3.1 前提环境准备3.2 安装Zabbix3.3 配置Zabbix3.4 启动停止Zabbix 二、Zabbix的使用与集成1、Zabbix常用术语2、Zabbix实战2.1 创建Host2.2 创建监控项&#xff08;Items&#xff09;2.3 创建触发器&…

Dueling DQN 跑 Pendulum-v1

gym-0.26.1 Pendulum-v1 Dueling DQN 因为还是DQN,所以我们沿用double DQN,然后把 Qnet 换成 VAnet。 其他的不变&#xff0c;详情参考前一篇文章。 class VA(nn.Module):"""只有一层隐藏层的A网络和V网络"""def __init__(self, state_dim, hidd…

二百一十五、Flume——Flume拓扑结构之复制和多路复用的开发案例(亲测,附截图)

一、目的 对于Flume的复制和多路复用拓扑结构&#xff0c;进行一个小的开发测试 二、复制和多路复用拓扑结构 &#xff08;一&#xff09;结构含义 Flume 支持将事件流向一个或者多个目的地。 &#xff08;二&#xff09;结构特征 这种模式可以将相同数据复制到多个channe…

【UML】组件图中的供接口和需接口与面向对象中的接口

UML&#xff08;统一建模语言&#xff09;组件图中的“供接口”&#xff08;Provided Interface&#xff09;和“需接口”&#xff08;Required Interface&#xff09;与面向对象编程中的接口概念有关联&#xff0c;但它们在应用上有所区别。 下面解释两者的关系&#xff1a; …

使用kubeadm部署一套Kubernetes v1.23.0集群

使用kubeadm部署一套Kubernetes v1.23.0集群 1、前置知识点 1.1 生产环境可部署Kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式&#xff1a; • kubeadm Kubeadm是一个K8s部署工具&#xff0c;提供kubeadm init和kubeadm join&#xff0c;用于快速部…

14光线追踪(加速结构)

1.Uniform Spatial Partitions(Grids)—均匀空间划分 1.1场景预处理 Find bounding boxCreate gridStore each object in overlapping cells判断哪些网格可能有物体&#xff0c;有物体的格子做上特殊标记 1.2开始光线追踪 开始做光追→ 光线到有物体的格子 → 判断是否有交点…

day03、关系模型之基本概念

关系模型之基本概念 1.关系模型概述1.1 关系模型三要素基本结构&#xff1a;relation/Table基本操作:relation operator 2.什么是关系3.关系模型中的完整性约束 本视频来源于B站&#xff0c;战德臣老师 1.关系模型概述 1.1 关系模型三要素 基本结构&#xff1a;relation/Table…

【Kubernetes】四层代理Service

Service四层代理 一、Service概念原理1.1、为什么要有Service1.2、Service概述1.3、工作原理1.4、三类IP地址【1】Node Network&#xff08;节点网络&#xff09;【2】Pod network&#xff08;pod 网络&#xff09;【3】Cluster Network&#xff08;服务网络&#xff09; 二、S…

Leetcode 139.单词拆分

OJ链接 &#xff1a;139.单词拆分 代码&#xff1a; class Solution {public boolean wordBreak(String s, List<String> wordDict) {Set<String> set new HashSet<String>(wordDict);int n s.length();boolean[] dp new boolean[n1];dp[0] true;//初始…

现代雷达车载应用——第2章 汽车雷达系统原理 2.5节 检测基础

经典著作&#xff0c;值得一读&#xff0c;英文原版下载链接【免费】ModernRadarforAutomotiveApplications资源-CSDN文库。 2.5 检测基础 对于要测试目标是否存在的雷达测量&#xff0c;可以假定下列两个假设之一为真&#xff1a; •H0:—测量结果仅为噪声。 •H1:—测量是噪…

leaflet使用热力图报L找不到的问题ReferenceError: L is not defined at leaflet-heat.js:11:3

1.在main.js中直接引入会显示找不到L 2.解决办法 直接在组件中单独引入使用 可以直接显示出来。 至于为什么main中不能引入为全局&#xff0c;我是没找到&#xff0c;我的另外一个项目可以&#xff0c;新项目不行&#xff0c;不知哪里设置的问题

LangChain 25: SQL Agent通过自然语言查询数据库sqlite

LangChain系列文章 LangChain 实现给动物取名字&#xff0c;LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数据库Faiss存储&#xff0c;读取YouTube的视频文本搜索I…

多模态AI:技术深掘与应用实景解析

多模态AI&#xff1a;技术深掘与应用实景解析 在当今人工智能技术的快速发展中&#xff0c;多模态AI凭借其独特的数据处理能力&#xff0c;成为了科技创新的前沿。这项技术结合了视觉、听觉、文本等多种感知模式&#xff0c;开辟了人工智能处理和理解复杂信息的新纪元。本文旨…