非参检验之置换检验

Permutation Test 置换检验(转) Permutation Test 置换检验 显著性检验通常可以告诉我们一个观测值是否是有效的,例如检测两组样本均值差异的假设检验可以告诉我们这两组样本的均值是否相等(或者那个均值更大)。我们在实验中经常会因为各种问题(时间、经费、人力、物力)得到一些小样本结果,如果我们想知道这些小样本结果的总体是什么样子的,就需要用到置换检验。 Permutation test 置换检验是Fisher于20世 阅读详情

原文链接:非参检验之置换检验icon-default.png?t=N7T8https://mp.weixin.qq.com/s/3To6U_8ld79ctLtiCp5rjQ 

写在前面

置换检验(Permutation test)是属于非参检验的一种方法,特别适用于总体分布未知的小样本数据。在参数方法中,对于两种实验处理条件,我们一般假设两个总体为正态且方差齐性,然后使用双尾t检验来验证两者是否存在差异。通常零假设为两个总体的均值相等,接着计算t值,将其与理论分布相比较,如果t值落在95%置信区间之外,那么就可以拒绝零假设。

置换检验的思路有些不一样,我们先来看一个例子(来自参考文章1)。小明和小黑一起参加了一个数学补习班,培训前后分别测得的成绩如下表第一行所示,那么要如何判定补习班的成效呢(即成绩是否有了显著性提高)?

前后两次的测试让人直接想到了配对t检验,不过这种方法没法绕开它的前提假设(正态和等方差),而且这里的样本数有点少得可怜(2对),这时候本文的主角出场了。首先,建立置换检验的H0假设,即两次成绩不存在显著差异;接着,计算统计检验量,这里是两个样本的均值之差,即Ms=74-72.5=1.5;最后,在H0的前提下混合4个成绩,并进行排列组合,任取2个作为前测成绩,另2个作为后测成绩,结果如下所示(2~5行)。

从表中我们看到除去第一行的原始数据,其它五行的统计检验量Mn大于1.5的有1个(第二行),那么估计的p值就等于1/5,矫正后(在抽样总体中加入一个远大于Ms的样本)的p值为(1+1)/(5+1)=1/3。很明显,p值大于0.05,因此结论是参加补习班未能显著提高成绩。置换检验就是如此操作,它不需要关于总体的任何假设,而且样本量可以非常小,因此使用起来显得很是得心应手。

配对t检验和置换检验之间的关系,让人想到皮尔逊(Pearson)相关和斯皮尔曼(Spearman)相关之间类似的关系。皮尔逊相关要求数据总体为正态、方差不能为零,且异常值对其影响很大,因此给实际分析带来了一定的局限性(假设不一定都成立,还得事后对其进行验证)。而斯皮尔曼相关是根据原始数据的排序等级进行计算求解的,如此事情就变得简单了,前面提到了几个限制统统都化解了,完美。

嗯,现在我们再来看另外一个例子来加深理解(正常点的,毕竟前面的例子仅仅是用来阐述概念的;来自参考文章2)。假设有个实验是为了验证某种生长素对拟南芥侧根数的增加是否有帮助。实验中的A组是加了生长素,其侧根数量为24 43 58 67 61 44 67 49 59 52 62 50(共12个);B组则不加,其侧根数量为42 43 65 26 33 41 19 54 42 20 17 60 37 42 55 28(共16个)。

我们假设加入的生长素不会促进拟南芥的根系发育,那么A组和B组的数据可以认为是来自同一个总体。这次我们构建的检验统计量为两组侧根数目均值之差,原始数据中A组和B组均值之差为14。跟之前的简单示例相类似,混合后共有28个数据,然后每次随机取出12个作为A组,另外16个作为B组,并记录两组数据的均值之差。

如此反复操作总共进行999次,因为重复次数足够多了,我们能够得到如下的相对稳定的分布图,它代表了抽样的总体情况。

上图中除了展示999个数据分布的直方图,还画出了拟合曲线。直观上判断,原始数据两组均值之差14位于右尾,很有可能是在显著临界值附近,实际上大于14的数值有9个,计算p值(9+1)/(999+1)等于0.01,可以拒绝零假设,即实验表明加入生长素不会促进拟南芥的根系发育。

使用coin包

