数据分析:置换检验Permutation Test

news2024/11/18 23:45:01

欢迎大家关注全网生信学习者系列:

  • WX公zhong号:生信学习者
  • Xiao hong书:生信学习者
  • 知hu:生信学习者
  • CDSN:生信学习者2

介绍

置换检验是一种非参数统计方法,它不依赖于数据的分布形态,因此特别适用于小样本数据集,尤其是当样本总体分布未知或不符合传统参数检验的假设条件时。置换检验的基本思想是通过随机置换样本来评估观察到的统计量是否显著不同于随机情况下的预期值。最初真正认识置换检验是从PERMANOVA分析开始的,PERMANOVA的原理是:

  1. 原始统计量的获取: 首先计算组间距离的平方和与组内距离的平方和之间的差值。这个差值在统计学中类似于F分布统计量,用于评估组间差异的显著性。
  2. 随机置换样本: 接下来,通过随机抽取样本并重新分组,重复计算上述类似F分布的统计量。这个过程需要进行多次,例如1000次,以模拟在随机条件下可能得到的各种统计量值。
  3. 统计量分布的构建与评估: 将第二步中重复计算得到的1000个统计量值组成一个分布。然后,观察原始统计量值在这个分布中的位置。如果在显著性水平(例如0.05)的两端,即表示原始统计量值在随机情况下出现的概率较低,从而可以认为存在显著差异;如果不是,则不能拒绝原假设,即认为没有显著差异。

置换检验的应用:

置换检验方法通常用于小样本组间的比较,它不对样本的总体分布提出要求。这种方法特别适用于那些样本量较小,以至于无法使用传统的参数检验(如t检验)的情况。然而,如果使用基于简单假设检验的统计量,例如在评估两组数据差异时,首先通过t检验获得原始t统计量,然后通过置换检验重新抽取样本并计算t统计量,最后评估原始t统计量在由置换得到的t统计量分布中的位置,此时就需要考虑数据的分布特性。这种方法允许研究者在不依赖于数据分布的前提下,对统计显著性进行更为稳健的评估。

加载R包

library(tidyverse)
library(multcomp)
library(lmPerm)

# rm(list = ls())
options(stringsAsFactors = F)
options(future.globals.maxSize = 1000 * 1024^2)

小样本数据案例

现有两组数据,一组是对照组,一组是实验组,它们的样本量分别是3和5,通过以下数据是否能够证实实验处理可以改善结果?

  • 对照组:73,75,78

  • 实验组:68,69,80,76,82

解题思路:T检验或Wilcox检验一般要求任意一组样本量均大于等于5较为合适,且两组样本量相差较小(非平衡数据)。该问题样本量较小,普通的假设检验不适合,可以采用置换检验(两组平均值的差值作为统计量)。具体步骤:

  1. 第一步,零假设是实验组和对照组没有任何差别;
  2. 第二步,获取原始统计量。先计算两组平均值的差值作为统计量, M 0 = 0.333 M_{0} = 0.333 M0=0.333
  3. 第三步,对照组和实验组混合后随机抽取样本组成A和B再计算两组平均值的差值,重复该过程1000次,上述1000次得到的数值组成统计量分布 M 1000 M_{1000} M1000
  4. 第四步,计算 M 1000 M_{1000} M1000大于 M 0 = 0.333 M_{0} = 0.333 M0=0.333的个数 n n n,概率 P = n / 1000 P=n/1000 P=n/1000。若 P < 0.05 P < 0.05 P<0.05则说明实验处理有助于提升结果,否则接受零假设。

自己撰写脚本

control <- c(73, 75, 78)
treatment <- c(68, 69, 80, 76, 82)

permute_fun <- function(x1, x2, times = 1000) {
  
  # x1 = control
  # x2 = treatment
  # times = 1000
  
  M0 <- mean(x1) - mean(x2)
  x <- c(x1, x2)
  
  M_distri <- c()
  for (i in 1:times ) {
    x1_new <- sample(x, length(x1))
    x2_new <- sample(x, length(x2))
    
    M_temp <- mean(x1_new) - mean(x2_new)
    M_distri <- c(M_distri, M_temp)
  }
  
  dat <- data.frame(Time = 1:times,
                    Value = M_distri)
  p_value <- length(M_distri[M_distri > M0]) / length(M_distri)
  p_label <- paste0("Pvalue = ", p_value, " (M1000 > M0)")
  
  pl <- ggplot(dat, aes(x = Value)) + 
    geom_histogram(aes(y=..density..), binwidth=.5, 
                   color = "black", fill = "white") +
    geom_density(alpha=.2, fill="#FF6666") +
    scale_x_continuous(expand = c(0, 0)) +
    scale_y_continuous(expand = c(0, 0)) +
    labs(title = "Distribution of M statistics",
         x = "Mean(group1) - Mean(group2)") +
    geom_vline(xintercept = M0, color = "red", linetype = "dashed", linewidth = 1) +  
    annotate("text", label = p_label, x = 4, y = 0.14, size = 4) +
    theme_bw()
  
  return(pl)
}

