Description Usage Arguments Value Syntactical jargon Warning Author(s) References See Also Examples
GQD.mle()
constructs a C++ program in real time that allows the user to perform maximum likelihood inference on scalar GQDs. Given a set of starting parameters, the maximum likelihood estimates are calculated via minimization of minus the likelihood function via the built-in R-function optim
.
GQD.mcmc()
performs inference using the Metropolis-Hastings algorithm for jump diffusions of the form:
where
and
1 2 3 |
X |
Time series (vector) of discretely observed points of the process of interest. These may be non-equidistant observations (see |
time |
A vector of time-stamps associated with each observation in |
mesh |
The number mesh points between any two given data points. |
theta |
The set of starting parameters for the optimization routine. |
control |
List of control variables to be used by |
method |
Method to be used by |
exclude |
Vector indicating which transitions to exclude from the analysis. Default = |
RK.order |
The order of the Runge-Kutta scheme used. Value must be 4 or (default) 10. |
Dtype |
Character string indicating the type of density approximation (see details) to use. Types: |
Trunc |
Vector of length 2 containing the cumulant truncation order and the density truncation order respectively. May take on values 4, 6 and 8 with the constraint that |
P |
Normalization parameter indicating the number of points to use when normalizing members of the Pearson system (see details) |
alpha |
Normalization parameter controlig the mesh concentration when normalizing members of the Pearson system (see details). Increasing |
lower,upper |
Lower and upper bounds for the normalization range. |
Tag |
|
wrt |
If |
print.output |
If |
opt |
The output from |
model.info |
A list of variables pertaining to inference calculations. |
model.info$elapsed.time |
The run-time, in h/m/s format,of the MCMC procedure (excluding compile time). |
model.info$time.homogeneous |
‘No’ if the model has time-homogeneous coefficients and ‘Yes’ otherwise. |
model.info$p |
The dimension of |
Synt. [1]: The coefficients of the GQD may be parameterized using the reserved variable theta
. For example:
G0 <- function(t){theta[1]*(theta[2]+sin(2*pi*(t-theta[3])))}
.
Synt. [2]: Due to syntactical differences between R and C++ special functions have to be used when terms that depend on t
. When the function cannot be separated in to terms that contain a single t
, the prod(a,b)
function must be used. For example:
G0 <- function(t){0.1*(10+0.2*sin(2*pi*t)+0.3*prod(sqrt(t),1+cos(3*pi*t)))}
.
Here sqrt(t)*cos(3*pi*t) constitutes the product of two terms that cannot be written i.t.o. a single t
. To circumvent this isue, one may use the prod(a,b)
function.
Synt. [3]: Similarly, the ^ - operator is not overloaded in C++. Instead the pow(x,p)
function may be used to calculate x^p. For example sin(2*pi*t)^3 in:
G0 <- function(t){0.1*(10+0.2*pow(sin(2*pi*t),3))}
.
Warning [1]: The parameter mesh
is used to discretize the transition horizons between successive observations. It is thus important to ensure that mesh
is not too small when large time differences are present in time
. Check output for max(dt) and divide by mesh
.
Warning [2]: Note that minus the likelihood is minimized, as such the optim
output (hessian) needs to be adjusted accordingly if used for calculating confidence intervals. Furthermore, GQD.mle
may be temperamental under certain conditions
Etienne A.D. Pienaar: etiennead@gmail.com
Updates available on GitHub at https://github.com/eta21.
Daniels, H.E. 1954 Saddlepoint approximations in statistics. Ann. Math. Stat., 25:631–650.
Eddelbuettel, D. and Romain, F. 2011 Rcpp: Seamless R and C++ integration. Journal of Statistical Software, 40(8):1–18,. URL http://www.jstatsoft.org/v40/i08/.
Eddelbuettel, D. 2013 Seamless R and C++ Integration with Rcpp. New York: Springer. ISBN 978-1-4614-6867-7.
Eddelbuettel, D. and Sanderson, C. 2014 Rcpparmadillo: Accelerating R with high-performance C++ linear algebra. Computational Statistics and Data Analysis, 71:1054–1063. URL http://dx.doi.org/10.1016/j.csda.2013.02.005.
Feagin, T. 2007 A tenth-order Runge-Kutta method with error estimate. In Proceedings of the IAENG Conf. on Scientifc Computing.
Varughese, M.M. 2013 Parameter estimation for multivariate diffusion systems. Comput. Stat. Data An., 57:417–428.
GQD.remove
, GQD.mcmc
, BiGQD.mcmc
, BiGQD.mle
, GQD.passage
and GQD.TIpassage
.
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 37 38 39 40 41 42 43 | #===============================================================================
# Simulate a time inhomogeneous diffusion.
#-------------------------------------------------------------------------------
data(SDEsim1)
attach(SDEsim1)
par(mfrow=c(1,1))
expr1=expression(dX[t]==2*(5+3*sin(0.5*pi*t)-X[t])*dt+0.5*sqrt(X[t])*dW[t])
plot(Xt~time,type='l',col='blue',xlab='Time (t)',ylab=expression(X[t]),main=expr1)
#------------------------------------------------------------------------------
# Define coefficients of the process.
#------------------------------------------------------------------------------
GQD.remove()
G0 <- function(t){theta[1]*(theta[2]+theta[3]*sin(0.25*pi*t))}
G1 <- function(t){-theta[1]}
Q0 <- function(t){theta[4]*theta[4]}
theta.start <- c(1,1,1,1) # Starting values for the chain
mesh.points <- 10 # Number of mesh points
m1 <- GQD.mle(Xt,time,mesh=mesh.points,theta=theta.start)
GQD.remove()
G0 <- function(t){theta[1]*(theta[2]+theta[3]*sin(0.25*pi*t))}
G1 <- function(t){-theta[1]}
Q1 <- function(t){theta[4]*theta[4]}
theta.start <- c(1,1,1,1) # Starting values for the chain
mesh.points <- 10 # Number of mesh points
m2 <- GQD.mle(Xt,time,mesh=mesh.points,theta=theta.start)
# Check estimates:
GQD.estimates(m1)
GQD.estimates(m2)
# Compare models:
GQD.aic(list(m1,m2))
#===============================================================================
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.