随机变量-离散-连续-假设检验方法

article/2025/10/14 14:44:50

一组随机样本数据需要进行分析处理时,往往需要用到假设检验,对于离散变量discrete多用卡方检验,连续变量continuous用t检验或wilcoxon秩序和检验,具体的的使用场景如下

离散变量-卡方检验-适用条件

四格表:

  1. 所有的理论数T≥5并且总样本量n≥40,用卡方进行检验
  2. 理论数T<5但T≥1并且n≥40,用连续性校正的卡方进行检验
  3. 有理论数T<1或n<40,用Fisher’s检验

非四格表(R×C表):

  1. R×C表中理论数小于5的格子不能超过1/5,且不能有小于1的理论数,用卡方进行检验
  2. 其他情况不能直接检验,要通过增加样本数、列合并等方法改变数据,再用合适的检验方法

注:实际建模分析中,离散变量多是有多个因子水平的,所以大多是非四格表的形式,若不满足条件1:理论数小于5的格子不能超过1/5,通常都是把数据量小的组合并到相似或相近的组内,然后再进行检验分析

连续变量-T检验/wilcoxon秩序和检验-适用条件
  1. 非正态分布,用非参数方法wilcoxon秩序和检验
  2. 正态分布,用T检验,python中stats包中ttest_ind可区分是否是同方差

离散变量代码示例:

class DiscreteTest():def __init__(self):passdef _discrete_test(self, data, var, yname):chisq_stat, chisq_p_val, df, expect = stats.chi2_contingency(pd.crosstab(data[yname], data[var]), correction=True)# fourfold tableif expect.size == 4:if (expect.sum() >= 40) and (expect.min()) >= 5:stat, p_val, df, expect_show = stats.chi2_contingency(pd.crosstab(data[yname], data[var]), correction=True)method = 'chisqtest'elif (expect.sum() >= 40) and (expect.min() < 5) and (expect.min() >= 1):stat, p_val, df, expect_show = stats.chi2_contingency(pd.crosstab(data[yname], data[var]), correction=False)method = 'adj_chisqtest'else:prior_odds_ratio, p_val = stats.fisher_exact(pd.crosstab(data[yname], data[var]))method = 'fisher'# non-fourfold tableelif expect.size > 4:if len(expect[expect < 5]) / expect.size <= 0.2:stat, p_val, df, expect_show = stats.chi2_contingency(pd.crosstab(data[yname], data[var]), correction=False)method = 'chisqtest'else:prior_odds_ratio, p_val = stats.fisher_exact(pd.crosstab(data[yname], data[var]))method = 'fisher'return {'p_value': p_val, 'method': method, 'var': var}def _discrete_stat(self, data, discrete_vars, yname):output = pd.DataFrame()for var in discrete_vars:temp = pd.DataFrame({"level": list(pd.Series(data[var]).value_counts().index),'value': list(pd.Series(data[var]).value_counts().values)})temp['var'] = varstat_t = self._discrete_test(data, var, yname)temp['p_value'] = stat_t['p_value']temp['method'] = stat_t['method']output = output.append(temp, ignore_index=True)return output

结果展示:
在这里插入图片描述
如图所知:
在α=5%的显著水平下,离散变量education和workYears运用卡方检验发现,education的p_value<α,显著,拒绝原假设,education在正负样本间有显著差异;同理,workYears的p_value>α,不显著,接受原假设,workYears在正负样本间没有显著差异。

连续变量代码示例:

class ContinuousTest():def __init__(self):passdef _continuous_test(self, data, var, yname):# normal testnor_stat = list()nor_p_val = list()for j in pd.unique(data[yname]):nor_stat.append(stats.normaltest(data.loc[data[yname] == j, var])[0])nor_p_val.append(stats.normaltest(data.loc[data[yname] == j, var])[1])# homogeneity of variance testf_stat, f_p_val = stats.f_oneway(data.loc[data[yname] == 0, var],data.loc[data[yname] == 1, var])# T-test or wilcoxon rank-sumif (min(nor_p_val) < 0.05):# p<α,reject null hypothesis: x comes from a normal distribution,so use wilcoxon rank-sum statisticstat, p_val = stats.ranksums(data.loc[data[yname] == 0, var], data.loc[data[yname] == 1, var])method = "wilcoxon-ranksum"elif f_p_val < 0.05:# p<α,reject null hypothesis that two or more groups have the same population meanstat, p_val = stats.ttest_ind(data.loc[data[yname] == 0, var], data.loc[data[yname] == 1, var],equal_var=False)method = "ttest, non-equal var"else:# nor_p_val>0.05 and f_p_val variance is samestat, p_val = stats.ttest_ind(data.loc[data[yname] == 0, var],data.loc[data[yname] == 1, var],equal_var=True)method = "ttest, equal var"stat_t = {'stat': stat, 'p_value': p_val, 'method': method, 'var': var}return stat_tdef _continuous_stat(self, data, continuous_vars, yname):output =pd.DataFrame()for var in continuous_vars:temp=pd.DataFrame({"level":list(pd.Series(data.loc[data[var].notnull(),var]).describe().index),'value' :list(pd.Series(data.loc[data[var].notnull(),var]).describe().values)})temp['var'] = varstat_t = self._continuous_test(data, var, yname)temp['stat'] = stat_t['stat']temp['p_value'] = stat_t['p_value']temp['method'] = stat_t['method']output = output.append(temp, ignore_index=True)return output

