obsfn {dMod} | R Documentation |
Observation function
Description
An observation function is a function is that is concatenated
with a prediction function via prodfn to yield a new prediction function,
see prdfn. Observation functions are generated by Y. Handling
of the conditions is then organized by the obsfn
object.
Usage
obsfn(X2Y, parameters = NULL, condition = NULL)
Arguments
X2Y |
the low-level observation function generated e.g. by Y. |
parameters |
character vector with parameter names |
condition |
character, the condition name |
Details
Observation functions can be "added" by the "+" operator, see sumfn. Thereby, observations for different conditions are merged or, overwritten. Observation functions can also be concatenated with other functions, e.g. observation functions (obsfn) or prediction functions (prdfn) by the "*" operator, see prodfn.
Value
Object of class obsfn
, i.e. a function x(..., fixed, deriv, conditions, env)
which returns a prdlist. The arguments out
(prediction) and pars
(parameter values)
should be passed via the ...
argument.
Examples
# Define a time grid on which to make a prediction by peace-wise linear function.
# Then define a (generic) prediction function based on thid grid.
times <- 0:5
grid <- data.frame(name = "A", time = times, row.names = paste0("p", times))
x <- Xd(grid)
# Define an observable and an observation function
observables <- eqnvec(Aobs = "s*A")
g <- Y(g = observables, f = NULL, states = "A", parameters = "s")
# Collect parameters and define an overarching parameter transformation
# for two "experimental condtions".
dynpars <- attr(x, "parameters")
obspars <- attr(g, "parameters")
innerpars <- c(dynpars, obspars)
trafo <- structure(innerpars, names = innerpars)
trafo_C1 <- replaceSymbols(innerpars, paste(innerpars, "C1", sep = "_"), trafo)
trafo_C2 <- replaceSymbols(innerpars, paste(innerpars, "C2", sep = "_"), trafo)
p <- NULL
p <- p + P(trafo = trafo_C1, condition = "C1")
p <- p + P(trafo = trafo_C2, condition = "C2")
# Collect outer (overarching) parameters and
# initialize with random values
outerpars <- attr(p, "parameters")
pars <- structure(runif(length(outerpars), 0, 1), names = outerpars)
# Predict internal/unobserved states
out1 <- (x*p)(times, pars)
plot(out1)
# Predict observed states in addition to unobserved
out2 <- (g*x*p)(times, pars)
plot(out2)