对于独立性问题coin包提供了全面的置换检验框架,它可以回答诸如不同组别之间的观测值是否独立(来自不同总体)、两个类别变量是否独立(不同水平之间存在差异)等问题,下图展示了与传统统计检验等价的、相对应的用于置换检验的coin函数(来自参考文章3)。

我们再次使用前面的拟南芥侧根数为分析对象,首先我们用传统的独立样本t检验方法来检验加入生长素是否会促进拟南芥根系的发育,这是一种需要前提假设和后续假设验证的方法,要求两样本对应的总体是正态,最好是方差也相等(R中默认假定方差不相等,并使用Welsh的修正自由度),代码和结果截图如下。

library(coin)
number <- c(24, 43, 58, 67, 61, 44, 67, 49, 59, 52, 62, 50, 42, 43, 65, 26, 33, 41, 19, 54, 42, 20, 17, 60, 37, 42, 55, 28)
# 将A重复12次、B重复16次
# coin包要求类别变量必须以因子形式编码
condition <- factor(c(rep("A",12),rep("B",16)))
mydata <- data.frame(condition, number)
# t.test(y~x, data),y为数值型,x为二分变量
# 假定方差相等,并使用合并方差估计
t.test(number~condition, daya=mydata, var.equal=TRUE)

结果显示差异是显著的(见红框中的p值)。接下来我们使用相对应的coin中的置换检验函数,此时就可以完全抛开那些前提假设了,就此毫无顾忌地上代码、看结果。

# oneway_test(y ~ A),A是分类因子,y是数值变量
# exact指出用精确的方式计算分布,即依据所有可能的排列组合,仅适用两样本情况
# 28选12,排列组合数高达三千多万,还好现在的计算资源比较廉价
oneway_test(number~condition, data=mydata, distribution="exact")

置换检验的p值与传统方法的p值差不太多,结果都很显著。以上从28个数据中取12个加16个的组合竟然已高达三千多万,实在有点让人吃惊,要是数据量再大些,所有排列组合的可能性将继续呈指数级增长,结果就不好控制而且也没必要。好在distribution参数还提供了其它的选项,如使用蒙特卡洛(MC)采样方法对抽样分布进行近似估计,设置参数为approximate(nresample=9999)即可,每次对混合的28个数据随机分成两组(一组12个、另一组16个),如此反复操作9999次,最后把实验数据放到这个近似分布中进行检验,结果图形如下。

这里没有设定随机数种子,例如set.seed(2089),因此每次运行的结果会有些许的差异。另外,传统的单因素方差分析对应的coin函数也是同一个,一样的使用方法,只是结果不是显示Two-Sample而是K-Sample(用于高维采样),检验统计量由Z值变为卡方值。

使用lmPerm包

lmPerm包中提供的函数专门用来做回归分析和方差分析的置换检验,例如lmp()和aovp()函数分别对应传统的lm()和aov()函数。置换检验的函数名只是在原先名称之后加了个p,而且额外增加的参数主要是perm,选项值Exact跟coin包中的定义一模一样,根据所有可能的排列组合进行精确检验,不过默认当观测数大于10时自动会转成Prob选项;Prob选项随机不断抽样,直到满足特定的条件,如估计p值的估计标准误小于0.1*p,同时最大迭代次数也受maxIter参数限制;如果为空(“”)则生成F检验概率。

我们以一元线性回归模型(Yi=β0+β1Xi+εi)来举例说明置换操作是如何进行的。检验的对象是β1,零假设H0为β1=0。具体操作步骤如下(参考文章4):

第一步,使用最小二乘法对参数β0和β1进行估计,得到的预测值和残差,然后构建β1的F型统计量T=(n-2)SSR/SSE,这里SSR指回归平方和、SSE指残差平方和;
第二步,对残差集合进行随机置换得到新的排序,并带入方程根据原有Xi得到新的Yi;
第三步,基于Xi和新的Yi重新拟合回归方程,得到新的β0和新的β1,并计算新的T值;
第四步,重复步骤2和3,直到满足迭代停止条件或达到限制次数,得到T值的集合;
第五步,计算近似p值,即T值集合中大于原始T值的数目除以总数。

