Hi Himanshu,

the use of optim is described on its help page.

In addition to this package FME provides additional functionality for fitting ODE models. See FME help files, package vignettes and the example below for details.

Hope it helps

Thomas Petzoldt

################################################################

library(deSolve)
library(FME)

## function derivs
derivs <- function(time, y, pars) {
  with (as.list(c(y, pars)), {
    dy = a1 * Y * (1 - Y/Ymax) - a2 * (Y + 0.001)
    dz = a3 * Y - a4 * Z;
    return(list(c(dy, dz)))
  })
}

## parameters
pars <- c(a1 = 0.9, a2 = 0.7, a3 = 0.06, a4 = 0.02)
Ymax <- c(0.8)
## initial values
y <- c(Y = 0.2, Z = 0.1)
## time steps
times <- c(seq(0, 10, 0.1))
## numerical solution of ODE
out <- ode(y = y, parms = pars, times = times, func = derivs)

## example observation data
yobs <- data.frame(
  time = 0:7,
  Y = c(0.2, 0.195, 0.19, 0.187, 0.185, 0.183, 0.182, 0.18),
  Z = c(0.1, 0.11, 0.119, 0.128, 0.136, 0.145, 0.153, 0.16)
)

## model cost function, see help file and vignette for details
modelCost <- function(p) {
  out <- ode(y = y, func = derivs, parms = p, times = yobs$time)
  return(modCost(out, yobs))
}

## start values for the parameters
startpars <- c(a1 = 1, a2 = 0.6, a3 = 0.1, a4 = 0.1)

## fit the model; nprint = 1 shows intermediate results
fit <- modFit(f = modelCost, p = startpars, control = list(nprint = 1))

## Note the high correlation between a1 and a2, resp a3 and a4
## that can make parameter identification difficult
summary(fit)

## graphical result
out2 <- ode(y = y, parms = startpars, times = times, func = derivs)
out3 <- ode(y = y, parms = fit$par, times = times, func = derivs)
plot(out, out2, out3, obs = yobs)

legend("topleft", legend=c("original", "startpars", "fitted"),
  col = 1:3, lty = 1:3)

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to