fitModel {TIMP} | R Documentation |
Performs optimization of (possibly multidataset) models and outputs plots and files representing the fit of the model to the data.
fitModel(data, modspec=list(), datasetind = vector(), modeldiffs = list(), opt = opt() )
data |
list of objects of class dat containing the data
to be modeled |
modspec |
list whose elements are models of class dat
describing the models as results from a
call to the function initModel |
datasetind |
vector that has the same length as data ;
for each dataset in data specify the model it should have as
an index into modspec ; default mapping is that all datasets
use the first model given in modspec |
modeldiffs |
list whose elements specify any dataset-specific
model differences.
|
opt |
Object of class kinopt or specopt specifying
fitting and plotting options. |
This function applies the nls
function internally to
optimize nonlinear parameters and to solve for conditionally linear parameters
(clp) via the partitioned variable projection algorithm.
A list is returned containing the following elements:
currTheta |
is a list of objects
of class theta whose elements contain the parameter estimates
associated with each dataset modeled. |
currModel |
is an object of class multimodel
containing the results of fitting as well as the model
specification |
toPlotter |
is a list containing all arguments used by the plotting
function; it is used to regenerate plots and other output by the
examineFit function |
normal-bracket134bracket-normal
Katharine M. Mullen, Ivo H. M. van Stokkum
Mullen KM, van Stokkum IHM (2007). ``TIMP: an R package for modeling multi-way spectroscopic measurements.'' Journal of Statistical Software, 18(3). http://www.jstatsoft.org/v18/i03/.
readData
, initModel
,
examineFit
## 2 simulated concentration profiles in time C <- matrix(nrow = 51, ncol = 2) k <- c(.5, 1) t <- seq(0, 2, by = 2/50) C[, 1] <- exp( - k[1] * t) C[, 2] <- exp( - k[2] * t) ## 2 simulated spectra in wavelength E <- matrix(nrow = 51, ncol = 2) wavenum <- seq(18000,28000, by=200) location <- c(25000, 20000) delta <- c(5000, 7000) amp <- c(1, 2) E[, 1] <- amp[1] * exp( - log(2) * (2 * (wavenum - location[1])/delta[1])^2) E[, 2] <- amp[2] * exp( - log(2) * (2 * (wavenum - location[2])/delta[2])^2) ## simulated time-resolved spectra sigma <- .001 Psi_q <- C %*% t(E) + sigma * rnorm(nrow(C) * nrow(E)) ## as an object of class dat Psi_q_data <- dat(psi.df = Psi_q, x = t, nt = length(t), x2 = wavenum, nl = length(wavenum)) ## model for the data in the time-domain kinetic_model <- initModel(mod_type = "kin", seqmod = FALSE, kinpar = c(.1, 2)) ## fit the model kinetic_fit <- fitModel(data = list(Psi_q_data), modspec = list(kinetic_model), opt = kinopt(iter=4, plot=FALSE))