R 中的drc
包包含自启动函数,用于将 3 参数 Weibull 模型拟合到数据。该包提供了 3 参数 weibull 的 2 个参数化(https://cran.r-project.org/web/packages/drc/drc.pdf):
f(x) = 0 + (d − 0) exp(− exp(b(log(x) − log(e))))
f(x) = 0 + (d − 0)(1 − exp(− exp(b(log(x) − log(e)))))
包的文档表明d
代表上渐近线,b
是速率参数,并且曲线在剂量处具有拐点e
。但是,绘制这些函数并使用 R 求解二阶导数 = 0 时会给出e
与拐点不同的值。例如:
dd=1
bb = -5
ee = 30
curve(dd*exp(-exp(bb * (log(x) - log(ee))) ) , xlim=c(0,100))
abline(v=ee)
# 1st deriv
g <- function(x) {}
body(g) <- D( expression(dd*exp(-exp(bb * (log(x) - log(ee))) )), "x")
curve(g, xlim=c(0, 100))
abline(v=ee)
# 2nd deriv
g <- function(x) {}
body(g) <- D(D( expression(dd*exp(-exp(bb * (log(x) - log(ee))) )), "x"), "x")
curve(g, xlim=c(0, 100))
abline(v=ee)
uniroot(g, c(20,50)) # should be 30, but is not?
文档不正确吗?或者这是否与 weibull 的特定记录参数化有关(将其限制为正数)?