尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

R语言实现多组样本两两t检验的完整教程

R语言实现多组样本两两t检验的完整教程
📅 发布时间:2026/6/19 17:58:23

t检验的核心思想是通过样本均值与方差的比较,评估两个总体均值是否存在显著差异。当有三个或更多组数据时,单次t检验已不再适用,因此通常的做法是先进行方差齐性检验与单因素方差分析(ANOVA),如果总体差异显著,再进行组间的两两t检验,用于具体比较每对样本组之间的差异。

多组样本执行两两t.test时,当有分组少于2个数据,t.test会报错,当要检测的数据为常量时,t.test会报错,

下面代码将解决以上问题

library(readr)
library(dplyr)
library(purrr)
library(rstatix)
# 构建函数进行两两t.test
pf_ttest <- function(my_comparison, data) {group1 <- my_comparison[1]group2 <- my_comparison[2]data1 <- filter(data, group == group1) %>% pull(value)data2 <- filter(data, group == group2) %>% pull(value)cat(sprintf("比较 %s (n=%d) vs %s (n=%d)\n", group1, length(data1), group2, length(data2)))tryCatch({test_result <- t.test(data1, data2)tibble(group1 = group1,group2 = group2,p = test_result$p.value,statistic = test_result$statistic,df = test_result$parameter)},error = function(e) {cat(sprintf("错误: %s\n", e$message))})
}# 创建比较组
create_comparisons <- function(groups) {comp <- combn(groups, 2)lapply(1:ncol(comp), function(i) as.character(comp[, i]))
}# 准备数据:2列,第1列为分组,第2列为数值
data <- readxl::read_xlsx("OP.xlsx")
col_names <- names(data)
xlab=col_names[1]
ylab=col_names[2]
data=dplyr::rename(data, group = 1, value = 2)# 创建比较组
my_comparisons <- create_comparisons(unique(data$group))stat_test <- map_dfr(my_comparisons, pf_ttest, data) %>%mutate(p.adj = p.adjust(p)) %>%add_significance(p.col = "p.adj",cutpoints = c(0, 0.001, 0.01, 0.05, 1),symbols = c("***", "**", "*", "ns"))

比较 Homo sapiens (n=22) vs M. assmensiss (n=4)

比较 Homo sapiens (n=22) vs M.mulatta (n=1)

错误: 'y'观察值数量不足

比较 Homo sapiens (n=22) vs M. arctoides (n=2)

比较 Homo sapiens (n=22) vs M. mulatta (n=15)

比较 Homo sapiens (n=22) vs M. fascicularis (n=1)

错误: 'y'观察值数量不足

比较 0mascus leucogenys (n=25) vs Pongo pygmaeus (n=7)

head(stat_test)

1

write_tsv(stat_test, "stat_test.tsv")
# 绘制箱形图
sig_comparisons <- stat_test %>%filter(p < 0.05) %>%select(group1, group2) %>%as.data.frame() %>% # 确保是 data.framesplit(1:nrow(.)) %>% # 按行分割lapply(function(x) as.character(x))# 创建基础图形
library(ggpubr)
p1 <- ggboxplot(data,x = "group",y = "value",color = "group",alpha = 0.3,xlab = xlab,ylab = ylab,bxp.errorbar = TRUE,bxp.errorbar.width = 0.2,add = "jitter",legend = "none"
) +theme(plot.title = element_text(size = 15, hjust = 0.5),axis.title = element_text(size = 12),axis.text.x = element_text(size = 10, angle = 60, hjust = 1),axis.text.y = element_text(size = 10),axis.ticks = element_line(linewidth = 0.2),)p1

2

p1 + stat_compare_means(comparisons = sig_comparisons,method = "t.test",label = "p.signif", # 显示显著性符号(*, **, ***)symnum.args = list(cutpoints = c(0, 0.001, 0.01, 0.05, Inf),symbols = c("***", "**", "*", "ns")),hide.ns = TRUE, # 隐藏不显著的标签vjust = 0.75,tip.length = 0,step.increase = 0.05,size = 3)

3

 

相关新闻

  • CSP-S2023游记
  • 2025苏州驾驶证培训推荐榜:摩托车驾驶证培训、A2驾驶证培训、大车A1驾驶证培训、大车B2驾驶证培训,省心学车选这些
  • 现代Linux网络命令简介

最新新闻

  • S12S BDM硬件握手协议:ACK脉冲原理与嵌入式调试实战
  • 前向车辆最小转弯约束下的两点间最短路径生成工具(MATLAB实现+图形可视化)
  • 2026年即时零售无人仓加盟推荐:无人外卖仓/外卖闪电仓/前置仓无人仓/即时零售运营加盟全解析 - 海棠依旧大
  • 2026年东莞全域保洁服务公司推荐:开荒清洁/外墙清洗/石材养护/甲醛治理/油烟管道清洁/日常驻场保洁 - 海棠依旧大
  • CVE-2025-55182本地复现:路径遍历漏洞原理与实战利用详解
  • 麻省理工研究人员打造 Fractal 操作系统,获苹果 M1 芯片新发现

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号