结果展示:
在这里插入图片描述
如图所知:
在α=5%的显著水平下,连续变量score_a运用T检验发现,p_value>α,不显著,不能拒绝原假设,所以score_a在正负样本间没有显著差异;同理,连续变量score_b运用wilcoxon-ranksum检验,p_value发现显著,拒绝原假设,score_b在正负样本间存在差异。


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

相关文章

常用的几种API获取ip地理位置的使用方法

最近公司让做一个用户登录、付费的时候记录操作人的地理位置。 搜了很多帖子&#xff0c;一开始用的淘宝的api&#xff0c;但是用了一段时间发现&#xff0c;这个api当获取的次数多了之后&#xff0c;就报404了&#xff0c;导致很多记录没有记录地址&#xff0c;虽然淘宝这个ap…

IP属地信息哪里来的?手把手教你实现通过IP查询属地信息

本文主要讲解IP查询属地信息的实现方法&#xff0c;以及基于Spring Boot实现IP属地信息查询项目。 〇、前言 近日&#xff0c;多个网络公众平台纷纷公开显示用户的IP属地&#xff0c;并且用户无法开启或关闭此功能。 用户的IP信息&#xff0c;平台是怎么知道的&#xff1f; …

php 精准定位到街道,ip地址查询精确到街道_ip查询详细地址带地图

