# ARIMA SIMULATION and ESTIMATION EXAMPLES...
#
# You can execute the lines that are not commented
# (don't leave any out!)
# Example 1
# Simple example, an AR(3) with phi values 0.1, 0.2, and 0.1 with
# error standard deviation of .2
# First, look over the help file on arima.sim
# We need to define the model. This is does with an assignment
# to the argument "model" and the assigned object
# must be a list.
# Thus we use model=list(ar=c(0.1, 0.2, 0.1))
# We need to assign a value to rand.gen to generate the noise terms.
# This assignment needs to be a function.
# Thus we fire up finmetrics
module(finmetrics)
#Now we set up our simulation ----
error.model=function(n){rnorm(n, sd=.2)}
# Now, we put the whole package together and assign it to Ex1.
Ex1=arima.sim(model=list(ar=c(0.1, 0.2, 0.1)), n=1000,
n.start=200, start.innov=rnorm(200, sd=.2),
rand.gen=error.model )
#Explore this object
class(Ex1)
tsplot(Ex1)
#Now let's see if we can get the phi's back from the time series.
#You will first want to read the help file on arima.mle
arima.mle(Ex1, model=list(order=c(3,0,0)))
# check out those parentheses!
# Example 2
# OK, now lets do an ARIMA(1,0,1) with noise standard deviation 0.3,
# with phi=.3 and theta=.6
error.model=function(n){rnorm(n, sd=.3)}
Ex2=arima.sim(model=list(ar=.3, ma=.6), n=1000, n.start=200,
start.innov=rnorm(200, sd=.3), rand.gen=error.model )
arima.mle(Ex2, model=list(order=c(1,0,1)))
# General Observations...
#
# These estimates using 1000 observation
# are perhaps less accurate than one might hope.
# Especially since in the real world, we never know the model
# exactly, yet here we do --- since we simulated it.