# NOT RUN {
##### Irregularly spaced observation time generation.
length.time <- 30
time.temp <- rexp(length.time, rate = 2)
time <- rep(NA, length.time + 1)
time[1] <- 0
for (i in 2 : (length.time + 1)) {
time[i] <- time[i - 1] + time.temp[i - 1]
}
time <- time[-1]
##### Data genration for CARFIMA(1, H, 0) based on the observation times.
parameter <- c(-0.4, 0.8, 0.2)
# AR parameter alpha = -0.4
# Hurst parameter = 0.8
# Process uncertainty (standard deviation) sigma = 0.2
me.sd <- rep(0.05, length.time)
# Known measurement error standard deviations 0.05 for all observations
# If not known, remove the argument "measure.error = me.sd" in the following codes,
# so that the default values (zero) are automatically assigned.
y <- carfima.sim(parameter = parameter, time = time,
measure.error = me.sd, ar.p = 1, ma.q = 0)
##### Fitting the CARFIMA(1, H, 0) model on the simulated data for MLEs.
# }
# NOT RUN {
res <- carfima(Y = y, time = time, measure.error = me.sd,
method = "mle", ar.p = 1, ma.q = 0)
# }
# NOT RUN {
# It takes a long time due to the differential evolution algorithm (global optimizer).
# res$mle; res$se; res$AIC; res$fitted.values
##### Fitting the CARFIMA(1, H, 0) model on the simulated data for Bayesian inference.
# }
# NOT RUN {
res <- carfima(Y = y, time = time, measure.error = me.sd,
method = "bayes", ar.p = 1, ma.q = 0,
bayes.param.ini = parameter,
bayes.param.scale = c(rep(0.2, length(parameter))),
bayes.n.warm = 100, bayes.n.sample = 1000)
# }
# NOT RUN {
# It takes a long time because the likelihood evaluation is computationally heavy.
# The last number of bayes.param.scale is to update sigma2 (not sigma) on a log scale.
# hist(res$param[, 1]); res$accept; res$AIC; res$fitted.values
##### Computing the log likelihood of the CARFIMA(1, H, 0) model given the parameters.
loglik <- carfima.loglik(Y = y, time = time, ar.p = 1, ma.q = 0,
measure.error = me.sd,
parameter = parameter, fitted = FALSE)
# }
Run the code above in your browser using DataLab