ip地址查询精确的位置方法,我们知道,QQ能够查询到i地址对于的用户的位置,但是有时候因为运营商等原因导致 2.查询非移动网络3G/4G的IP地址;这是因为移动3G/4G网络下所使用的公网IP属于多人共用可以定位到街道级别。 IP定位工具(精准到.下载地址:http://pan.baidu.com/s/1o7…

IP地理位置定位技术原理是什么

IP地理位置定位技术的原理是基于IP地址的网络通信原理和基础上的。它利用IP地址所包含的一些信息&#xff0c;如网络前缀和地址段&#xff0c;以及ISP的IP地址归属地数据库&#xff0c;来推测IP地址所对应的地理位置。 具体来说&#xff0c;IP地址是由32位二进制数字组成的&…

Golang — 根据IP获取地理位置信息

Golang — 根据IP获取地理位置信息 1 介绍1.1 ip2region1.2 geoip2-golang1.3 总结 2 使用2.1 ip2region2.2 geoip2-golang 1 介绍 1 ip2region 2 geoip2-golang 1.1 ip2region ip2region 是一个离线IP地址定位库和IP定位数据管理框架&#xff0c;10微秒级别的查询效率&…

python通过ip获取地理位置等ip信息

作者讲话&#xff1a;本人是一个菜鸟勿喷本文章仅供娱乐。 ps&#xff1a;以后可以线下挑战了&#xff0c;直接顺着网线找到你&#xff01;哈哈哈 查询IP数据网站 使用结果1 ‘http://freeapi.ipip.net/ip’ 中文网站 使用结果2 ‘http://ip-api.com/json/ip’ 外国网站 实…

如何利用IP地址确定地理位置

近年来&#xff0c;基于IP地址的网络应用层出不穷&#xff0c;主要包括定向广告、社交网络、网络安全、网络服务性能优化、用户位置画像等。 互联网用户的物理位置对于很多不同类型的应用是有不同的用处的。以搜索引擎为首等应用通常会使用用户的位置来自定义对用户请求的响应。…

python根据IP查询地理位置

实现了输入ip地址返回该ip对应的信息。 如图&#xff1a;解释如下&#xff1a; 打开百度&#xff0c;输入ip打开调试界面&#xff0c;点击图中3号位置过滤在图中4号框位置输入想要查询的ip&#xff0c;然后点查询依次点击图中5、6&#xff0c;找到timestamp字段&#xff0c;粘…

教你如何使用ip地址进行高精度定位

IP这个概念大部分人都很熟悉了&#xff0c;这里IP的意思不是个人标签&#xff0c;而是IP地址&#xff08;英语&#xff1a;Internet Protocol Address&#xff09;是一种在Internet上的给主机编址的方式&#xff0c;也称为网际协议地址。IP地址是IP协议提供的一种统一的地址格式…

windows访问Ext4磁盘

作者 QQ群&#xff1a;852283276 微信&#xff1a;arm80x86 微信公众号&#xff1a;青儿创客基地 B站&#xff1a;主页 https://space.bilibili.com/208826118 参考 在Windows下读取Ext4分区 推荐一款Windows下读取 Linux文件系统Ext4的最佳软件 Paragon ExtFS api-ms-win-cr…

【Linux】Linux Ext2文件系统

下面以Linux的Ext2为例介绍文件系统的组成。 Ext2采用了分立式目录结构&#xff0c;即一个文件的目录分为目录项和索引节点两个部分。 Ext2的索引节点 在一个实际分立式目录的文件系统中&#xff0c;索引节点&#xff08;inode&#xff09;主要需要两部分内容来支持&#xff…

EXT2文件系统实现原理

目录 一 EXT2文件系统结构概览 2 1.1 EXT2文件系统结构框图 2 1.2 EXT2重要数据结构 3 二 块缓存 6 三 EXT2文件系统挂载 7 3.1 注册ext2文件系统类型 7 3.2 ext2文件系统挂载 7 3.3文件系统操作 9 EXT2文件系统结构概览 1.1 EXT2文…

模拟实现EXT2文件系统

设计EXT2文件系统 实验目的 &#xff08;1&#xff09;掌握文件系统的工作原理 &#xff08;2&#xff09;理解文件系统的主要数据结构 &#xff08;3&#xff09;学习较为复杂的 Linux 下的编程 &#xff08;4&#xff09;了解 EXT2 文件系统的结构 实验内容 设计并实现…

WIN10访问linux分区「ext2fsd」

尝试ext2explore、Paragon ExtFS都不好用&#xff0c;强烈安利ext2fsd&#xff0c;可读写&#xff0c;很强大 转自&#xff1a;https://blog.csdn.net/cruise_h/article/details/12894135 ext2fsd是国人发起的项目&#xff0c;主页 http://www.ext2fsd.com/ 下载&#xff1a;h…

windos读写ext3工具_“ ext2fsd” Windows系统工具,用于读写ext2 / 3/4文件系统

在过去的几天里&#xff0c;我使用定制版本的Bridge Linux来扔Arch Linux. 修改lxdm主题时&#xff0c;我无意间无法进入系统&#xff0c;也无法切换命令行模式&#xff0c;因此我不得不找出Windows系统中是否存在可以读写ext4文件系统的工具. 以前尝试过ext2explore&#xff0…

ext2文件系统

ext2是Linux早期比较流行的文件系统&#xff0c;很多文件系统&#xff08;NTFS、FAT32等&#xff09;的设计都源自于它。只要掌握了ext2文件系统&#xff0c;其他文件系统大同小异。 ext2文件系统的布局如下&#xff1a; 文件系统中存储的最小单位是块&#xff08;Block&#…

文件系统系列专题之 Ext2/3/4

一、Ext概述 EXT是延伸文件系统&#xff08;Extended file system&#xff0c;缩写为 ext或 ext1&#xff09;&#xff0c;也译为扩展文件系统&#xff0c;第 1 个扩展文件系统&#xff08;ext1&#xff09;由 Remy Card 设计&#xff0c;并于 1992 年 4 月引入到 Linux 中。采…

深入理解ext2文件系统

ext&#xff12;文件系统需要考虑哪些因素&#xff1a; 1.最重要的是保证数据的安全性。 2.效率&#xff0c;方便文件的查找读写。 3.文件在磁盘空间占用空间小。 (1)树形目录结构 EXT文件系统采用一个独立的顶级树形目录架构&#xff08;即所有一切都从root根目录开始&…

学习篇 | LINUX 内核的文件系统 -- ext2

引言&#xff1a; 本篇博客中主要讲述的是 LINUX 内核所用的文件系统 —— 第二代扩展文件系统 Ext2&#xff0c;Ext2是数个Linux发行版本的默认文件系统。 百度百科 -- ext2 目录 引言&#xff1a; Ext2 文件系统 磁盘的物理组成 ext2 文件系统的格式 ext2 文件系统目录…

ext2文件系统详解

第一部分磁盘的物理组成 磁盘的基本概念&#xff1a; 扇区为最小的物理存储单位&#xff0c;每个扇区为512字节。 将扇区组成一个圆&#xff0c;那就是柱面&#xff0c;柱面是分区的最小单位。 第一个扇区很重要&#xff0c;里面有硬盘主引导记录&#xff08;Masterbootrecord…