现在我们来看一个具体例子。本公号的第一篇推文是回归诊断之正态性——画QQ图,在其中使用了R基础安装中的数据集women,包含15位年龄在30~39岁之间女性的身高和体重信息,现在我们使用lmp()函数来代替lm()函数进行拟合分析,结果如下图。

如果使用lm()函数来分析,其结果是类似的,只是这里的Iter列额外显示了迭代次数。

参考文章

  1. 聊一聊置换检验Permutation test的原理
    https://zhuanlan.zhihu.com/p/328940140
  2. Permutation Test 置换检验(转)
    https://blog.youkuaiyun.com/u011467621/article/details/47971917
  3. [图书]R语言实战第十二章重抽样与自助法
  4. 置换检验简介
    https://zhuanlan.zhihu.com/p/150954968
  5. SSR、SSE、SST、R^2、调整R^2
    https://blog.youkuaiyun.com/qq_35182128/article/details/106346826
【Python实例第32讲】一个分类分数的置换检验 机器学习训练营——机器学习爱好者的自由交流空间(qq 群号:696721295) 检验一个分类分数的显著性的一种技术是在随机置换标签后,重复分类程序。检验的p-value定义为:置换分数高于原始分类的分数的百分比。 实例代码 import numpy as np import matplotlib.pyplot as plt from sklearn.svm import SVC from ... 阅读详情

相关推荐

置换检验:统计学中的一种假设检验方法

例如,对于两组样本均值的比较问题,原假设可以是两组样本均值相等,备择假设可以是两组样本均值不相等。通过生成置换数据集、计算置换统计量和构建置换分布,我们可以得到观察统计量的p值,从而做出对原假设的推断。例如,我们想要比较一个新药物对疾病的治疗效果是否明显优于传统药物,就可以使用置换检验来评估两组样本的均值差异是否显著。计算p值:根据置换分布和观察统计量的值,可以计算出p值,即观察统计量在原假设下取得更极端值的概率。计算置换统计量:对于每个置换数据集,我们计算与观察统计量类似的统计量的值。

BitSlinger的博客 1196

什么是置换检验

                                            置换检验置换检验又称为Permutation test,它是Fisher于20世纪30年代提出的一种基于大量计算,利用样本数据的全(或随机)排列,进行统计推断的方法,因其对总体分布自由,应用较为广泛,特别适用于总体分布未知的小样本资料,以及某些难以用常规方法分析资料的假设检验问题。在具体使用上它和Bootstr...

wp_python的博客 1万+

置换检验(permutation tests)是什么?置换检验(permutation tests)解决什么问题?置换检验的基本步骤示例

置换检验(permutation tests)是什么?置换检验(permutation tests)解决什么问题?置换检验的基本步骤示例

data+scenario+science+insight 1656

统计学(六):置换检验

文章目录置换检验传统参数检验置换检验t 检验和置换检验的联系与区别置换检验使用场景参考文献 置换检验 置换检验,也称随机化检验或重随机化检验,以一个实例去理解置换检验。 有两种处理条件的实验,十个受试者已经被 随机分配到其中一种条件(A或B)中,相应的结果变量(score)被记录在以下表格: A处理 B处理 40 57 57 64 45 55 55 62 58 65...

bioprogrammer 2万+

数据分析:小样本的置换检验Permutation Test

置换检验是一种非参数统计方法,适用于小样本数据或数据分布未知的情况。其核心思想是通过随机置换样本,评估观察到的统计量是否显著不同于随机情况下的预期值。本文通过一个案例展示了置换检验的应用:两组数据(对照组和实验组)的样本量分别为3和5,通过计算两组平均值的差值作为统计量,并进行1000次随机置换,构建统计量分布。结果显示,P值大于0.05,表明实验处理对结果没有显著提升。置换检验不仅适用于小样本数据,也可用于大样本数据,且对组间样本量不平衡的数据同样有效。

专注生信领域 2576

R语言使用lmPerm包应用于线性模型的置换方法(置换检验、permutation tests)、在同一数据集上使用单向协方差分析(one-way ANCOVA)、使用aovp函数的置换检验单向协方差

R语言使用lmPerm包应用于线性模型的置换方法(置换检验、permutation tests)、在同一数据集上使用单向协方差分析(one-way ANCOVA)、使用aovp函数的置换检验单向协方差分析、控制协变量(Permutation test for one-way ANCOVA)

