Я делаю нелинейную регрессию в R, используя функцию drm
из пакета drc
. Функция drm
принимает аргумент curveid
, что позволяет drm
соответствовать нескольким кривым и сохранять результаты в одном объекте модели. Затем я строю кривые и доверительные интервалы. Однако у меня есть проблема, когда объект модели содержит несколько кривых, кривые выглядят нормально, но доверительный интервал часто строится только для первой кривой (хотя по уровню альфа кажется, что это делается несколько раз) .
Начиная с примеров, предоставленных drm
, я обнаружил, что получаю желаемое поведение, появляются все доверительные интервалы, когда я меняю имя переменной, подаваемой в аргумент curveid
- как ни странно, работает только "КРИВАЯ", больше ничего, даже "кривая" не работает (воспроизводимый пример приведен ниже). Это заставило меня подумать, что, возможно, есть ошибка в plot.drc (метод S3 для класса «drc»), так что «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")