16 算法原理简介
16.1 说明
本文综合 ivdtools 所依据的算法原理,供理解各分析模块的统计基础与包接口的映射关系。 涉及异常值/分布、方法比较/定性评价、ROC、精密度/ANOVA/参考区间、 QC/稳定性/方程拟合。为便于对照,方法比较统一采用候选 \(X\)、参考 \(Y\)、回归模型 \(Y=a+bX\) 的约定;包内具体参数名与方向以 ivdtools 的 list_equation()、list_sadler()、list_westgard() 等注册表为准。
公式用于说明原理,不替代教科书推导,也不替代方案中对方法选择的判断。
16.2 通用约定与符号
有序样本 \(x_{(1)}\le\cdots\le x_{(n)}\),均值 \(\bar x\),标准差 \(s\),显著性水平 \(\alpha=1-\text{level}\)。多数检验要求样本近似独立;检测到的”异常”或”不服从某分布”只说明与 假设模型的冲突强度,不能量化其对最终性能估计的实际影响,也不自动触发删除。
16.3 异常值与分布算法
16.3.1 异常值
- Grubbs:\(G=\max_i|x_i-\bar x|/s\),以 t 分布导出的临界值判断最极端点;近似正态且一次针对 一个点。映射:
outliers_test(method="grubbs", alpha=...)。 - 广义 ESD:逐次移除最极端点,计算 \(R_i\) 并与随剩余 n 改变的 \(\lambda_i\) 比较;最大异常点数 由附加参数限制。
- Dixon:用端点间隙与样本极差之比判断,临界值依赖 n,只适合小样本范围。
- IQR:小于 \(Q_1-k\,IQR\) 或大于 \(Q_3+k\,IQR\) 标记,默认系数由接口实现;这是规则而非显著性 检验。
outliers_test() 先排除缺失、保留原始行号,再返回统计量、临界值和异常标记。常数列会使以 s 或 极差为分母的统计量无定义;多次试验会增加假阳性。
16.3.2 正态性
- Shapiro–Wilk:\(W=(\sum a_i x_{(i)})^2/\sum(x_i-\bar x)^2\),权重来自正态次序统计量。
- Anderson–Darling:经验分布与拟合正态 CDF 的加权平方距离,对尾部权重更大。
- Lilliefors:参数由样本估计时的 Kolmogorov–Smirnov 型统计量。
- Cramér–von Mises:经验 CDF 与理论 CDF 的整体积分平方距离。
normal_test(method="auto") 根据样本条件选择可用检验(n≤50 用 Shapiro–Wilk、更大用 Anderson–Darling 等),level 映射为拒绝阈值。图形提供 Q-Q 与直方图;p 值不能量化偏离对性能 估计的实际影响。
16.4 方法比较与定性评价算法
16.4.1 回归、相关与偏差
统一方向为候选 \(X\)、参考 \(Y\),模型 \(Y=a+bX\)。
- OLS 最小化 \(\sum(y_i-a-bx_i)^2\);假设 X 误差可忽略。
- Deming 最小化到直线的加权正交距离,误差方差比映射为
lambda;\(\lambda=\sigma_Y^2/\sigma_X^2\) 的方向必须核对源码或方案。 - Passing–Bablok 以两两斜率中位数估计 b,再由 \(y_i-bx_i\) 中位数估计 a,对异常值较稳健,但 仍要求线性与独立样本。
- Pearson 衡量线性相关,Spearman/Kendall 衡量秩关联;
correlation(method=...)回答的是 “相关”而不是”一致”,不能替代偏差与一致性限评价。
绝对 Bland–Altman 差值记为 \(d_i=X_i-Y_i\)(报告必须复核包对象实际方向),均差 \(\bar d\),一致性 界限 \(\bar d\pm z_{(1+p)/2}s_d\);相对 BA 用百分比差。agree.level 控制覆盖比例,conf.level 控制估计区间。bias() 将回归方程映射到指定 level,输出预测偏差及置信/预测区间。
16.4.2 四格表
由 TP、FP、TN、FN 得:
\[Se=\frac{TP}{TP+FN},\quad Sp=\frac{TN}{TN+FP},\quad PPV=\frac{TP}{TP+FP}.\]
Wilson 区间用得分检验反演;精确区间用二项分布尾概率反演。Cohen \(\kappa=(P_o-P_e)/(1-P_e)\),其中 \(P_e\) 由边际比例得到。McNemar 只用不一致格 b、c,渐近统计量 近似 \((b-c)^2/(b+c)\)(连续性校正或精确版本以对象记录为准)。包接口映射为 diagnostics()、 kappa()、mcnemar();零分母、小格数和极端患病率均需显式说明。
16.5 ROC 算法
对每个阈值 t,按指标方向计算 \(TPR(t)=Se(t)\) 与 \(FPR(t)=1-Sp(t)\)。经验 ROC 将所有观测值作为 候选阈值并连成阶梯/折线;AUC 用相邻点梯形求和:
\[AUC=\sum_i \frac{TPR_i+TPR_{i+1}}{2}(FPR_{i+1}-FPR_i).\]
auc(roc_obj, cols=...) 保存逐指标 AUC 表;经验 AUC 可解释为随机阳性得分高于随机阴性的概率 (方向调整后)。样本相关的多曲线比较、部分 AUC 或复杂抽样不由这个点估计自动解决。
Youden 指数 \(J(t)=Se(t)+Sp(t)-1\);左上角法最小化 \(\sqrt{(1-Se)^2+(1-Sp)^2}\)。cutoff() 同时 输出两类最优点。并列阈值、测量分辨率、错判成本和临床患病率会改变实际选择,因此”数学最优”不是 自动的临床 cutoff。
多指标模型为
\[\operatorname{logit}\{P(Y=1)\}=\beta_0+\sum_j\beta_jx_j,\]
由 mlr(cols, name) 通过二项 logistic 拟合;predict() 把线性预测量经 logistic 逆变换为概率, 默认 0.5 分类,并用模型协方差计算区间。完全分离、共线性、缺失和小事件数会导致不稳定。训练集上 重新画 ROC 是表观性能,必须区分开发与验证数据。
16.6 精密度、ANOVA 与参考区间算法
16.6.1 方差分量
嵌套设计可写为 \(y_{ijkl}=\mu+D_i+R_{j(i)}+\varepsilon_{k(ij)}\),总方差 \(\sigma_T^2=\sigma_D^2+\sigma_R^2+\sigma_e^2\)。precision(form = y ~ day/run) 把公式传给 VCA::anovaVCA();variance()/vc() 汇总 VC、\(SD=\sqrt{VC}\)、\(CV=100SD/\bar y\) 与占比。 Satterthwaite 用
\[\nu\approx\frac{(\sum c_jMS_j)^2}{\sum(c_jMS_j)^2/\nu_j}\]
近似有效自由度,再以卡方分位数构造方差/SD 区间。负分量、低自由度和不平衡会使近似变差。
Sadler 精密度轮廓把方差或 SD 表示为浓度函数;list_sadler() 列出 10 个候选式, profile(model.no=...) 调用 VFP 拟合并用 AIC 选择。不同模型对低浓度外推差异很大,必须检查浓度 覆盖和残差。
16.6.2 ANOVA 与参考区间
bottle_anova() 用 stats::aov() 分解组间/组内平方和;Bartlett 检验方差齐性,残差 Shapiro–Wilk 检查正态性;Tukey HSD 用学生化极差同时控制两两比较家族错误率。
参数参考区间在正态假设下近似 \(\bar x\pm z_{1-\alpha/2}s\);非参数百分位法使用 R quantile type 6, 端点由有序统计量得到,端点区间由二项次序或 bootstrap 路径计算。interval 是覆盖率、ci 是端点 置信度,二者含义不同。样本选择偏倚不能由任何区间算法修复。
16.7 QC、稳定性与方程拟合算法
16.7.1 QC 与稳定性
Levey–Jennings 标准化 \(z_i=(x_i-\mu_0)/\sigma_0\);Westgard 规则在单点、连续同侧/同方向或同批多 水平间组合这些 z 值。qc_chart() 按 run 顺序评价,youden_plot() 以两个控制品的目标均值/SD 形成象限和椭圆式判读;顺序、目标值和批次边界属于算法输入。
节点相对偏差为 \(100(x_t-x_0)/x_0\)(relative)或 \(x_t-x_0\)(absolute)。stability_regression() 拟合时间趋势,stability_time() 求置信边界/趋势与允许限的交点。MKT 由 Arrhenius 加权温度历程:
\[T_k=-\frac{E_a}{R}\left[\log\left\{\sum_i w_i\exp(-E_a/RT_i)\right\}\right]^{-1}.\]
Arrhenius 关系 \(k=Ae^{-E_a/(RT)}\);零级 \(C_t=C_0-kt\),一级 \(\log C_t=\log C_0-kt\)。mkt(ea=83.144)、 arrhenius(order, target_temp, limit) 映射这些量。温度必须转为 Kelvin 参与公式,外推受反应机制 不变假设限制。
16.7.2 方程拟合
线性/多项式以最小二乘估计;指数和 4PL/5PL 由 nlsLM/约束优化。典型 4PL 为
\[y=d+\frac{a-d}{1+(x/c)^b},\]
5PL 再增加不对称指数 g,但包内具体参数名和方向以 list_equation() 为准。加权拟合最小化 \(\sum w_i(y_i-f(x_i,\theta))^2\)。AIC 近似 \(-2\log L+2k\);残差揭示异方差、曲率和异常点。
均值置信区间反映 \(E(Y|X)\) 的不确定性,预测区间还含单次观测误差。非线性逆预测需要数值求根, 平坦平台附近的微小信号误差可转成巨大浓度误差。初值、边界、权重、方程版本、收敛码和失败模型都应 进入审计记录。
16.8 模块与指南对应
| 主题 | 主要函数 | 对应 CLSI 指南 |
|---|---|---|
| 异常值与正态性 | outliers_test()、normal_test() |
通用(EP 各指南的分析前步骤) |
| 方法比较 | mcr() 系列 |
EP09 |
| 定性评价 | fourfold_table 系列 |
EP12 |
| ROC | roc() 系列 |
EP24(参考) |
| 精密度 | precision() 系列 |
EP05 |
| 瓶/批 ANOVA | bottle_anova() |
EP15 |
| 参考区间 | reference_interval() |
EP28-A3c |
| 稳定性 | stability_*()、arrhenius()、mkt() |
EP25 |
| QC | qc_chart()、youden_plot() |
Westgard 规则 |
| 方程拟合 | fit_equation() 系列 |
EP06 |
| 分析特异性 | lob_lod_loq() |
EP17 |
16.9 使用边界
- 公式与统计量只在合理假设下有效;假设不满足时结果不能机械套用。
- “统计显著”“数学最优”不等于”临床/产品可接受”;接受标准必须在分析前确定。
- 训练数据上的性能(如 ROC AUC、回归拟合优度)是表观性能,推广前应在独立数据上验证。
- 所有计算应在方案、标准与专业判断指导下进行,并由合适的人员复核。