ssqOdeModel {simecol} | R Documentation |
Compute the sum of squares between a given data and an odeModel
object.
ssqOdeModel(p, simObj, obstime, yobs, sd.yobs = as.numeric(lapply(yobs, sd)), initialize = TRUE, lower. = -Inf, upper. = Inf, weights = NULL, debuglevel = 0, ..., pnames = NULL)
p |
vector of named parameter values of the model (can be a subset), |
simObj |
a valid object of class |
obstime |
vector with time steps for which observational data are available, |
yobs |
data frame with observational data for all or a subset of
state variables. Their names must correspond exacly with existing
names of state variables in the |
sd.yobs |
vector of given standard deviations for all
observational variables given in |
initialize |
optional boolean value whether the |
lower., upper. |
named vectors with lower and upper bounds used in the optimisation, |
weights |
optional weights to be used in the fitting process.
Should be |
debuglevel |
a positive number that specifies the amount of debugging information printed, |
... |
additional parameters passed to the solver method (e.g.
|
pnames |
names of the parameters, optionally passed from fitOdeModel. This argument is a workaround for R versions below 2.8.1. It may be removed in future versions of simecol. |
This is the default function called by function
fitOdeModel
. The source code of this function can be
used as a starting point to develop user-defined optimization
criteria (cost functions).
The sum of squared differences between yobs
and simulation,
by default weighted by the inverse of the standard deviations of the respective
variables.
fitOdeModel
, optim
,
p.constrain
data(chemostat) cs1 <- chemostat ## generate some noisy data parms(cs1)[c("vm", "km")] <- c(2, 10) times(cs1) <- c(from = 0, to = 20, by = 2) yobs <- out(sim(cs1)) obstime <- yobs$time yobs$time <- NULL yobs$S <- yobs$S + rnorm(yobs$S, sd = 0.1 * sd(yobs$S))*2 yobs$X <- yobs$X + rnorm(yobs$X, sd = 0.1 * sd(yobs$X)) ## SSQ between model and data ssqOdeModel(NULL, cs1, obstime, yobs) ## SSQ between model and data, different parameter set ssqOdeModel(p=c(vm=1, km=2), cs1, obstime, yobs) ## SSQ between model and data, downweight second observation ## (both variables) weights <- data.frame(X=rep(1, nrow(yobs)), S = rep(1, nrow=(yobs))) ssqOdeModel(p=c(vm=1, km=2), cs1, obstime, yobs, weights=weights) ## downweight 3rd data set (row) weights[3,] <- 0.1 ssqOdeModel(p=c(vm=1, km=2), cs1, obstime, yobs, weights=weights) ## give one value double weight (e.g. 4th value of S) weights$S[4] <- 2 ssqOdeModel(p=c(vm=1, km=2), cs1, obstime, yobs, weights=weights)