【问题标题】:drc:: optim initial value in 'vmmin' is not finitedrc:: 'vmmin' 中的优化初始值不是有限的
【发布时间】:2016-07-03 08:56:07
【问题描述】:

我想为drcR 包中的以下数据拟合log-logistic 回归。但是,我的代码会引发以下错误。

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)

【问题讨论】:

  • 你绝对正确@G.Grothendieck。我已经尝试过curveid = factor(Temp) 并且遇到了同样的错误。任何想法。
  • 这会给出结果(也可以尝试使用separate=TRUEseparate = FALSE 并与将数据设置为单个温度并运行它进行比较),但在所有情况下,您都会为每个温度获得单独的系数: drm(Germinated ~ Start + End, data = df1, curveid = Temp, fct = LL.2(), type = "event")

标签: r logistic-regression drc


【解决方案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

【讨论】:

  • 感谢@dww 提供有用的答案。如果您指导我如何为TempVariety 的交互拟合drm 模型,我将不胜感激,我尝试了curveid = Temp:Variety 但抛出错误:Error in Temp:Variety : NA/NaN argument。请有任何想法。
  • 我当然可以向您展示如何做到这一点 - 但我认为这个问题本身可能对其他人有用。因此,我是否可以建议您将此作为一个新问题提出。这样,解决方案就可以被其他想知道如何在多个列上分组的人搜索到。如果我在这里回答,解决方案将对其他 SO 用户隐藏。
  • 感谢@dww 的建议。新问题是here
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
  • 2021-04-06
  • 2020-01-29
  • 2015-09-03
  • 1970-01-01
  • 2011-06-07
相关资源
最近更新 更多