diff options
Diffstat (limited to 'R/mkinpredict.R')
| -rw-r--r-- | R/mkinpredict.R | 20 | 
1 files changed, 18 insertions, 2 deletions
| diff --git a/R/mkinpredict.R b/R/mkinpredict.R index 4c6d7862..2c865cb7 100644 --- a/R/mkinpredict.R +++ b/R/mkinpredict.R @@ -172,6 +172,15 @@ mkinpredict.mkinmod <- function(x,    }    if (solution_type == "deSolve") { + +    # We need to make sure that 0 is included in outtimes, +    # even if we do not have observed data for time zero, +    # because otherwise the initial values are not applied +    # to time zero but to the time of the first observation +    # in the data +    if (min(outtimes) > 0) outtimes_deSolve <- c(0, outtimes) +    else outtimes_deSolve <- outtimes +      if (!is.null(x$cf) & use_compiled[1] != FALSE) {        if (!is.null(x$symbols) & use_symbols) { @@ -182,7 +191,7 @@ mkinpredict.mkinmod <- function(x,        out <- deSolve::lsoda(          y = odeini, -        times = outtimes, +        times = outtimes_deSolve,          func = lsoda_func,          initfunc = "initpar",          dllname = x$dll_info[["name"]], @@ -209,7 +218,7 @@ mkinpredict.mkinmod <- function(x,        }        out <- deSolve::ode(          y = odeini, -        times = outtimes, +        times = outtimes_deSolve,          func = mkindiff,          parms = odeparms,          method = method.ode, @@ -219,6 +228,13 @@ mkinpredict.mkinmod <- function(x,          ...        )      } + +    # Now we need to remove time zero, in case we did not  +    # have observations for it +    if (min(outtimes) > 0) { +      out <- out[-1, ] +    } +      n_out_na <- sum(is.na(out))      if (n_out_na > 0 & na_stop) {        cat("odeini:\n") | 
