我正在使用包中的drm
函数在 R 中进行非线性回归drc
。该drm
函数接受一个curveid
参数,drm
用于拟合多条曲线并将结果存储在单个模型对象中。接下来,我绘制曲线和置信区间。但是,我有一个问题,当模型对象包含多条曲线时,曲线看起来很好,但通常只为第一条曲线绘制置信区间(尽管从它的 alpha 水平来看,似乎它已经完成了几次) .
从 提供的示例开始drm
,我发现我得到了所需的行为,所有置信区间都出现了,当我更改输入curveid
参数的变量的名称时 - 很奇怪,只有“CURVE”有效,没有别的,甚至“curve”也没有工作(下面给出了可重复的例子)。这让我觉得 plot.drc 中可能存在一个错误(类 'drc' 的 S3 方法),因此“CURVE”在那里被硬编码。我盯着源代码看,但不知道这是否属实,因为我是 R 初学者,几乎没有编程经验。
很可能没有错误,我只是错过了一些重要的东西。
library(drc)
# create some data
df <- data.frame(
x=rep(c(0.003, 0.01, 0.03, 1, 3, 10, 100),2),
y=c(3,3,3,1.5,-2,-3,-3.2, 3.5,3.5,3.2,1,-2.5,-2.8,-2.8),
CURVE=rep(1:2, each=7)
)
# working as it should
mod1 <- drm(y~x, curveid=CURVE, data=df)
plot(mod1, type="confidence", main="working as it should")
# not working
names(df)[3] <- "curve"
mod2 <- drm(y~x, curveid=curve, data=df)
plot(mod2, type="confidence", main="not working")
# working again
names(df)[3] <- "CURVE"
mod3 <- drm(y~x, curveid=CURVE, data=df)
plot(mod3, type="confidence", main="working again")