Получение сообщения об ошибке «Ошибка в checkFunc (Func2, times, y, rho): функция модели должна возвращать список» - PullRequest
0 голосов
/ 08 ноября 2019

Я работаю над моделью, чтобы предсказать заболеваемость инфекционным заболеванием и у меня есть модель, которая хорошо функционировала до вчерашнего дня. Теперь я получаю сообщение:

Error in checkFunc(Func2, times, y, rho) : 
  Model function must return a list

Вот код:

library(deSolve)

run.model <- function(years,parameters,initial.state){

    years.needed = c(min(years)-1, years)
    results = ode(y=as.numeric(initial.state),
                  times=years.needed,
                  func=dx.model,
                  parms=parameters)

    rv = list()

    rv$parameters = parameters
    rv$years = years

    rv$results = process.ode.results(results, years)
    rv

}
sim = run.model(years=1500:2020,
          parameters=make.parameters(log.trate.hiv.neg.slope = log(1), 
                                     log.trate.hiv.neg.intercept = log(7),
                                     early.progression.risk.immune=0.00485*4.5,
                                     late.progression.risk.immune = 0.0005*4.5,
                                     latent.duration = 5,
                                     treat.tb.rate = 0.6,
                                     primary.progression.in.immune = .014),

                    initial.state = init.state)

Я понятия не имею, почему я получаю эту ошибку.

1 Ответ

0 голосов
/ 09 ноября 2019

Как говорится в сообщении об ошибке: функция модели должна возвращать список.

Это означает, что ваша функция dx.model() должна возвращать список. Файл справки ? Ode гласит:

"Возвращаемое значение func должно быть списком, первый элемент которого является вектором, содержащим производные от y по времени, и следующие элементыявляются глобальными значениями, которые требуются в каждый момент времени. Производные должны указываться в том же порядке, что и переменные состояния y. "

К сожалению, ваш пример не является полным и воспроизводимым, поэтому мы не можем проверить детали изапусти свой код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...