【问题标题】:R: FME global sensitivity - error "argument parms is missing"R:FME 全局敏感性 - 错误“缺少参数参数”
【发布时间】:2019-05-21 15:38:58
【问题描述】:

我正在使用 FME 包将猎物-捕食者模型拟合到我的数据中。目前我只是在学习和测试代码,还没有安装任何东西,下面这个例子:http://strimas.com/r/lotka-volterra/

在执行全局敏感性分析时,我得到一个错误,我不知道它来自哪里。

当我在我的 R 会话中复制粘贴上面的示例时,它可以工作。但我无法让自己的代码工作。 我根据 FME 上的另一个文档编写了我的函数,因此语法略有不同。

# model function
RMmodel <- function(t, y, parms) {

  #y <- c(N = 30, P = 3)

  derivs <- function(t, y, parms) {
    with(as.list(c(y, parms)), {

      dN <- r * N * (1 - N/K) - a * N * P / (1 + a*h*N)
      dP <- e * a * N * P / (1 + a*h*N) - m * P

      return(list(c(dN, dP)))
    })
  }
  return(ode(y = y, times = t, parms = parms, func = derivs))
}

# input
parameters <- c(r = 0.4, # growth rate prey
                K = 2200, # carrying capacity prey
                a = 0.14, # search rate predator
                h = 1, # handling time
                e = 1.2, # assimilation efficiency predator
                m = 0.2) # mortality rate predator
init <- c(N = 30, P = 3)
times <- seq(0, 120, by=1)

# calculate ODE
RM_result <- RMmodel(t = times, y = init, parms = parameters) # this works

# global sensitivity
par_ranges <- data.frame(min = c(0.18, 1500, 0.01, 0.01, 0.01, 0.01),
                         max = c(0.25, 3500, 2, 2, 2, 2),
                         row.names = c("r", "K", "a", "h", "e", "m"))

RM_glob_sens <- sensRange(func = RMmodel, parms = parameters,
                          dist = "grid",
                          sensvar = c("N", "P"), parRange = par_ranges,
                          num = 20, t = times)

当我运行上述代码时,出现以下错误:

Error in ode(y = y, times = t, parms = parms, func = derivs) : 
  argument "parms" is missing, with no default 

我尝试了以下方法:将模型中的参数名称调整为“pars”而不是“parms”;在模型函数中添加了初始状态;将“parameters”的对象名称更改为“pars”;更改了 sensRange() 中的顺序;通过 c(a = , ...) 将参数直接放入 sensRange 中。

我显然错过了一些东西,但我一生都找不到它。 有人建议吗?

【问题讨论】:

    标签: r ode


    【解决方案1】:

    sensRange() 的要求是func 的第一个参数是parms(请参阅文档)。更改 RMmodel 和 derivs 中输入参数的顺序,以便 parms 是第一个参数,您的代码将正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      • 2021-03-16
      相关资源
      最近更新 更多