permute_fun(x1 = control, x2 = treatment)

在这里插入图片描述

结果:Pvalue > 0.05,说明实验处理对结果没有显著提升。

内置函数

除了自己撰写脚本外,还可以通过R包内置的函数实现两组置换检验。

EnvStats::twoSamplePermutationTestLocation(
  x = control,
  y = treatment,
  fcn = 'mean',
  alternative = 'greater',
  mu1.minus.mu2 = 0,
  paired = FALSE,
  exact = FALSE,
  n.permutations = 1000,
  seed = 123)
Results of Hypothesis Test
--------------------------

Null Hypothesis:                 mu.x-mu.y = 0

Alternative Hypothesis:          True mu.x-mu.y is greater than 0

Test Name:                       Two-Sample Permutation Test
                                 Based on Differences in Means
                                 (Based on Sampling
                                 Permutation Distribution
                                 1000 Times)

Estimated Parameter(s):          mean of x = 75.33333
                                 mean of y = 75.00000

Data:                            x = control  
                                 y = treatment

Sample Sizes:                    nx = 3
                                 ny = 5

Test Statistic:                  mean.x - mean.y = 0.3333333

P-value:                         0.497

结果:Pvalue > 0.05,说明实验处理对结果没有显著提升。

总结

  • 置换检验思想不仅仅可以用于参数未知和分布未知的小样本数据,也可以用于大样本数据(计算代价较高);

  • 置换检验也适合组间样本量不平衡的数据。

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

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

相关文章

99.9% 超高控制精度!混合量子芯片具备大规模生产潜力

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨沛贤/浪味仙 排版丨沛贤 深度好文&#xff1a;700字丨5分钟阅读 摘要&#xff1a;悉尼量子初创公司 Diraq 正与一个欧洲研发联盟展开合作&#xff0c;通过将量子比特与传统晶体管结合&…

新能源汽车 LabCar 测试系统方案(二)

什么是LabCar测试 LabCar测试目标是进行整车黄板台架功能测试&#xff0c;用于整车开发和测试阶段&#xff0c;满足设计人员和测试人员的试验需求&#xff0c;以验证整车性能&#xff0c;减少开发工作量。系统主要用于测试静态及动态工况下的纯电动汽车的各项功能实现情况。 …

股票分析学习

库&#xff1a; pandas to_datetime:它可以处理各种格式的日期和时间数据&#xff0c;并将其统一转换为 Pandas 可以理解和操作的内部日期时间格式。 matplotlib.pyplot 用户可以轻松地创建各种静态、动态、交互式和 3D 图形。 1. 绘制线图&#xff08;plot()&#xff09; …

eVTOL飞机:技术挑战、应用机遇和运动的作用

最近&#xff0c;航空业的嗡嗡声围绕着电动空中出租车、空中拼车、无人驾驶航空货物运送等。这些概念都依赖于一类称为eVTOL的飞机&#xff0c;eVTOL是电动垂直起降的缩写。 与直升机类似&#xff0c;但没有噪音和排放&#xff0c;eVTOL可以在不需要简易机场的情况下飞行、悬停…

Python | Leetcode Python题解之第171题Excel列表序号

题目&#xff1a; 题解&#xff1a; class Solution:def titleToNumber(self, columnTitle: str) -> int:number, multiple 0, 1for i in range(len(columnTitle) - 1, -1, -1):k ord(columnTitle[i]) - ord("A") 1number k * multiplemultiple * 26return n…

北京智慧养老平台app打造,智慧养老,安心享老

目前&#xff0c;我国60岁以上老年人占人口比重已超过21%&#xff0c;我国老年人口数量快速增长&#xff0c;人口老龄化程度不断加深。与此同时&#xff0c;老年人的养老需求也在逐步上升。除了日常吃穿等生活需求外&#xff0c;他们在健康、精神方面也提出来新的要求。为了满足…

Linux操作系统汇编语言基础知识(图文代码)

