You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R的vegan包SIMPER检验中仅返回具统计显著性的物种?

筛选SIMPER检验中的显著差异物种

针对数据集过大导致summary(simper)输出冗余的问题,无需依赖默认的summary输出,直接从simper对象中提取置换检验的p值,筛选符合显著性水平的物种即可。以下是具体实现代码:

# 加载vegan包
library(vegan)

# 你的原有数据读取与SIMPER分析代码
pc = read.csv("water.csv", header = TRUE)
com = pc[,6:ncol(pc)]
m_com = as.matrix(com)
simper <- simper(m_com, group = pc$Location, permutations = 999)

# 自定义筛选函数:提取单个分组比较中p值显著的物种
filter_sig_species <- function(simper_subset, alpha = 0.05) {
  # 将单组SIMPER结果转为数据框
  res_df <- as.data.frame(simper_subset)
  # 筛选p值小于设定显著性水平的行,并按p值升序排序
  sig_res <- res_df[res_df$p < alpha, ]
  if (nrow(sig_res) > 0) {
    sig_res <- sig_res[order(sig_res$p), ]
  }
  return(sig_res)
}

# 对所有分组比较结果批量筛选显著物种
sig_simper_results <- lapply(simper, filter_sig_species, alpha = 0.05)

# 查看某一组的结果示例(比如第一组分组对)
print(sig_simper_results[[1]])

# 可选:将所有分组的显著结果合并为一个数据框,方便查看/导出
library(dplyr)
combined_sig_df <- bind_rows(sig_simper_results, .id = "分组对比")
print(combined_sig_df)

# 导出结果到CSV文件
write.csv(combined_sig_df, "SIMPER显著差异物种.csv", row.names = FALSE)

关键说明

  • 可通过调整alpha参数设置显著性阈值(默认0.05,可改为0.01等)
  • sig_simper_results是一个列表,每个元素对应一组采样位点的对比结果,名称为分组对的标识(如"Site1 vs Site2")
  • 若不需要按p值排序,可删除函数内的order相关代码

内容的提问来源于stack exchange,提问作者user20796953

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 00:05:14