#===============================================================================
# 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 model 1
#------------------------------------------------------------------------------
# Remove any existing coeffients. If none are pressent NAs will be returned, but
# this is a safeguard against overlapping.
GQD.remove()
# Define time dependant coefficients. Note that all functions have a single argument.
# This argument has to be `t' in order for the dependancy to be recognized.
# theta does not have to be defined as an argument.
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
proposal.sds <- c(0.8,0.1,0.1,0.1) # Std devs for proposal distributions
mesh.points <- 10 # Number of mesh points
updates <- 50000 # Perform 50000 updates
priors=function(theta){dnorm(theta[1],5,5)}
m1 <- GQD.mcmc(Xt,time,mesh=mesh.points,theta=theta.start,sds=proposal.sds,
updates=updates)
#------------------------------------------------------------------------------
# Define coefficients of model 2
#------------------------------------------------------------------------------
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]}
proposal.sds <- c(0.8,0.1,0.1,0.1)
m2 <- GQD.mcmc(Xt,time,mesh=mesh.points,theta=theta.start,sds=proposal.sds,
updates=updates)
# Checkthe parameter estimates:
GQD.estimates(m2,thin = 200)
#------------------------------------------------------------------------------
# Summarize the output from the models.
#------------------------------------------------------------------------------
GQD.dic(list(m1,m2))
#===============================================================================
Run the code above in your browser using DataLab