003-4PLC方程拟合校准曲线
2026/8/24 15:05:15 网站建设 项目流程

4PLC 方程拟合校准曲线

分析目的

本文演示如何使用ivdtools包的fit_equation()拟合四参数 Logistic
(four-parameter
logistic,4PLC)校准曲线,并检查收敛状态、残差、权重影响以及
正向和逆向预测。

4PLC
是非线性模型。成功返回拟合对象并不等同于模型适用;正式分析还应结合校准点设计、
上下平台覆盖、参数稳定性、残差结构、重复测量精密度及预先规定的接受标准进行判断。

::: cell

library(ivdtools) library(readr)

:::

4PLC 模型与主要函数

ivdtools中 4PLC 对应E07,也可以使用名称"4PLC"调用:

y=A+B−A1+(x/C)Dy = A + \frac{B-A}{1 + (x/C)^D}y=A+1+(x/C)DBA

其中,AAABBB表示两个渐近平台,CCC表示曲线中点对应的浓度尺度,DDD
控制曲线 方向和陡峭程度。参数含义应结合实际信号方向解释。

函数 用途


list_equation()查看内置方程注册表
replicate_to_mean()汇总重复测量并可计算权重
fit_equation()拟合内置或自定义方程
coef()提取模型参数
residuals()提取观测值减拟合值的残差
predict()正向预测响应值或逆向估计浓度
plot()绘制观测点、拟合曲线和区间
compare_equation()比较候选方程

查看响应曲线模型:

::: cell

list_equation(category = "Response")

:::

fit_equation()可以使用自动初值,也可以通过start
指定初值;lowerupperconstraints
可设置参数边界或约束。weights接受数值向量或内置方案
"equal""1/y""1/y^2""1/x""1/x^2"

注意:
权重应反映测量误差或方差结构,不能只根据曲线是正相关还是负相关来选择。
最好依据重复测量精密度、残差诊断或研究方案预先确定权重。

示例一:基本拟合流程

读取和核验数据

::: cell

u1 <- read_csv("./data/4PLC-U1.csv", show_col_types = FALSE) u1

:::

::: cell

str(u1) summary(u1[c("Con", "RLU")]) anyDuplicated(u1$Sample) sum(!is.finite(u1$Con) | !is.finite(u1$RLU))

:::

该数据包含 6 个浓度水平。4PLC 需要估计 4
个参数,因此剩余自由度很少;同时最高浓度
仍未清楚覆盖上平台,模型参数可能不稳定。本例主要用于说明操作流程,不应直接作为正式
校准设计范例。

如果每个浓度包含重复测量,可以直接拟合全部观测,也可以先使用
replicate_to_mean()汇总。是否汇总及如何加权应在分析方案中说明。

拟合并检查收敛

::: cell

fit_u1 <- fit_equation( "4PLC", data = u1, x = "Con", y = "RLU" ) print(fit_u1)

:::

不要忽略优化器的收敛信息:

::: cell

fit_u1$fit$convInfo[c("isConv", "finIter", "stopCode", "stopMessage")]

:::

本数据的默认拟合达到迭代次数上限且未声明收敛。增加最大迭代次数有时有帮助,但不能解决
校准范围未覆盖平台或参数不可辨识的问题。遇到未收敛时,应依次检查数据、模型方向、初值、
参数边界和校准点设计,而不是仅凭曲线外观接受结果。

残差与图形

::: cell

u1_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)

:::

::: cell

plot(fit_u1, interval = "confidence", level = 0.95)

:::

残差应同时在原始响应尺度和相对尺度上检查,并结合重复测量方差判断。对跨越多个数量级的
响应,仅查看原始残差可能使高信号点主导判断。

由浓度预测响应

::: cell

predict( fit_u1, newdata = data.frame(Con = c(20, 200, 1000)), interval = "confidence", level = 0.95 )

:::

均值置信区间描述拟合均值的不确定性;预测区间还包含单次观测误差,通常更宽:

::: cell

predict( fit_u1, newdata = data.frame(Con = c(20, 200, 1000)), interval = "prediction", level = 0.95 )

:::

由响应逆向估计浓度

::: cell

predict( fit_u1, newdata = data.frame(RLU = c(20000, 100000, 250000)), inverse = TRUE )

:::

预测边界:
应避免超出校准浓度范围外推。逆向预测在平台区对响应误差非常敏感,
非单调模型还可能出现多解。当前示例拟合未可靠收敛,因此预测仅用于演示接口,不能用于
定量结论。

示例二:夹心法与权重

等权重拟合

夹心法数据通常表现为浓度增加、信号升高。本例先进行等权重拟合:

::: cell

u2 <- 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)

:::

反响应平方权重拟合

当响应方差随信号增大而明显增大时,可以评估反响应平方权重:

::: cell

fit_u2_weighted <- fit_equation( "4PLC", data = u2, x = "Con", y = "RLU", weights = "1/y^2" ) print(fit_u2_weighted)

:::

比较两个模型在各校准点的相对残差:

::: cell

u2_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)

:::

::: cell

data.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
具有不同尺度,不宜脱离 误差模型直接比较。

::: cell

plot(fit_u2_weighted, interval = "confidence", level = 0.95)

:::

示例三:竞争法

竞争法数据通常表现为浓度增加、信号降低:

::: cell

u3 <- read_csv("./data/4PLC-U3.csv", show_col_types = FALSE) fit_u3 <- fit_equation( "4PLC", data = u3, x = "Con", y = "RLU" ) print(fit_u3)

:::

::: cell

fit_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)

:::

::: cell

plot(fit_u3, interval = "confidence", level = 0.95)

:::

本例等权重拟合已经收敛且样本内相对残差较小,但仍应依据重复测量方差决定是否需要权重。
信号方向本身不是选择等权重或加权拟合的依据。

结果判读要点

  1. 校准设计:浓度点应覆盖预期工作区间,并尽可能提供上下平台信息。
  2. 收敛状态:检查
    convInfo,不能把达到最大迭代次数直接视为成功收敛。
  3. 参数合理性:结合平台、曲线中点、方向、标准误和参数相关性判断稳定性。
  4. 残差结构:同时检查原始残差、相对残差及其随浓度或拟合值的变化。
  5. 权重依据:优先使用重复测量估计的方差结构,并在分析前规定选择规则。
  6. 回算表现:按项目要求评价各校准点的回算浓度偏差和精密度。
  7. 预测范围:避免外推,尤其避免在平台区进行不稳定的逆向预测。
  8. 可复现性:保存原始数据、代码、模型参数、包版本、图形和完整会话信息。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询