2016-07-03 2 views
1

Я хочу установить log-logistic регрессию для следующих данных в drcR упаковка. Однако мой код вызывает следующую ошибку. Любая помощь для решения проблемы будет высоко оценена. Спасибоdrc :: optim начальное значение в 'vmmin' не является конечным

df1 <- 
    structure(list(Temp = c(15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 
     15L, 20L, 20L, 20L, 20L, 20L, 20L, 25L, 25L, 25L, 25L, 30L, 30L, 
     30L, 30L, 35L, 35L, 35L, 35L, 40L, 40L, 40L, 40L), Start = c(0L, 
     24L, 48L, 72L, 96L, 120L, 144L, 168L, 192L, 0L, 24L, 48L, 72L, 
     96L, 120L, 0L, 24L, 48L, 72L, 0L, 24L, 48L, 72L, 0L, 24L, 48L, 
     72L, 0L, 24L, 48L, 72L), End = c(24, 48, 72, 96, 120, 144, 168, 
     192, Inf, 24, 48, 72, 96, 120, Inf, 24, 48, 72, 96, 24, 48, 72, 
     Inf, 24, 48, 72, Inf, 24, 48, 72, Inf), Germinated = c(0L, 0L, 
     1L, 3L, 3L, 12L, 14L, 12L, 15L, 0L, 11L, 27L, 15L, 3L, 4L, 2L, 
     30L, 15L, 13L, 6L, 43L, 7L, 4L, 5L, 48L, 3L, 4L, 0L, 31L, 21L, 
     8L)), .Names = c("Temp", "Start", "End", "Germinated"), row.names = c(NA, 
     -31L), class = "data.frame") 

library(drc) 

fm1 <- 
    drm(
     formula = Germinated ~ Start + End 
     , data = df1 
     , fct  = LL.2() 
     , type = "event" 
     , control = drmc(
          constr  = FALSE 
          , errorm  = TRUE 
          , maxIt  = 1500 
          , method  = "BFGS" 
          , noMessage = FALSE 
          , relTol  = 1e-07 
          , rmNA  = FALSE 
          , useD  = FALSE 
          , trace  = FALSE 
          , otrace  = FALSE 
          , warnVal  = -1 
          , dscaleThres = 1e-15 
          , rscaleThres = 1e-15 
          ) 

     ) 

summary(fm1) 
+0

Вы абсолютно правы @ G.Grothendieck. Я уже пробовал 'curveid = factor (Temp)' и имел ту же ошибку. Есть предположения. – MYaseen208

+0

Это дает результаты (также попробуйте «отдельно = TRUE» и «отдельно = FALSE» и сравните с подмножеством данных с одной температурой и просто запустите это), но во всех случаях вы получаете отдельные коэффициенты для каждой температуры: 'drm (Germinated ~ Start + End, data = df1, curveid = Temp, fct = LL.2(), type = "event") ' –

ответ

1

Вам необходимо сгруппировать данные с помощью Temp, поскольку периоды времени повторяются для каждого значения Temp. curveid = Temp делает трюк:

fm1 <-drm(data = df1, curveid = Temp, 
      formula = Germinated ~ Start + End, fct = LL.2(), type = "event", 
      control = drmc(constr = FALSE, errorm = TRUE, maxIt = 1500, method = "BFGS", 
         noMessage = FALSE, relTol = 1e-07, rmNA = FALSE, useD = FALSE, 
         trace = FALSE, otrace = FALSE, warnVal = -1, dscaleThres = 1e-15, rscaleThres = 1e-15)) 

summary(fm1) 

Model fitted: Log-logistic (ED50 as parameter) with lower limit at 0 and upper limit at 1 (2 parms) 

Parameter estimates: 

     Estimate Std. Error t-value p-value 
b:15 -6.03055 0.78915 -7.64179  0 
b:20 -4.96450 0.60740 -8.17338  0 
b:25 -4.43973 0.54904 -8.08639  0 
b:30 -4.80876 0.60792 -7.91025  0 
b:35 -5.45991 0.69159 -7.89467  0 
b:40 -5.43892 0.79772 -6.81811  0 
e:15 162.33568 6.10473 26.59177  0 
e:20 64.71588 3.08660 20.96674  0 
e:25 48.23883 2.68278 17.98090  0 
e:30 36.38415 2.04252 17.81337  0 
e:35 35.07398 1.85537 18.90405  0 
e:40 48.44494 2.21375 21.88366  0 
+0

Спасибо @dww за полезный ответ. Поймите, если вы посоветуете мне, как подогнать модель 'drm' для взаимодействия« Temp »и« Variety », я попытался« curveid = Temp: Variety », но выдает ошибку:« Ошибка в Temp: Variety: NA/NaN argument' , Любые мысли, пожалуйста. – MYaseen208

+0

Я могу, конечно, показать вам, как это сделать, но я думаю, что этот вопрос - это то, что другие могут найти полезными сами по себе. Поэтому я могу предложить вам задать этот вопрос как новый вопрос. Таким образом, решение становится доступным для поиска другим, которые также хотят знать, как группировать более одного столбца. Если я отвечу на него здесь, решение будет скорее скрыто от других пользователей SO. – dww

+0

Спасибо @dww за ваше предложение. Новый вопрос [здесь] (http://stackoverflow.com/q/38269519/707145). – MYaseen208

Смежные вопросы