算法原理简介
说明
本文综合 ivdtools
所依据的算法原理,供理解各分析模块的统计基础与包接口的映射关系。
涉及异常值/分布、方法比较/定性评价、ROC、精密度/ANOVA/参考区间、
QC/稳定性/方程拟合。为便于对照,方法比较统一采用候选 XXX、参考
YYY、回归模型 Y=a+bXY=a+bXY=a+bX 的约定;包内具体参数名与方向以 ivdtools 的
list_equation()、list_sadler()、list_westgard() 等注册表为准。
公式用于说明原理,不替代教科书推导,也不替代方案中对方法选择的判断。
通用约定与符号
有序样本 x(1)≤⋯≤x(n)x_{(1)}\\le\\cdots\\le x_{(n)}x(1)≤⋯≤x(n),均值 xˉ\\bar xxˉ,标准差
sss,显著性水平
α=1−level\\alpha=1-\\text{level}α=1−level。多数检验要求样本近似独立;检测到的"异常"或"不服从某分布"只说明与
假设模型的冲突强度,不能量化其对最终性能估计的实际影响,也不自动触发删除。
异常值与分布算法
异常值
- Grubbs:G=maxi∣xi−xˉ∣/sG=\\max_i|x_i-\\bar x|/sG=maxi∣xi−xˉ∣/s,以 t
分布导出的临界值判断最极端点;近似正态且一次针对
一个点。映射:outliers_test(method="grubbs", alpha=…)。 - 广义 ESD:逐次移除最极端点,计算 RiR_iRi 并与随剩余 n 改变的
λi\\lambda_iλi 比较;最大异常点数 由附加参数限制。 - Dixon:用端点间隙与样本极差之比判断,临界值依赖
n,只适合小样本范围。 - IQR:小于 Q1−k IQRQ_1-k\\,IQRQ1−kIQR 或大于 Q3+k IQRQ_3+k\\,IQRQ3+kIQR
标记,默认系数由接口实现;这是规则而非显著性 检验。
outliers_test()
先排除缺失、保留原始行号,再返回统计量、临界值和异常标记。常数列会使以 s
或 极差为分母的统计量无定义;多次试验会增加假阳性。
正态性
- Shapiro–Wilk:W=(∑aix(i))2/∑(xi−xˉ)2W=(\\sum a_i x_{(i)})^2/\\sum(x_i-\\bar x)^2W=(∑aix(i))2/∑(xi−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 值不能量化偏离对性能
估计的实际影响。
方法比较与定性评价算法
回归、相关与偏差
统一方向为候选 XXX、参考 YYY,模型 Y=a+bXY=a+bXY=a+bX。
- OLS 最小化 ∑(yi−a−bxi)2\\sum(y_i-a-bx_i)^2∑(yi−a−bxi)2;假设 X 误差可忽略。
- Deming 最小化到直线的加权正交距离,误差方差比映射为
lambda;λ=σY2/σX2\\lambda=\\sigma_Y^2/\\sigma_X^2λ=σY2/σX2 的方向必须核对源码或方案。 - Passing–Bablok 以两两斜率中位数估计 b,再由 yi−bxiy_i-bx_iyi−bxi 中位数估计
a,对异常值较稳健,但 仍要求线性与独立样本。 - Pearson 衡量线性相关,Spearman/Kendall
衡量秩关联;correlation(method=…) 回答的是
“相关"而不是"一致”,不能替代偏差与一致性限评价。
绝对 Bland–Altman 差值记为
di=Xi−Yid_i=X_i-Y_idi=Xi−Yi(报告必须复核包对象实际方向),均差 dˉ\\bar ddˉ,一致性 界限
dˉ±z(1+p)/2sd\\bar d\\pm z_{(1+p)/2}s_ddˉ±z(1+p)/2sd;相对 BA 用百分比差。agree.level
控制覆盖比例,conf.level 控制估计区间。bias() 将回归方程映射到指定
level,输出预测偏差及置信/预测区间。
四格表
由 TP、FP、TN、FN 得:
Se=TPTP+FN,Sp=TNTN+FP,PPV=TPTP+FP.Se=\\frac{TP}{TP+FN},\\quad Sp=\\frac{TN}{TN+FP},\\quad PPV=\\frac{TP}{TP+FP}.Se=TP+FNTP,Sp=TN+FPTN,PPV=TP+FPTP.
Wilson 区间用得分检验反演;精确区间用二项分布尾概率反演。Cohen
κ=(Po−Pe)/(1−Pe)\\kappa=(P_o-P_e)/(1-P_e)κ=(Po−Pe)/(1−Pe),其中 PeP_ePe 由边际比例得到。McNemar
只用不一致格 b、c,渐近统计量 近似
(b−c)2/(b+c)(b-c)^2/(b+c)(b−c)2/(b+c)(连续性校正或精确版本以对象记录为准)。包接口映射为
diagnostics()、
kappa()、mcnemar();零分母、小格数和极端患病率均需显式说明。
ROC 算法
对每个阈值 t,按指标方向计算 TPR(t)=Se(t)TPR(t)=Se(t)TPR(t)=Se(t) 与 FPR(t)=1−Sp(t)FPR(t)=1-Sp(t)FPR(t)=1−Sp(t)。经验
ROC 将所有观测值作为 候选阈值并连成阶梯/折线;AUC 用相邻点梯形求和:
AUC=∑iTPRi+TPRi+12(FPRi+1−FPRi).AUC=\\sum_i \\frac{TPR_i+TPR_{i+1}}{2}(FPR_{i+1}-FPR_i).AUC=i∑2TPRi+TPRi+1(FPRi+1−FPRi).
auc(roc_obj, cols=…) 保存逐指标 AUC 表;经验 AUC
可解释为随机阳性得分高于随机阴性的概率
(方向调整后)。样本相关的多曲线比较、部分 AUC
或复杂抽样不由这个点估计自动解决。
Youden 指数 J(t)=Se(t)+Sp(t)−1J(t)=Se(t)+Sp(t)-1J(t)=Se(t)+Sp(t)−1;左上角法最小化
(1−Se)2+(1−Sp)2\\sqrt{(1-Se)^2+(1-Sp)^2}(1−Se)2+(1−Sp)2。cutoff() 同时
输出两类最优点。并列阈值、测量分辨率、错判成本和临床患病率会改变实际选择,因此"数学最优"不是
自动的临床 cutoff。
多指标模型为
logit{P(Y=1)}=β0+∑jβjxj,\\operatorname{logit}\\{P(Y=1)\\}=\\beta_0+\\sum_j\\beta_jx_j,logit{P(Y=1)}=β0+j∑βjxj,
由 mlr(cols, name) 通过二项 logistic 拟合;predict() 把线性预测量经
logistic 逆变换为概率, 默认 0.5
分类,并用模型协方差计算区间。完全分离、共线性、缺失和小事件数会导致不稳定。训练集上
重新画 ROC 是表观性能,必须区分开发与验证数据。
精密度、ANOVA 与参考区间算法
方差分量
嵌套设计可写为 yijkl=μ+Di+Rj(i)+εk(ij)y_{ijkl}=\\mu+D_i+R_{j(i)}+\\varepsilon_{k(ij)}yijkl=μ+Di+Rj(i)+εk(ij),总方差
σT2=σD2+σR2+σe2\\sigma_T^2=\\sigma_D^2+\\sigma_R^2+\\sigma_e^2σT2=σD2+σR2+σe2。precision(form = y ~ day/run)
把公式传给 VCA::anovaVCA();variance()/vc() 汇总
VC、SD=VCSD=\\sqrt{VC}SD=VC、CV=100SD/yˉCV=100SD/\\bar yCV=100SD/yˉ 与占比。 Satterthwaite 用
ν≈(∑cjMSj)2∑(cjMSj)2/νj\\nu\\approx\\frac{(\\sum c_jMS_j)^2}{\\sum(c_jMS_j)^2/\\nu_j}ν≈∑(cjMSj)2/νj(∑cjMSj)2
近似有效自由度,再以卡方分位数构造方差/SD
区间。负分量、低自由度和不平衡会使近似变差。
Sadler 精密度轮廓把方差或 SD 表示为浓度函数;list_sadler() 列出 10
个候选式, profile(model.no=…) 调用 VFP 拟合并用 AIC
选择。不同模型对低浓度外推差异很大,必须检查浓度 覆盖和残差。
ANOVA 与参考区间
bottle_anova() 用 stats::aov() 分解组间/组内平方和;Bartlett
检验方差齐性,残差 Shapiro–Wilk 检查正态性;Tukey HSD
用学生化极差同时控制两两比较家族错误率。
参数参考区间在正态假设下近似
xˉ±z1−α/2s\\bar x\\pm z_{1-\\alpha/2}sxˉ±z1−α/2s;非参数百分位法使用 R quantile type 6,
端点由有序统计量得到,端点区间由二项次序或 bootstrap
路径计算。interval 是覆盖率、ci 是端点
置信度,二者含义不同。样本选择偏倚不能由任何区间算法修复。
QC、稳定性与方程拟合算法
QC 与稳定性
Levey–Jennings 标准化 zi=(xi−μ0)/σ0z_i=(x_i-\\mu_0)/\\sigma_0zi=(xi−μ0)/σ0;Westgard
规则在单点、连续同侧/同方向或同批多 水平间组合这些 z 值。qc_chart() 按
run 顺序评价,youden_plot() 以两个控制品的目标均值/SD
形成象限和椭圆式判读;顺序、目标值和批次边界属于算法输入。
节点相对偏差为 100(xt−x0)/x0100(x_t-x_0)/x_0100(xt−x0)/x0(relative)或
xt−x0x_t-x_0xt−x0(absolute)。stability_regression()
拟合时间趋势,stability_time() 求置信边界/趋势与允许限的交点。MKT 由
Arrhenius 加权温度历程:
Tk=−EaR[log{∑iwiexp(−Ea/RTi)}]−1.T_k=-\\frac{E_a}{R}\\left[\\log\\left\\{\\sum_i w_i\\exp(-E_a/RT_i)\\right\\}\\right]^{-1}.Tk=−REa[log{i∑wiexp(−Ea/RTi)}]−1.
Arrhenius 关系 k=Ae−Ea/(RT)k=Ae^{-E_a/(RT)}k=Ae−Ea/(RT);零级 Ct=C0−ktC_t=C_0-ktCt=C0−kt,一级
logCt=logC0−kt\\log C_t=\\log C_0-ktlogCt=logC0−kt。mkt(ea=83.144)、
arrhenius(order, target_temp, limit) 映射这些量。温度必须转为 Kelvin
参与公式,外推受反应机制 不变假设限制。
方程拟合
线性/多项式以最小二乘估计;指数和 4PL/5PL 由 nlsLM/约束优化。典型 4PL
为
y=d+a−d1+(x/c)b,y=d+\\frac{a-d}{1+(x/c)^b},y=d+1+(x/c)ba−d,
5PL 再增加不对称指数 g,但包内具体参数名和方向以 list_equation()
为准。加权拟合最小化 ∑wi(yi−f(xi,θ))2\\sum w_i(y_i-f(x_i,\\theta))^2∑wi(yi−f(xi,θ))2。AIC 近似
−2logL+2k-2\\log L+2k−2logL+2k;残差揭示异方差、曲率和异常点。
均值置信区间反映 E(Y∣X)E(Y|X)E(Y∣X)
的不确定性,预测区间还含单次观测误差。非线性逆预测需要数值求根,
平坦平台附近的微小信号误差可转成巨大浓度误差。初值、边界、权重、方程版本、收敛码和失败模型都应
进入审计记录。
模块与指南对应
主题 主要函数 对应 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
使用边界
- 公式与统计量只在合理假设下有效;假设不满足时结果不能机械套用。
- “统计显著”“数学最优"不等于"临床/产品可接受”;接受标准必须在分析前确定。
- 训练数据上的性能(如 ROC
AUC、回归拟合优度)是表观性能,推广前应在独立数据上验证。 - 所有计算应在方案、标准与专业判断指导下进行,并由合适的人员复核。




