我正在尝试遍历一些剂量相关的数据并使用该drm()
函数对其进行拟合。但是,对于某些数据,我收到以下错误:
optim 错误(startVec,opfct,hessian = TRUE,method = optMethod,control = list(maxit = maxIt,:非有限有限差分值 [4] drmOpt 错误(opfct,opdfct1,startVecSc,optMethod,受约束,warnVal , : 收敛失败
我不明白为什么这仅发生在特定数据集上,当几乎相同的数据通过就好了。我试着用谷歌搜索一下,看看是否有人遇到过类似的问题并找到了这个(但是,它并没有真正为我提供有用的解决方案)。
以下是 2 个产生和不产生任何错误的数据示例:
#Data
Data_OK <- c(1.53148, 1.51851, 1.53148, 1.51851, 1.51188, 1.54407, 1.51851, 1.50515, 1.51851, 1.53148, 1.53148, 1.53148, 1.53148, 1.51851, 1.51851, 1.50515)
Data_NotOK <- c(1.51851, 1.50515, 1.49136, 1.49136, 1.50515, 1.47712, 1.47712, 1.49136, 1.51851, 1.47712, 1.49136, 1.50515, 1.50515, 1.49831, 1.49136, 1.50515)
c <- c(0.00000000 0.00015625 0.00031250 0.00062500 0.00125000 0.00250000 0.00500000 0.01000000, 0.00000000 0.00015625 0.00031250 0.00062500 0.00125000 0.00250000 0.00500000 0.01000000)
#Output Data_OK
library(drc)
fit_OK <- drm(Data_OK ~ c, fct = LL.5())
plot(fit_OK)
这将为您提供以下情节
虽然这
#Output Data_NotOK
library(drc)
fit_NotOK <- drm(Data_NotOK ~ c, fct = LL.5())
plot(fit_NotOK)
生成以下错误
optim 错误(startVec,opfct,hessian = TRUE,method = optMethod,control = list(maxit = maxIt,:非有限有限差分值 [4] drmOpt 错误(opfct,opdfct1,startVecSc,optMethod,受约束,warnVal , : 收敛失败
有趣的是,我注意到如果我更改浓度向量,则不会发生错误。
library(drc)
Data_NotOK <- c(1.51851, 1.50515, 1.49136, 1.49136, 1.50515, 1.47712, 1.47712, 1.49136, 1.51851, 1.47712, 1.49136, 1.50515, 1.50515, 1.49831, 1.49136, 1.50515)
c1 <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
fit_NotOKc1 <- drm(Data_NotOK ~ c1, fct = LL.5())
plot(fit_NotOKc1)
我还尝试将拟合更改为 LL.4()、LL.3() 等,但这似乎无济于事......
知道为什么会发生这种情况以及如何解决吗?
编辑
我现在还 使用 R 中的 drc 包发现了多个剂量反应曲线的回归
他们建议使用 try/catch,我将对其进行测试。我将发布有关进展情况的更新。但是,我仍然想获得某种数据图。知道如何将其实现为循环吗?