I want to simulate $y_t$ given a set of parameters $\theta = (\mu, \phi)$, where $y_t$ is given by

$y_t = \epsilon_texp(h_t/2)$,

$h_{t+1} = \mu + \phi(h_t - \mu) + \eta_t,\,\, t = 0,1,...,n.$


$ \begin{pmatrix} \epsilon_t\\ \eta_t \end{pmatrix}\Bigg|(\rho, \sigma) \sim\,\,i.i.d.\,\,\mathcal{N}_2(0,\Sigma), \,\,\, \Sigma = \begin{pmatrix} 1 & \rho\sigma\\ \rho\sigma & \sigma^2 \end{pmatrix}$.

Before I had to simulate $y_t$ with $\rho = 0$ (meaning that there was no correlation between $\epsilon_t$ and $\eta_t$) which was pretty straightforward. I just simulated the vector h with the given parameters $\theta$ and then calculated the $y_t$ given the $h_{t+1}$. With $\rho\neq0$ however, I'm not so sure how to handle this problem.

Q: How do I simulate the $y_t$, taking the correlation between $\epsilon_t$ and $\eta_t$ into account?

  • $\begingroup$ Does this require the self-study tag? Is it intentional that $\eta_t$ drives $h_{t+1}$ (i.e., with a lag)? $\endgroup$ – Christoph Hanck Jun 27 '17 at 11:10
  • $\begingroup$ Yes that's intentional! $\endgroup$ – titusAdam Jun 27 '17 at 12:05

You could first generate the errors from a bivariate normal distribution, as in

rho <- 0.5
sigma <- 1
Sigma <- matrix(c(1,rho*sigma,rho*sigma,sigma^2), nrow=2)
n <- 101
u <- mvrnorm(n,c(0,0),Sigma)
eps <- u[2:n,1]
eta <- u[1:(n-1),2]
mu <- 1
phi <- 0.5
h <- mu + arima.sim(n=n-1, list(ar=phi), innov = eps)
y <- eps*exp(h/2)

I haven't fully checked if that solution corresponds with how you aim to specify the lag structure.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.