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

012-方法学比较

方法学比较

分析目的

方法学比较(method
comparison)评价候选方法(candidate)与参考方法(reference)在相同样本上
测得结果的一致性,对应 CLSI EP09。ivdtoolsmcr()提供一个渐进式
S3 工作流:描述统计 → 相关分析 → 回归(OLS、WLS、Deming、加权
Deming、Passing–Bablok)→ Bland–Altman → 异常值 →
医学决定水平偏倚,并提供绘图、预测与汇总。本文以一个包含不同批次与样本类型的完整示例演示全流程,
并演示按批次/样本类型拆分后的子组比较。

示例数据为确定性的教学数据,其中人为加入了一个离群点以演示异常值检测;统计结果不自动构成合格
判定,接受标准应在分析前确定。

::: cell

library(ivdtools) library(readr)

:::

函数概述


函数 主要用途 关键输入或输出


mcr()创建方法学比较对象idcandidatereferenceweights

describe()描述统计 候选/参考/差值及额外列

correlation()相关分析 pearson/spearman/kendall

regression()回归拟合 ols/wls/deming/wdeming/pb、lambdaweights

bland_altman()一致性限 difference/ratio/percent、x_axis

outlier()差值异常值 grubbs/esd/dixon/iqr、type

bias()医学决定水平偏倚mdlinterval

predict()正向/逆向预测 需先回归

plot()/summary()图形与汇总type选择图形

示例:完整的单示例分析

读取和核验数据

数据包含 40 例,每例有编号id、候选方法结果candidate、参考方法结果
reference, 以及批次batch(B1/B2)与样本类型
sample_type(serum/plasma/urine):

::: cell

mc_dat <- read_csv("./data/method-comparison.csv", show_col_types = FALSE) mc_dat <- as.data.frame(mc_dat) str(mc_dat)

:::

::: cell

dim(mc_dat) knitr::kable(table(mc_dat$batch), caption = "批次分布") knitr::kable(table(mc_dat$sample_type), caption = "样本类型分布")

:::

创建对象与描述统计

::: cell

mc <- mcr(mc_dat, id = "id", candidate = "candidate", reference = "reference")

:::

::: cell

mc <- describe(mc, cols = c("batch", "sample_type")) mc

:::

describe()cols指定纳入描述的分类/数值附加列,支持-
前缀排除。

相关分析

::: cell

mc <- correlation(mc, method = "pearson")

:::

参数说明:correlation()method可选
"pearson""spearman""kendall"
相关反映两变量共同变化的程度,不等于一致性,不能替代 Bland–Altman
或回归偏差评价。

回归分析

依次比较 OLS、Deming、Passing–Bablok 与 WLS。由于regression()
会更新对象内的回归结果,多种 方法分别存入不同对象以便比较:

::: cell

mc_ols <- regression(mc, method = "ols") mc_dem <- regression(mc, method = "deming") mc_pb <- regression(mc, method = "pb") mc_wls <- regression(mc, method = "wls", weights = "1/y")

:::

::: cell

knitr::kable( data.frame( 方法 = c("OLS", "Deming", "Passing-Bablok", "WLS(1/y)"), 截距 = c(mc_ols$regression$intercept, mc_dem$regression$intercept, mc_pb$regression$intercept, mc_wls$regression$intercept), 斜率 = c(mc_ols$regression$slope, mc_dem$regression$slope, mc_pb$regression$slope, mc_wls$regression$slope) ), digits = 4, caption = "四种回归方法截距与斜率比较" )

:::

::: cell

print(mc_ols)

:::

本例 OLS 斜率 ≈ 0.96,95% CI 不含 1,说明候选方法存在约 4%
的比例偏差(数据真实偏差即为 5%)。

参数说明:regression()method可选
"ols""wls""deming""wdeming""pb"。 Deming 用lambda
指定方差比(ref/cand,默认 1);wls/wdeming必须提供
weights(内置方案 或数据列名);conf.level控制参数置信区间。

医学决定水平的偏倚

bias()评价在医学决定水平(MDL)处的预测偏倚:

::: cell

mc_ols <- bias(mc_ols, mdl = c(30, 80, 150), interval = "both") mc_ols$bias

:::

::: cell

plot(mc_ols, type = "bias", mdl = c(30, 80, 150))

:::