1、什么是汇编语言&#xff0c;它在计算机语言中的地位&#xff1f; 汇编语言是程序设计语言的基础语言&#xff0c;是唯一可以直接与计算机硬件打交道的语言2、汇编语言与源程序、汇编程序、汇编的关系&#xff1f; 3、汇编语言的特点 \1) 汇编语言与机器指令一一对应&#…

头歌——机器学习——集成学习案例

第1关&#xff1a;基于集成学习模型的应用案例 任务描述 本次任务我们将会使用银行营销数据集&#xff08;来源于UCI数据集&#xff1a;UCI Machine Learning Repository &#xff09;,该数据集共45211条数据&#xff0c;涉及葡萄牙银行机构的营销活动&#xff0c;通过一些与…

人工智能机器学习算法总结偏差和方差

1.定义 在机器学习中&#xff0c;偏差&#xff08;Bias&#xff09;和方差&#xff08;Variance&#xff09;是评估模型泛化能力的重要概念。它们描述了模型在训练数据上的表现以及对新数据的适应能力。 偏差&#xff08;Bias&#xff09; &#xff1a; 偏差是指模型的预测值与…

Redis之短信登录

文章目录 基于 Session 实现发送验证码登录校验验证码登录拦截器注册拦截器 基于 Redis 实现发送验证码登录校验登录拦截器登录拦截器优化 基于 Session 实现 发送验证码 /*** 发送手机验证码*/ PostMapping("code") public Result sendCode(RequestParam("pho…

BUCK电路布线规则、EMI分析

电源系列文章目录 本系列文章为博主在学习工作过程中的心得记录&#xff0c;欢迎评论区交流讨论。 BUCK电路工作原理、参数计算及工作模式分析BUCK电路布线规则、EMI分析电源电路中肖特基、续流二极管要求 目录 电源系列文章目录一、PCB布线规则1、输入电感与肖特基摆放2、输…

Avalonia 常用控件二 Menu相关

1、Menu 添加代码如下 <Button HorizontalAlignment"Center" Content"Menu/菜单"><Button.Flyout><MenuFlyout><MenuItem Header"打开"/><MenuItem Header"-"/><MenuItem Header"关闭"/&…

降重工具革命:如何使用AI技术优化论文原创性

论文降重一直是困扰各界毕业生的“拦路虎”&#xff0c;还不容易熬过修改的苦&#xff0c;又要迎来降重的痛。 其实想要给论文降重达标&#xff0c;我有一些独家秘诀。话不多说直接上干货&#xff01; 1、同义词改写&#xff08;针对整段整句重复&#xff09; 这是最靠谱也是…

【GD32F303红枫派使用手册】第二十四节 DHT11温湿度传感器检测实验

24.1 实验内容 通过本实验主要学习以下内容&#xff1a; DHT11操作原理 单总线GPIO模拟操作原理 24.2 实验原理 HT11是一款已校准数字信号输出的温湿度一体化数字传感器。该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点信号&#xff0c;传输距离可达20米以…

【人工智能】百度文心一言智能体:AI领域的新里程碑

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

关于正点原子stm32f103精英板v1的stlink通信失败问题解决方案

由于最新的固件不适配&#xff0c;我们要想其工作要下载007的固件。 https://www.st.com/en/development-tools/stsw-link007.html?dlredirect 版本选择最低的。然后选择windows文件夹&#xff0c;更新程序 然后进keil就能正常识别到了

ICMAN液位检测之WS003B管道检测模组

ICMAN液位检测之WS003B管道检测模组 体积小&#xff0c;成本低&#xff0c; 液位检测精度高&#xff0c; 有水输出低电平无水高电平&#xff0c; 适用于饮水机、咖啡机、扫地机器人、洗地机等。 有需要朋友快联系我吧&#xff01;

Flex 布局教程:语法篇

网页布局(layout)是 CSS 的一个重点应用。 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。 20

Redis-在springboot环境下执行lua脚本

文章目录 1、什么lua2、创建SpringBoot工程3、引入相关依赖4、创建LUA脚本5、创建配置类6、创建启动类7、创建测试类 1、什么lua “Lua”的英文全称是“Lightweight Userdata Abstraction Layer”&#xff0c;意思是“轻量级用户数据抽象层”。 2、创建SpringBoot工程 3、引入相…

java基于ssm+jsp 美食推荐管理系统

1前台首页功能模块 美食推荐管理系统&#xff0c;在系统首页可以查看首页、热门美食、美食教程、美食店铺、美食社区、美食资讯、我的、跳转到后台等内容&#xff0c;如图1所示。 图1前台首页功能界面图 用户注册&#xff0c;在注册页面可以填写用户名、密码、姓名、联系电话等…