2016-07-03 51 views
1

drcRパッケージ内の次のデータにlog-logistic回帰を適合させたいと思います。しかし、私のコードは、次のエラーをスローします。問題を解決するためのあらゆる助けが高く評価されます。ありがとうdrc :: '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

これは結果を与えます( 'separate = TRUE'と' separate = FALSE'を試して、データを単一の温度にサブセット化して実行してみてください)。しかし、すべての場合に温度ごとに別々の係数を求めます: 'drm発芽〜開始+終了、データ= df1、曲線=温度、fct = LL.2()、タイプ= "イベント") ' –

答えて

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に感謝します。 'Temp'と' Variety'のやりとりに 'drm'モデルを適合させる方法を教えていただければ幸いです。私は' curveid = Temp:Variety'を試みましたが、 'Temp:Variety:NA/NaN argument' 。何か考えてください。 – MYaseen208

+0

私は確かにあなたにこれを行う方法を示すことができます - しかし、私はこの質問は、他の人がそれ自体が有用であると思うかもしれないものだと思います。したがって、これを新しい質問として尋ねることをお勧めします。そうすれば、複数の列をグループ化する方法を知りたいと思っている他の人たちにも解決策が検索できるようになります。私がここで答えると、ソリューションは他のSOユーザーから隠されることになります。 – dww

+0

あなたの提案に感謝@dww。新しい質問は[ここ](http://stackoverflow.com/q/38269519/707145)です。 – MYaseen208

関連する問題