参数说明:bias(mdl, level, interval)mdl
为医学决定水平向量;interval可选
"""confidence""prediction""both"。偏倚定义参考候选方法
mdl处的拟合值与mdl
之差,解释时应结合回归方向和方案规定的允许偏倚。

Bland–Altman 分析

::: cell

mc_ols <- bland_altman(mc_ols, type = "difference")

:::

::: cell

plot(mc_ols, type = "bland_altman")

:::

::: cell

mc_ols$bland_altman[c("mean_diff", "sd_diff", "loa")]

:::

参数说明:bland_altman()type可选
"difference""ratio""percent"(Y 轴度量),x_axis可选
"mean""candidate""reference"(X 轴);agree.level控制 LoA
宽度,conf.level控制 LoA 置信区间。

异常值检测

对配对差值检测异常值:

::: cell

mc_ols <- outlier(mc_ols, method = "grubbs", type = "difference") mc_ols$outlier

:::

::: cell

mc_ols$outlier$indices

:::

检测到第 7
号样本的差值明显偏大。检出异常值不等于应删除------应回查原始记录、实验过程,并在有
充分理由时进行包含/不包含的敏感性分析。

预测

::: cell

predict(mc_ols, candidate = c(40, 100))

:::

::: cell

predict(mc_ols, reference = c(50, 120), inverse = TRUE)

:::

子组比较

不同批次或样本类型的方法表现可能不同。先按批次拆分,再对子组重跑回归与
Bland–Altman:

::: cell

for (b in c("B1", "B2")) { sub <- mc_dat[mc_dat$batch == b, ] mcs <- mcr(sub, id = "id", candidate = "candidate", reference = "reference") mcs <- regression(mcs, method = "ols") mcs <- bland_altman(mcs, type = "difference") cat(b, ": slope =", round(mcs$regression$slope, 4), ", mean diff =", round(mcs$bland_altman$mean_diff, 3), "\n") }

:::

按样本类型同理split()
后分别分析。子组比较的结论用于判断方法表现是否受批次/样本类型影响,
只有预先定义的接受标准才能支撑可接受性结论。

汇总

::: cell

summary(mc_ols)

:::

结果判读要点

  1. 方向核对:回归与 Bland–Altman
    均需确认候选相对参考的方向与偏差符号。
  2. 相关≠一致:相关系数高不等于方法一致,重点看回归斜率和
    Bland–Altman LoA。
  3. 方法选择:OLS 假设参考无误差;参考有误差时用
    Deming/PB;方差不齐时考虑 WLS/WDeming。
  4. 离群处理:检出离群值后回查并做敏感性分析,不自动删除。
  5. 子组解释:批次/样本类型拆分后分别判断,避免均值掩盖子组差异。
  6. 接受标准:偏差、LoA、MDL
    偏倚都必须与预先规定的允许限比较才能作出可接受性结论。
http://www.cnnetsun.cn/news/4261178.html

相关文章:

  • 基于Parser解析的车辆重识别:从语义分割到精准检索的实战指南
  • 200+ 插件!这个仓库收集了几乎所有的 DeepSeek Harness 插件!
  • 从黑盒到白盒:构建模块化RAG系统的核心组件与工程实践
  • Seedance 2.5专业工具:AI视频生成如何从玩具走向生产工具
  • STM32 DAC实战指南:从基础配置到DMA任意波形输出
  • LLM生产环境部署成本拆解:从显存计算到推理框架落地实践
  • 面向开发者的AI Agent支付系统设计与安全实践
  • 朴素贝叶斯中文情感分析实战:豆瓣电影评论三分类系统
  • 学习周记实践指南:构建个人知识管理系统,对抗遗忘驱动成长
  • 三层 vs 五层定制纸箱:大件家电运输破损率与成本增量实测对比
  • 把Claude Code会话变成实时流程图:AI编程代理的可观察性探索
  • AI未来50年:Power的三重含义与工程化落地
  • 面向具身智能的TVA-VLA跨模态协同新范式
  • 新能源制造环境下的跨层调度:基于GPIO隔离的机器人梯控防抖实现
  • 导购、陈列、缺货预警——门店那些“小事儿”,胜券AI智能体来帮忙
  • 轮胎图像人工标记:工业级缺陷标注实战指南
  • YOLOX目标检测核心解析:从Anchor-Free到SimOTA的工程实践
  • Grok @bot效率指南:用Python把模型接入命令行与自动化工作流
  • Docker 连接数据库(postgre+postgis)
  • 【OpenStack部署-1】
  • 【RAG】Qwen 本地 RAG 推理智能体案例讲解
  • Matplotlib图形绘制方法精讲:从面向对象架构到多子图布局实战
  • AI Agent 工程实践(33):Agent 如何监控
  • 动态规划实战:从最长公共子序列到蓝肽子序列问题解析
  • 【LLM】Qwen3-0.6B服务化部署、请求与性能测试
  • Pydantic 数据验证讲解
  • YOLO目标检测实战:从331张行人车辆数据集入门到部署
  • 充电桩产线 ATE 自动测试系统架构设计:上下料/测试/分拣怎么拼
  • RustFS 加入 NVIDIA Inception:AI 原生存储路线走到哪了
  • 本地LLM硬件需求怎么算?显存内存估算公式与配置指南