data+scenario+science+insight 704

理解和实现置换检验

置换检验

clancy_wu的博客 5730

保姆级教程:在Windows上用Python+OpenCV调用海康工业相机(附MVS配置避坑指南)

本文提供了一份详细的Windows环境下使用Python和OpenCV调用海康工业相机的保姆级教程,涵盖MVS配置避坑、相机连接、图像获取与格式转换等关键步骤。特别针对工业相机取流中的常见问题,如独占访问控制和多相机协同工作,提供了实用解决方案,帮助开发者快速实现稳定的图像采集系统。

weixin_29228781的博客 398

置换检验

Bootstrap 与置换检验 文章目录Bootstrap 与置换检验Bootstrap详细描述:实现Permutation Tests(置换检验)详细描述实现实现 Bootstrap Bootstrap通常是指一种通过重用数据实现评估不确定性的统计方法。应用场景主要是当统计分布没有解析解,但是又希望提取出统计量或者对数据运用一些计算方法。 详细描述: 给定数据点集 X={x1,x2,…,xn}X...

jiaochong的博客 2424

LTE随机接入实战:如何通过PRACH前导码优化小区覆盖半径(附计算公式)

本文深入探讨了LTE网络中PRACH前导码格式对小区覆盖半径的关键影响。通过解析不同前导码格式(如Format 0-3)的物理参数与覆盖能力,提供了核心计算公式与实战Python脚本,指导网络工程师根据覆盖需求、环境多径和容量等因素,科学选择前导码格式以优化边缘用户接入成功率,实现精准的网络规划与优化。

qq_27496129的博客 573

算法交易VWAP&TWAP

VWAP的一些算法模型细节参考博客地址http://blog.sina.com.cn/s/blog_ad47bc5b01014elx.html 日内交易量预测模型http://blog.sina.com.cn/s/blog_976461170102v43p.html 算法交易其实主要是用在基金公司、券商量化比较多。例如我已经选好股,要大量买入,但是单凭交易员的操作海量单而且要完

shulixu的博客 1万+

统计学之置换检验

我们一般平时较为常用的检验要属有参检验,但是其要求样本必须满足近似正态,无离群点,数据量大等要求;而有些时候其实很难都满足以上前提条件,则这时需要使用无参检验,其只关注数据的秩,但是无参检验有时也无法处理一些样本数较少的情况,这时则可以使用置换检验 置换检验,是Fisher提出的一种基于大量计算(computationally intensive),利用样本数据的随机排列(置换检验的核心思想,故名Permutation test),进行统计推断的方法。因其对总体分布自由,特别适合用于总体分布未知的小样本数

yitingh的博客 2362

ABB机器人与西门子PLC、工业相机联合实现无序抓取的完整调试方案

将此方案导入系统后,逐步执行调试,确保各环节信号正常触发,即可实现高效无序抓取!

CHUXUEZHE8210的博客 1992

置换检验(Permutation Test)(转载)

置换检验(Permutation Test)(转载) 因为做支持向量机的时候最后用到了置换检验,但知其然不知其所以然,故转载此文,一为在逐段复制时提高自己阅读专注度,二为后来者留以备用。 本文出自于http://www.bioinfo-scrounger.com转载请注明出处 本文转自作者Kai。 我们一般平时较为常用的检验要属有参检验,但是其要求样本必须满足近似正态,无离群点,数据量大等要求;而...

weixin_40659697的博客 3911

【保姆级教程】教你如何轻松获取MIMIC数据使用权限

文章非常详细地介绍了MIMIC数据库申请使用的全部步骤。

越努力 越幸运 6598

第14.1章 高翔博士2025年11月最新开源框架Lightning-LM源码学习解读(一):激光-IMU定位+建图算法各模块简介

Lightning-LM:高效激光SLAM定位系统 该框架基于模块化设计,通过激光-IMU融合实现快速建图与定位,核心特点包括: 极速性能:纯CPU运行(建图1.2核/定位0.8核) 模块化架构:包含激光里程计(LIO)、地图管理、回环检测等独立模块 动态场景支持:地图分块加载、动静态图层分离 多模式适配:支持ROS2环境下的在线/离线运行 关键模块包括前端里程计(core/lio)、2D/3D地图转换(core/g2p5)、轻量优化库(core/miao)等,通过系统控制器(core/system)协调流

