当前位置: 首页 > article >正文

R语言*号标识显著性差异判断组间差异是否具有统计意义


前言

该R代码用于对Iris数据集进行多组比较分析,探讨不同鸢尾花品种在不同测量变量(花萼和花瓣长度与宽度)上的显著性差异。通过将数据转换为长格式,并利用ANOVA和Tukey检验,代码生成了不同品种间的显著性标记,并将结果导出为Excel文件。同时,代码使用柱状图显示均值、标准差及显著性星号标记,使结果更加直观。


代码说明

代码如下

# 加载必要的包
library(dplyr)         # 用于数据操作
library(tidyr)         # 用于数据整理
library(ggplot2)       # 用于数据可视化
library(multcompView)  # 用于多重比较结果可视化
library(writexl)       # 用于将数据导出为Excel文件
library(tidyverse)     # 包含dplyr、tidyr等,用于数据处理和可视化

# 定义函数用于添加显著性星号
add_significance <- function(p_value) {
  if (p_value < 0.001) {
    "***"
  } else if (p_value < 0.01) {
    "**"
  } else if (p_value < 0.05) {
    "*"
  } else {
    ""
  }
}
# 根据P值的大小添加显著性符号("*""**""***")

# 将数据转换为长格式
iris_long <- iris %>%
  pivot_longer(cols = starts_with("Sepal") | starts_with("Petal"),
               names_to = "Variable", values_to = "Value")
# 将Iris数据集转换为长格式,以便后续分组计算。新列命名为Variable和Value

# 计算每个Variable和Species组合的均值和标准差
summary_stats <- iris_long %>%
  group_by(Variable, Species) %>%
  summarise(
    mean = mean(Value),
    sd = sd(Value),
    .groups = 'drop'
  )
# 对每个测量变量和品种组合,计算均值和标准差,结果存储在summary_stats中

# 对每个变量组的不同品种之间进行ANOVA和Tukey检验,并生成显著性星号标记
significance_results <- data.frame()   # 创建空数据框以存储显著性检验结果
variables <- unique(iris_long$Variable) # 获取所有变量名的唯一值

for (var in variables) {
  # 子集数据
  var_data <- iris_long %>% filter(Variable == var)
  # 选择当前变量的数据子集
  
  # ANOVA 和 Tukey 检验
  anova_result <- aov(Value ~ Species, data = var_data)
  tukey_result <- TukeyHSD(anova_result)
  # 使用ANOVA检验变量在不同品种之间的差异,然后进行Tukey事后检验
  
  # 提取 Tukey 检验结果
  tukey_data <- as.data.frame(tukey_result$Species)
  colnames(tukey_data)[colnames(tukey_data) == "p adj"] <- "p_value" # 重命名列
  tukey_data <- tukey_data %>%
    rownames_to_column(var = "comparison") %>%
    mutate(significance = sapply(p_value, add_significance), Variable = var) %>%
    select(Variable, comparison, significance)
  # 提取Tukey检验结果并添加显著性星号
  
  significance_results <- rbind(significance_results, tukey_data)
  # 将每个变量的显著性结果添加到significance_results中
}

# 将显著性结果合并到 summary_stats 数据框
summary_stats <- summary_stats %>%
  left_join(significance_results %>%
              select(Variable, significance),
            by = "Variable") %>%
  mutate(y_position = mean + sd + 0.2) # 设置星号显示位置
# 将显著性星号标记添加到均值和标准差数据框中,y_position用于设置星号显示高度

# 导出到Excel
write_xlsx(list("Summary Statistics" = summary_stats,
                "Significance Results" = significance_results),
           "iris_species_significance.xlsx")
# 将统计汇总和显著性检验结果导出为Excel文件

# 绘制分组柱状图并添加显著性星号
ggplot(summary_stats, aes(x = Variable, y = mean, fill = Species)) +
  geom_bar(stat = "identity", position = position_dodge(width = 0.8)) +
  geom_errorbar(aes(ymin = mean - sd, ymax = mean + sd),
                width = 0.2, position = position_dodge(width = 0.8)) +
  geom_text(aes(y = y_position, label = significance),
            position = position_dodge(width = 0.8), vjust = -0.5, color = "red") +
  labs(title = "Mean and SD of Iris Measurements by Species",
       x = "Measurement Variable", y = "Mean Value") +
  theme_minimal() +
  scale_fill_brewer(palette = "Set1")
# 使用ggplot2绘制分组柱状图,添加误差条和显著性标记,并对图例和标签进行格式设置

总结

此代码为研究者提供了一个完整的数据分析和可视化流程,不仅对数据进行了均值、标准差的计算,还通过显著性星号展示了各品种间的差异。通过将显著性分析结果以星号标记在图中呈现,帮助读者更清晰地了解不同变量在鸢尾花品种之间的差异,从而更好地理解数据。
在这里插入图片描述


http://www.kler.cn/a/387773.html

相关文章:

  • JVM详解:JVM的系统架构
  • python: postgreSQL using psycopg2 or psycopg
  • 【juc】AbstractQueuedSynchronized为什么采用双向链表
  • JUC-locks锁
  • 第8章 利用CSS制作导航菜单
  • OSS文件上传
  • 5. Redis的 安全与性能优化
  • ubuntu问题 -- ubuntu图形化桌面突然打不开了, 一开机黑屏, 或者直接就是login登录的tty命令行界面
  • S32G-VNP-RDB2开发环境搭建
  • 【贪心】【哈希】个人练习-Leetcode-1296. Divide Array in Sets of K Consecutive Numbers
  • 【数据库系统概论】第3章 SQL(三)数据更新
  • 将Go项目编译为可执行文件(windows/linux)
  • Web 开发新趋势下,GET 请求与 POST 请求如何抉择
  • 考研要求掌握的C语言(选择排序)
  • 给cantian建议的第二篇
  • 备忘录模式:保存对象状态的设计模式
  • Python脚本模拟远程网络探测
  • 动态规划理论基础和习题【力扣】【算法学习day.26】
  • MYSQL隔离性原理——MVCC
  • 实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
  • mac-泛洪
  • 我的 C# 白盒测试学习路线
  • [C++11] 类中新特性的添加
  • 网页版五子棋——匹配模块(服务器端开发)
  • 梧桐数据库与GBase日期函数比较
  • C++ 越来越像函数式编程了!