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

基于中位数的细菌抑制实验结果百分比偏差分类与评分方法咨询

问题描述

我正在测试一种抑制细菌生长的分子(所有实验使用相同浓度),实验数据如下:

a <- 
structure(list(treatment = c("a", "a", "a", "a", "a"), result = c(0.113587347232207, 
0.0126742712294043, 0.000643500643500661, 0.00404682757623936, 
0.821428571428571)), row.names = c(NA, -5L), class = "data.frame")

数据框展示:

> a
  treatment       result
1         a 0.1135873472
2         a 0.0126742712
3         a 0.0006435006
4         a 0.0040468276
5         a 0.8214285714

注:result取值规则为1=无抑制,0=最大抑制,已计算出result的中位数:

> median(a$result)
[1] 0.01267427

需求:

  • 将实验按与中位数的偏差百分比分类
  • 基于抑制率建立10%、20%……100%的评分
  • 验证该方法是否可行

实现步骤

1. 按与中位数的偏差百分比分类

先明确偏差百分比计算公式:偏差百分比 = ((单个result值 - 中位数) / 中位数) * 100,在R中直接新增列即可实现分类:

# 先提取中位数
med_val <- median(a$result)

# 计算偏差百分比
a$deviation_pct <- ((a$result - med_val) / med_val) * 100

# 自定义区间分类(示例设置:正负20%为正常区间,超出则标记为显著偏离)
a$deviation_class <- cut(a$deviation_pct,
                         breaks = c(-Inf, -20, 20, Inf),
                         labels = c("显著低于中位数", "接近中位数", "显著高于中位数"))

2. 基于抑制率建立分级评分

首先将result转换为抑制率:抑制率 = (1 - result) * 100(对应result=1时抑制率0%,result=0时抑制率100%),再按10%间隔分组:

# 计算抑制率
a$inhibition_rate <- (1 - a$result) * 100

# 按10%间隔生成评分等级
a$inhibition_score <- cut(a$inhibition_rate,
                          breaks = seq(0, 100, 10),
                          labels = paste0(seq(10, 100, 10), "%抑制"),
                          include.lowest = TRUE)

运行后的数据框会新增4列,示例输出:

> a
  treatment       result deviation_pct   deviation_class inhibition_rate inhibition_score
1         a 0.1135873472      796.2000 显著高于中位数          88.6412668        90%抑制
2         a 0.0126742712        0.0000    接近中位数          98.7325729       100%抑制
3         a 0.0006435006     -94.9230 显著低于中位数          99.9356499       100%抑制
4         a 0.0040468276     -68.0670 显著低于中位数          99.5953172       100%抑制
5         a 0.8214285714     6380.0000 显著高于中位数          17.8571429        20%抑制

方法可行性分析

1. 偏差百分比分类

  • 可行,但需注意你的数据存在极端值(比如第5个样本result=0.82),会导致偏差百分比异常大,拉偏分类效果。如果是小样本,建议先排查是否为实验失误导致的异常值,或者改用**中位数绝对偏差(MAD)**判断偏离度,比百分比偏差更鲁棒。
  • 若样本量足够、数据分布均匀,这种分类能有效区分实验结果的离散程度,帮助识别重复性差的实验。

2. 抑制率分级评分

  • 完全可行:这种分级方式直观易懂,符合常规的抑制效果评价逻辑,能快速将连续的抑制率转换为离散等级,便于结果汇报和对比。
  • 可灵活调整:如果需要更精细的分级,修改breaks参数的间隔即可;include.lowest = TRUE确保0%抑制的样本能被正确归类,避免边界歧义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 23:05:28