
方法学比较分析目的方法学比较methodcomparison评价候选方法candidate与参考方法reference在相同样本上测得结果的一致性对应 CLSI EP09。ivdtools的mcr()提供一个渐进式S3 工作流描述统计 → 相关分析 → 回归OLS、WLS、Deming、加权Deming、Passing–Bablok→ Bland–Altman → 异常值 →医学决定水平偏倚并提供绘图、预测与汇总。本文以一个包含不同批次与样本类型的完整示例演示全流程并演示按批次/样本类型拆分后的子组比较。示例数据为确定性的教学数据其中人为加入了一个离群点以演示异常值检测统计结果不自动构成合格判定接受标准应在分析前确定。::: celllibrary(ivdtools) library(readr):::函数概述函数 主要用途 关键输入或输出mcr()创建方法学比较对象id、candidate、reference、weightsdescribe()描述统计 候选/参考/差值及额外列correlation()相关分析 pearson/spearman/kendallregression()回归拟合 ols/wls/deming/wdeming/pb、lambda、weightsbland_altman()一致性限 difference/ratio/percent、x_axisoutlier()差值异常值 grubbs/esd/dixon/iqr、typebias()医学决定水平偏倚mdl、intervalpredict()正向/逆向预测 需先回归plot()/summary()图形与汇总type选择图形示例完整的单示例分析读取和核验数据数据包含 40 例每例有编号id、候选方法结果candidate、参考方法结果reference 以及批次batchB1/B2与样本类型sample_typeserum/plasma/urine::: cellmc_dat - read_csv(./data/method-comparison.csv, show_col_types FALSE) mc_dat - as.data.frame(mc_dat) str(mc_dat):::::: celldim(mc_dat) knitr::kable(table(mc_dat$batch), caption 批次分布) knitr::kable(table(mc_dat$sample_type), caption 样本类型分布):::创建对象与描述统计::: cellmc - mcr(mc_dat, id id, candidate candidate, reference reference):::::: cellmc - describe(mc, cols c(batch, sample_type)) mc:::describe()的cols指定纳入描述的分类/数值附加列支持-前缀排除。相关分析::: cellmc - correlation(mc, method pearson):::参数说明correlation()的method可选pearson、spearman、kendall。相关反映两变量共同变化的程度不等于一致性不能替代 Bland–Altman或回归偏差评价。回归分析依次比较 OLS、Deming、Passing–Bablok 与 WLS。由于regression()会更新对象内的回归结果多种 方法分别存入不同对象以便比较::: cellmc_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):::::: cellknitr::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 四种回归方法截距与斜率比较 ):::::: cellprint(mc_ols):::本例 OLS 斜率 ≈ 0.9695% CI 不含 1说明候选方法存在约 4%的比例偏差数据真实偏差即为 5%。参数说明regression()的method可选ols、wls、deming、wdeming、pb。 Deming 用lambda指定方差比ref/cand默认 1wls/wdeming必须提供weights内置方案 或数据列名conf.level控制参数置信区间。医学决定水平的偏倚用bias()评价在医学决定水平MDL处的预测偏倚::: cellmc_ols - bias(mc_ols, mdl c(30, 80, 150), interval both) mc_ols$bias:::::: cellplot(mc_ols, type bias, mdl c(30, 80, 150)):::参数说明bias(mdl, level, interval)中mdl为医学决定水平向量interval可选、confidence、prediction、both。偏倚定义参考候选方法mdl处的拟合值与mdl之差解释时应结合回归方向和方案规定的允许偏倚。Bland–Altman 分析::: cellmc_ols - bland_altman(mc_ols, type difference):::::: cellplot(mc_ols, type bland_altman):::::: cellmc_ols$bland_altman[c(mean_diff, sd_diff, loa)]:::参数说明bland_altman()的type可选difference、ratio、percentY 轴度量x_axis可选mean、candidate、referenceX 轴agree.level控制 LoA宽度conf.level控制 LoA 置信区间。异常值检测对配对差值检测异常值::: cellmc_ols - outlier(mc_ols, method grubbs, type difference) mc_ols$outlier:::::: cellmc_ols$outlier$indices:::检测到第 7号样本的差值明显偏大。检出异常值不等于应删除------应回查原始记录、实验过程并在有充分理由时进行包含/不包含的敏感性分析。预测::: cellpredict(mc_ols, candidate c(40, 100)):::::: cellpredict(mc_ols, reference c(50, 120), inverse TRUE):::子组比较不同批次或样本类型的方法表现可能不同。先按批次拆分再对子组重跑回归与Bland–Altman::: cellfor (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()后分别分析。子组比较的结论用于判断方法表现是否受批次/样本类型影响只有预先定义的接受标准才能支撑可接受性结论。汇总::: cellsummary(mc_ols):::结果判读要点方向核对回归与 Bland–Altman均需确认候选相对参考的方向与偏差符号。相关≠一致相关系数高不等于方法一致重点看回归斜率和Bland–Altman LoA。方法选择OLS 假设参考无误差参考有误差时用Deming/PB方差不齐时考虑 WLS/WDeming。离群处理检出离群值后回查并做敏感性分析不自动删除。子组解释批次/样本类型拆分后分别判断避免均值掩盖子组差异。接受标准偏差、LoA、MDL偏倚都必须与预先规定的允许限比较才能作出可接受性结论。