003-4PLC方程拟合校准曲线
4PLC 方程拟合校准曲线分析目的本文演示如何使用ivdtools包的fit_equation()拟合四参数 Logisticfour-parameterlogistic4PLC校准曲线并检查收敛状态、残差、权重影响以及正向和逆向预测。4PLC是非线性模型。成功返回拟合对象并不等同于模型适用正式分析还应结合校准点设计、上下平台覆盖、参数稳定性、残差结构、重复测量精密度及预先规定的接受标准进行判断。::: celllibrary(ivdtools) library(readr):::4PLC 模型与主要函数ivdtools中 4PLC 对应E07也可以使用名称4PLC调用yAB−A1(x/C)Dy A \frac{B-A}{1 (x/C)^D}yA1(x/C)DB−A​其中AAA和BBB表示两个渐近平台CCC表示曲线中点对应的浓度尺度DDD控制曲线 方向和陡峭程度。参数含义应结合实际信号方向解释。函数 用途list_equation()查看内置方程注册表replicate_to_mean()汇总重复测量并可计算权重fit_equation()拟合内置或自定义方程coef()提取模型参数residuals()提取观测值减拟合值的残差predict()正向预测响应值或逆向估计浓度plot()绘制观测点、拟合曲线和区间compare_equation()比较候选方程查看响应曲线模型::: celllist_equation(category Response):::fit_equation()可以使用自动初值也可以通过start指定初值lower、upper和constraints可设置参数边界或约束。weights接受数值向量或内置方案equal、1/y、1/y^2、1/x、1/x^2。注意权重应反映测量误差或方差结构不能只根据曲线是正相关还是负相关来选择。最好依据重复测量精密度、残差诊断或研究方案预先确定权重。示例一基本拟合流程读取和核验数据::: cellu1 - read_csv(./data/4PLC-U1.csv, show_col_types FALSE) u1:::::: cellstr(u1) summary(u1[c(Con, RLU)]) anyDuplicated(u1$Sample) sum(!is.finite(u1$Con) | !is.finite(u1$RLU)):::该数据包含 6 个浓度水平。4PLC 需要估计 4个参数因此剩余自由度很少同时最高浓度仍未清楚覆盖上平台模型参数可能不稳定。本例主要用于说明操作流程不应直接作为正式校准设计范例。如果每个浓度包含重复测量可以直接拟合全部观测也可以先使用replicate_to_mean()汇总。是否汇总及如何加权应在分析方案中说明。拟合并检查收敛::: cellfit_u1 - fit_equation( 4PLC, data u1, x Con, y RLU ) print(fit_u1):::不要忽略优化器的收敛信息::: cellfit_u1$fit$convInfo[c(isConv, finIter, stopCode, stopMessage)]:::本数据的默认拟合达到迭代次数上限且未声明收敛。增加最大迭代次数有时有帮助但不能解决校准范围未覆盖平台或参数不可辨识的问题。遇到未收敛时应依次检查数据、模型方向、初值、参数边界和校准点设计而不是仅凭曲线外观接受结果。残差与图形::: cellu1_diagnostics - data.frame( Sample u1$Sample, Con u1$Con, RLU u1$RLU, Residual residuals(fit_u1), Relative_residual_pct residuals(fit_u1) / u1$RLU * 100 ) knitr::kable(u1_diagnostics, digits 2):::::: cellplot(fit_u1, interval confidence, level 0.95):::残差应同时在原始响应尺度和相对尺度上检查并结合重复测量方差判断。对跨越多个数量级的响应仅查看原始残差可能使高信号点主导判断。由浓度预测响应::: cellpredict( fit_u1, newdata data.frame(Con c(20, 200, 1000)), interval confidence, level 0.95 ):::均值置信区间描述拟合均值的不确定性预测区间还包含单次观测误差通常更宽::: cellpredict( fit_u1, newdata data.frame(Con c(20, 200, 1000)), interval prediction, level 0.95 ):::由响应逆向估计浓度::: cellpredict( fit_u1, newdata data.frame(RLU c(20000, 100000, 250000)), inverse TRUE ):::预测边界应避免超出校准浓度范围外推。逆向预测在平台区对响应误差非常敏感非单调模型还可能出现多解。当前示例拟合未可靠收敛因此预测仅用于演示接口不能用于定量结论。示例二夹心法与权重等权重拟合夹心法数据通常表现为浓度增加、信号升高。本例先进行等权重拟合::: cellu2 - read_csv(./data/4PLC-U2.csv, show_col_types FALSE) fit_u2_equal - fit_equation( 4PLC, data u2, x Con, y RLU ) print(fit_u2_equal):::反响应平方权重拟合当响应方差随信号增大而明显增大时可以评估反响应平方权重::: cellfit_u2_weighted - fit_equation( 4PLC, data u2, x Con, y RLU, weights 1/y^2 ) print(fit_u2_weighted):::比较两个模型在各校准点的相对残差::: cellu2_comparison - data.frame( Sample u2$Sample, Con u2$Con, RLU u2$RLU, Equal_weight_pct residuals(fit_u2_equal) / u2$RLU * 100, Inverse_y2_weight_pct residuals(fit_u2_weighted) / u2$RLU * 100 ) knitr::kable(u2_comparison, digits 2):::::: celldata.frame( Model c(等权重, 1/y^2 权重), Median_absolute_relative_residual_pct c( median(abs(u2_comparison$Equal_weight_pct)), median(abs(u2_comparison$Inverse_y2_weight_pct)) ), Maximum_absolute_relative_residual_pct c( max(abs(u2_comparison$Equal_weight_pct)), max(abs(u2_comparison$Inverse_y2_weight_pct)) ) ) | knitr::kable(digits 2):::在本示例数据中1/y^2权重明显降低了低信号点的相对残差这只能说明该权重更符合本数据所采用的相对误差评价目标。正式选择仍需结合各浓度重复测量的方差、回算浓度偏差、模型参数稳定性和预设接受标准。不同权重下的残差标准误和 AIC具有不同尺度不宜脱离 误差模型直接比较。::: cellplot(fit_u2_weighted, interval confidence, level 0.95):::示例三竞争法竞争法数据通常表现为浓度增加、信号降低::: cellu3 - read_csv(./data/4PLC-U3.csv, show_col_types FALSE) fit_u3 - fit_equation( 4PLC, data u3, x Con, y RLU ) print(fit_u3):::::: cellfit_u3$fit$convInfo[c(isConv, finIter, stopCode, stopMessage)] u3_diagnostics - data.frame( Sample u3$Sample, Con u3$Con, RLU u3$RLU, Relative_residual_pct residuals(fit_u3) / u3$RLU * 100 ) knitr::kable(u3_diagnostics, digits 2):::::: cellplot(fit_u3, interval confidence, level 0.95):::本例等权重拟合已经收敛且样本内相对残差较小但仍应依据重复测量方差决定是否需要权重。信号方向本身不是选择等权重或加权拟合的依据。结果判读要点校准设计浓度点应覆盖预期工作区间并尽可能提供上下平台信息。收敛状态检查convInfo不能把达到最大迭代次数直接视为成功收敛。参数合理性结合平台、曲线中点、方向、标准误和参数相关性判断稳定性。残差结构同时检查原始残差、相对残差及其随浓度或拟合值的变化。权重依据优先使用重复测量估计的方差结构并在分析前规定选择规则。回算表现按项目要求评价各校准点的回算浓度偏差和精密度。预测范围避免外推尤其避免在平台区进行不稳定的逆向预测。可复现性保存原始数据、代码、模型参数、包版本、图形和完整会话信息。