Предупреждение «Произведено NaNs» при расчете абсолютных значений EC50 с пакетом dr c - PullRequest
3 голосов
/ 30 января 2020

Я пытаюсь выяснить, как рассчитать абсолютные значения EC50 с использованием моделей доза-ответ LL.3 и LL.4 (3 и 4 параметра) в пакете dr c, но я продолжаю получать эти ошибки " Предупреждающее сообщение: В журнале (exp (-tempVal / parmVec [5]) - 1): произведено NaN ", а значение EC50 равно" NA ".

Вот пример кода, который я пытаюсь run

###use rygrass dataset in drc

gr.LL.3 <- drm(ryegrass$rootl ~ ryegrass$conc, fct = LL.3()) # 3 parameter log-logistic model
gr.LL.4 <- drm(ryegrass$rootl ~ ryegrass$conc, fct = LL.4()) # 4 parameter log-logistic model

plot(gr.LL.3) #graph looks fine
plot(gr.LL.4) #graph looks fine

ED (gr.LL.3, respLev = c(50), type = "relative") # this works fine
ED (gr.LL.4, respLev = c(50), type = "relative") # this works fine

ED (gr.LL.3, respLev = c(50), type = "absolute") # this gives me "NA" for EC50 along with warning message  
ED (gr.LL.4, respLev = c(50), type = "absolute") # this gives me "NA" for EC50 along with warning message  

Это не связано с 0 значениями для концентраций

### It's not due to 0 values for concentrations
# ryegrass dataset with 0 value concentrations and corresponding rootl removed

rootlength <- c(8.3555556, 6.9142857, 7.75, 6.8714286, 6.45, 5.9222222, 1.925, 2.8857143, 4.2333333, 1.1875, 0.8571429, 1.0571429, 0.6875, 0.525, 0.825, 0.25, 0.22, 0.44)
conc.wo.0 <- c(0.94, 0.94, 0.94, 1.88, 1.88, 1.88, 3.75, 3.75, 3.75, 7.5, 7.5, 7.5, 15, 15, 15, 30, 30, 30)

gro.LL.3 <- drm(rootlength ~ conc.wo.0, fct = LL.3())

plot(gro.LL.3) #graph looks fine

ED (gro.LL.3, respLev = c(50), type = "relative") # this works fine
ED (gro.LL.3, respLev = c(50), type = "absolute") # once again, this gives me "NA" for EC50 along with warning message  

Это также не связано с тем, что ответ выражен в абсолютных и относительных единицах

### It's also not due to the response being in absolute vs relative terms
# ryegrass dataset with response relative to average response with 0 concentration (sorry, I did the absolute to relative conversion in excel, I'm still learning r)

rel.rootl <- c(0.98, 1.03, 1.07, 0.94, 0.95, 1.03, 1.08, 0.89, 1.00, 0.89, 0.83, 0.76, 0.25, 0.37, 0.55, 0.15, 0.11, 0.14, 0.09, 0.07, 0.11, 0.03, 0.03, 0.06)
concentration <- c(0, 0, 0, 0, 0, 0, 0.94, 0.94, 0.94, 1.88, 1.88, 1.88, 3.75, 3.75, 3.75, 7.5, 7.5, 7.5, 15, 15, 15, 30, 30, 30)

rel.gro.LL.3 <- drm(rel.rootl ~ concentration, fct = LL.3())

plot(rel.gro.LL.3) #graph looks fine

ED (rel.gro.LL.3, respLev = c(50), type = "relative") # this works fine
ED (rel.gro.LL.3, respLev = c(50), type = "absolute") # once again, this gives me "NA" for EC50 along with warning message  

I Я новичок в этом, поэтому любая помощь приветствуется.

Ответы [ 2 ]

3 голосов
/ 01 февраля 2020
rel.rootl <- c(0.98, 1.03, 1.07, 0.94, 0.95, 1.03, 1.08, 0.89, 1.00, 0.89, 0.83, 0.76, 0.25, 0.37, 0.55, 0.15, 0.11, 0.14, 0.09, 0.07, 0.11, 0.03, 0.03, 0.06)
concentration <- c(0, 0, 0, 0, 0, 0, 0.94, 0.94, 0.94, 1.88, 1.88, 1.88, 3.75, 3.75, 3.75, 7.5, 7.5, 7.5, 15, 15, 15, 30, 30, 30)

rel.gro.LL.3 <- drm(rel.rootl ~ concentration, fct = LL.3())

plot(rel.gro.LL.3) #graph looks fine

ED (rel.gro.LL.3, respLev = c(50), type = "relative") # this works fine
ED (rel.gro.LL.3, respLev = c(50), type = "absolute") # once again, this gives me "NA" for EC50 along with warning message  

Проблема в том, что когда вы пытаетесь оценить абсолютный EC50, функция ED решает для точки на кривой, где вы хотите (то есть аргумент respLev), так что если ваш относительный уровень ответа не имеет 50% на по оси Y это приведет к ошибке, потому что ваша ось Y имеет пропорции.

Чтобы устранить эту проблему, либо умножьте свой нормализованный ответ на 100, чтобы превратить его в относительный ответ в процентах

rel.gro.LL.3.percent <- drm(rel.rootl*100 ~ concentration, fct = LL.3())

ED (rel.gro.LL.3.percent, respLev = c(50), type = "relative") # same result as above

Estimated effective doses

       Estimate Std. Error
e:1:50  3.26520    0.19915

ED (rel.gro.LL.3.percent, respLev = c(50), type = "absolute") # very similar to relative EC50

Estimated effective doses

   Estimate Std. Error
e:1:50  3.30154    0.20104

В качестве альтернативы, вы можете изменить respLev на 0,5 в исходной модели.

ED (rel.gro.LL.3, respLev = c(50), type = "relative") # this still works fine

Estimated effective doses

   Estimate Std. Error
e:1:50  3.26520    0.19915

ED (rel.gro.LL.3, respLev = c(0.5), type = "absolute") # Now this works and is the same as we got before with response multiplied by 100 

Estimated effective doses

    Estimate Std. Error
e:1:0.5  3.30154    0.20104
1 голос
/ 30 января 2020

Если вы выполните поиск по запросу «dr c In log (exp (-tempVal / parmVec [5]) - 1): NaNs произведены» с Google, второй удар - это страница автора этого пакета, и он советует игнорирование предупреждения, когда некоторые из ваших наблюдений равны 0 (поскольку log (0) - NaN.)

...