AddAr(state.specification,
y,
lags = 1,
sigma.prior,
initial.state.prior = NULL,
sdy)
NULL
,
in which case the stationary distribution of the AR(p) process
will be used as the initial state distribution.y
is supplied.state.specification
with an AR(p) state component
added to the end.
The state consists of the last p
lags of alpha
. The
state transition matrix has phi
in its first row, ones along
its first subdiagonal, and zeros elsewhere. The state variance matrix
has sigma^2
in its upper left corner and is zero elsewhere.
The observation matrix has 1 in its first element and is zero
otherwise.
Durbin and Koopman (2001), "Time series analysis by state space methods", Oxford University Press.
bsts
.
SdPrior
n <- 100
residual.sd <- .001
# Actual values of the AR coefficients
true.phi <- c(-.7, .3, .15)
ar <- arima.sim(model = list(ar = true.phi),
n = n,
sd = 3)
## Layer some noise on top of the AR process.
y <- ar + rnorm(n, 0, residual.sd)
ss <- AddAr(list(), lags = 3, sigma.prior = SdPrior(3.0, 1.0))
# Fit the model with knowledge with residual.sd essentially fixed at the
# true value.
model <- bsts(y, state.specification=ss, niter = 500, prior = SdPrior(residual.sd, 100000))
# Now compare the empirical ACF to the true ACF.
acf(y, lag.max = 30)
points(0:30, ARMAacf(ar = true.phi, lag.max = 30), pch = "+")
points(0:30, ARMAacf(ar = colMeans(model$AR3.phi), lag.max = 30))
legend("topright", leg = c("empirical", "truth", "MCMC"), pch = c(NA, "+", "o"))
Run the code above in your browser using DataLab