行知SLAM 2435

置换检验及其R代码实现

目录 0.前言 1.基础回顾 1.1卡方分布与t分布 1.1.1自由度为1的卡方分布 1.1.2自由度为n的卡方分布 1.1.3t分布 1.2Fisher定理 1.3两样本t检验 1.4置换检验 2.案例 2.1问题背景 2.2经典两样本t检验 2.3置换检验 3.小结 4.参考资料 0.前言 本文将系统梳理《计算机时代的统计推断:算法、演化和数据科学》4.4节提到的置换检验(Permutation Test),给出必要的前行知识并对原书的案例进行代码实...

zns972630879的博客 2782

史上最全工商银行核心系统建设历程:从“数据集中”到“ECOS”2.0,见证银行业信息科技跨时代发展征程

ECOS工程的直接成果是建成了工商银行第五代信息系统,即从单一核心银行系统到去核心化开放生态系统,率先开启了以智能化、开放化为特征,数据驱动引领经营模式变革,创新提出了一整套国际领先的分布式开放生态银行系统建设方案,在大型银行全分布式系统架构、主机下移、银行系统生态化转型、大规模交易型分布式数据库等多个领域再次实现“0到1”的突破,建成了具备国际领先水平的全分布式开放生态银行系统,继续勇立数字化转型潮头,推动高质量发展再上新台阶。工商银行的业务连续性管理水平实现了跨越式发展,有力地保障了业务发展。

银行信息系统应用架构详解 824

置换检验及其matlab代码

置换检验及其matlab代码

weixin_46271668的博客 4443

Xilinx平台SRIO介绍(五)示例工程Example Design介绍

理解IP的使用,少不了Example Design的学习。

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

置换检验 配对秩和检验

置换检验 置换检验(Permutation test),也称随机化检验或重随机化检验,是Fisher于20世纪30年代提出的一种基于大量计算(computationally intensive),利用样本数据的全(或随机)排列,进行统计推断的方法。 其对总体分布自由,应用较为广泛,特别适用于总体分布未知的小样本资料,以及某些难以用常规方法分析资料的假设检验问题,属于非参数检验方法。 与Bootst...

leeningzzu的博客 2543

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

聊一聊置换检验Permutation test的原理

《本文同步发布于“脑之说”微信公众号,欢迎搜索关注~~》 统计,是我们做研究不可或缺的一个工具,尽管有时候两组样本的某个指标的均值看起来相差很大,但是只有当两组样本的这个指标具有统计学差异时,我们才有信心说这两组样本确实有差异。我们在平时的研究中,用的较多的统计方法是参数检验,如t检验,方差分析等,但是这些方法都有一个前提要求,即样本都要符合正态分布。当样本不符合这一前提时,我们就要用非参数检验,而置换检验Permutation test就属于非参数检验的一种。这里,笔者通过实例带大家认识Permutati

悦影科技 8448

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

置换检验(R语言实现)

显著性检验通常可以告诉我们一个观测值是否是有效的,例如检测两组样本均值差异的假设检验可以告诉我们这两组样本的均值是否相等(或者那个均值更 大)。我们在实验中经常会因为各种问题(时间、经费、人力、物力)得到一些小样本结果,如果我们想知道这些小样本结果的总体是什么样子的,就需要用到置换检验。        Permutation test 置换检验是 Fisher于20世纪30年代提出的一种基于大量

zhouyijun888的博客 7797

【R语言】置换检验

不是很懂R语言,翻译得不好,理解也不是很到位,欢迎指正批评,谢谢。 置换检验 理论部分 参考书:《统计学完全教程》 注:这里的算法应该就是一种基于蒙特卡洛模拟方法的置换检验,下面操作会提及。 实践部分 目的: 检验两组独立的数据是否同分布 好处: 不需要预先的理论分布、对样本量无要求 Rstudio中的置换检验: # oneway_test , provide the Fisher-Pitman permutation test ## S3 method for class 'formula' o

萝卜丝儿皮尔 2882
上一篇: 初探R之demo(graphics)
下一篇: 广义线性模型之泊松回归
miniprogram
博客等级 码龄6年 20粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值