Profile.LS.DDE: Profile Estimation Functions for DDE

Description Usage Arguments Value Author(s) Examples

Description

This function runs generalized profiling for DDE models. This function carry out the profiled optimization method for DDe models using a sum of squared errors criteria for both fit to data and the fit of the derivatives to a delay differential equation.

Usage

1
2
3
4
5
6
Profile.LS.DDE(fn, data, times, pars, beta, coefs = NULL, basisvals = NULL,
  lambda, fd.obj = NULL, more = NULL, weights = NULL, quadrature = NULL,
  in.meth = "nlminb", out.meth = "nls", control.in = list(),
  control.out = list(), eps = 1e-06, active = NULL, posproc = FALSE,
  poslik = FALSE, discrete = FALSE, names = NULL, sparse = FALSE,
  basisvals0 = NULL, coefs0 = NULL, nbeta, ndelay, tau)

Arguments

fn

A named list of functions giving the righthand side of a delay differential equation. The functions should have arguments

times

he times at which the righthand side is being evaluated.

x

The state values at those times.

p

Parameters to be entered in the system.

more

A list object containing additional inputs to fn, The distributed delay state are passed into derivative calculation as more$y.

The list of functions should contain the elements:

fn

Function to calculate the right hand sid.

dfdx

Function to calculate the derivative of each right-hand function with respect to the states.

dfdp

calculates the derivative of therighthand side function with respect to parameters.

d2fdx2

Function to calculate the second derivatives with respect to states.

d2fdxdp

Function to calculate the cross derivatives of each right-hand function with respect to state and parameters.

dfdx.d

Function to calculate the the derivative of each righthand function with respect to the delayed states.

d2fdx.ddp

Function to calculate the cross derivatives of each righthand function with respect to the delayed states and parameters.

d2fdxdx.d

Function to calculate the cross derivatives of each right-hand function with respect to the state and the delayed states.

d2fdx.d2

Function to calculate the second derivatives of the right-hand function with respect to the delayed states.

data

Matrix of observed data values.

times

Vector observation times for the data.

pars

Initial values of parameters to be estimated processes.

beta

Initial values of the contribution of lags for the delay.

coefs

Vector giving the current estimate of the coefficients in the spline.

basisvals

Values of the collocation basis to be used. This should be a basis object from the fda package.

lambda

Penalty value trading off fidelity to data with fidelity to dif- ferential equations.

fd.obj

A functional data object; if this is non-null, coefs and basisvals is extracted from here.

more

An object specifying additional arguments to fn.

weights

Weights for weighted estimation.

quadrature

Quadrature points, should contain two elements (if not NULL)

qpts

sQuadrature points; defaults to midpoints between knots

qwts

Quadrature weights; defaults to normalizing by the length of qpts.

in.meth

Inner optimization function currently one of 'nlminb', 'optim', or 'trustOptim'.

out.meth

Outer optimization function to be used, depending on the type of method.

nls

Nonlinear least square

nnls.eq

Nonlinear least square with equality or/and inequality constraints of the parameters.

control.in

Control object for inner optimization function.

control.out

Control object for outer optimization function.

eps

Finite differencing step size, if needed.

active

Incides indicating which parameters of pars should be estimated; defaults to all of them.

posproc

Should the state vector be constrained to be positive? If this is the case, the state is represented by an exponentiated basis expansion in the proc object.

poslik

Should the state be exponentiated before being compared to the data? When the state is represented on the log scale (posproc=TRUE), this is an alternative to taking the log of the data.

discrete

Is it a discrete process?

names

The names of the state variables if not given by the column names of coefs.

sparse

Should sparse matrices be used for basis values? This option can save memory when using 'trust' optimization method.

basisvals0

Values of the collocation basis to be used for the history part of the data. This should be a basis object from the fda package.

coefs0

Vector giving the estimate of the coefficients in the spline for the history part of the data.

nbeta

The number of lags for the delay.

ndelay

A vector inidicating which state process has a delay term.

tau

A list of delay lags.

Value

A list with elements

data

The matrix for the observed data.

res

The inner optimization result.

ncoefs

The estimated coefficients.

lik

The lik object generated.

proc

The proc object generated.

pars

The estimated parameters.

beta

The estimated contribution of lags for the delay.

times

The times at which the data are observed.

fdobj.d

The functional data object for the estimated state process.

fdobj0

The functional data object for the estimated state process of the history part.

tau

The lags of delays.

Author(s)

Ziqian Zhou

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
yout <- DSIRdata
times <- seq(-0.5, 30, by = 0.1)
yout0 <- yout[times >= 0, ]
yout.d <- yout[times >= 5, ]
colnames(yout.d) <-  c("S","I")
times0 <- times[times>=0]
times.d <- times[times>=5]
norder = 3
nbasis.d = length(times.d) + norder - 2
nbasis0 <- length(times0) + norder - 2
basis0 <- create.bspline.basis(range=range(times0),
    nbasis=nbasis0, norder=norder, breaks=times0)
basis.d <- create.bspline.basis(range=range(times.d),
    nbasis=nbasis.d, norder=norder, breaks=times.d)
fdnames=list(NULL,c('S', 'I'),NULL)
bfdPar0 = fdPar(basis0,lambda=1,int2Lfd(1))
bfdPar.d <- fdPar(basis.d,lambda=1,int2Lfd(1))
DEfd0 <- smooth.basis(times0, yout0, bfdPar0,fdnames=fdnames)$fd
coefs0 <- DEfd0$coefs
colnames(coefs0) = c("S","I")
initPars <- c(5, 0.0012)
names(initPars) <- c("gamma", "beta")
initBeta <- rep(0, 11)
initBeta[c(4,5,11)] <- c(0.611, 0.362, 0.026)
tau <- list(seq(0,1, length.out = 11))
lambda = 1000
DSIRfn <- DSIRfn.make()
## Not run: 
dde.fit <- Profile.LS.DDE(DSIRfn, yout.d, times.d, pars = initPars,
    beta = initBeta, coefs = DSIRInitCoefs, basisvals = basis.d,
    lambda = 1000,
    in.meth='nlminb', basisvals0 = basis0, coefs0 = coefs0,
    nbeta = length(initBeta), ndelay = 2, tau = tau,
    control.out = list(method = "nnls.eq", maxIter = 2, echo = TRUE))
    
## End(Not run)

gpDDE documentation built on May 2, 2019, 1:09 p.m.