Search This Blog

Wednesday, April 18, 2012

R: FORECASTING AND TIME SERIES # 4




# Example 4.1.
# MA(1) simulation
# Important! R's convention is to use positive thetas for MA models (so we have to negate)
# E.g., ma = 0.9 means theta = -0.9.
# Page 83
ma.sim <- arima.sim(list(order = c(0,0,1), ma = 0.9), n = 100)
par(mfrow=c(2,2))
plot(ma.sim,ylab=expression(Y[t]),xlab="Time",type="o",main="MA(1) simulation")
acf(ma.sim,main="Sample ACF")
plot(y=ma.sim,x=zlag(ma.sim,1),ylab=expression(Y[t]),xlab=expression(Y[t-1]),type='p',main="Lag 1 scatterplot")
plot(y=ma.sim,x=zlag(ma.sim,2),ylab=expression(Y[t]),xlab=expression(Y[t-2]),type='p',main="Lag 2 scatterplot")

# Example 4.1.
# MA(1) simulation
# Important! R's convention is to use positive thetas for MA models (so we have to negate)
# E.g., ma = -0.9 means theta = 0.9.
# Page 84
ma.sim <- arima.sim(list(order = c(0,0,1), ma = -0.9), n = 100)
par(mfrow=c(2,2))
plot(ma.sim,ylab=expression(Y[t]),xlab="Time",type="o",main="MA(1) simulation")
acf(ma.sim,main="Sample ACF")
plot(y=ma.sim,x=zlag(ma.sim,1),ylab=expression(Y[t]),xlab=expression(Y[t-1]),type='p',main="Lag 1 scatterplot")
plot(y=ma.sim,x=zlag(ma.sim,2),ylab=expression(Y[t]),xlab=expression(Y[t-2]),type='p',main="Lag 2 scatterplot")

# Example 4.2.
# MA(2) simulation
# Important! R's convention is to use positive thetas for MA models (so we have to negate)
# Page 87
ma.sim <- arima.sim(list(order = c(0,0,2), ma = c(-0.9,0.7)), n = 100)
par(mfrow=c(2,2))
plot(ma.sim,ylab=expression(Y[t]),xlab="Time",type="o",main="MA(2) simulation")
acf(ma.sim,main="Sample ACF")
plot(y=ma.sim,x=zlag(ma.sim,1),ylab=expression(Y[t]),xlab=expression(Y[t-1]),type='p',main="Lag 1 scatterplot")
plot(y=ma.sim,x=zlag(ma.sim,2),ylab=expression(Y[t]),xlab=expression(Y[t-2]),type='p',main="Lag 2 scatterplot")

# Example 4.3.
# True AR(1) autocorrelation functions (out to k=20 lags)
# Uses ARMAacf function
# ARMAacf function includes the k=0 lag
# Use y = y[2:21] to remove k=0 lag from ARMAacf output
# Page 91
par(mfrow=c(2,2))
y = ARMAacf(ar = c(0.9), lag.max = 20)
y = y[2:21]
plot(y, x = 1:20, type = "h", ylim = c(-1,1), xlab = "k",
      ylab = "Autocorrelation", main = "Population ACF")
abline(h = 0)
y = ARMAacf(ar = c(-0.9), lag.max = 20)
y = y[2:21]
plot(y, x = 1:20, type = "h", ylim = c(-1,1), xlab = "k",
      ylab = "Autocorrelation", main = "Population ACF")
abline(h = 0)
y = ARMAacf(ar = c(0.5), lag.max = 20)
y = y[2:21]
plot(y, x = 1:20, type = "h", ylim = c(-1,1), xlab = "k",
      ylab = "Autocorrelation", main = "Population ACF")
abline(h = 0)
y = ARMAacf(ar = c(-0.5), lag.max = 20)
y = y[2:21]
plot(y, x = 1:20, type = "h", ylim = c(-1,1), xlab = "k",
      ylab = "Autocorrelation", main = "Population ACF")
abline(h = 0)

# Example 4.3.
# AR(1) simulations
# Page 92
par(mfrow=c(2,2))
ar.sim.1 <- arima.sim(list(order = c(1,0,0), ar = 0.9), n = 100)
ar.sim.2 <- arima.sim(list(order = c(1,0,0), ar = -0.9), n = 100)
ar.sim.3 <- arima.sim(list(order = c(1,0,0), ar = 0.5), n = 100)
ar.sim.4 <- arima.sim(list(order = c(1,0,0), ar = -0.5), n = 100)
plot(ar.sim.1,ylab=expression(Y[t]),xlab="Time",type="o")
plot(ar.sim.2,ylab=expression(Y[t]),xlab="Time",type="o")
plot(ar.sim.3,ylab=expression(Y[t]),xlab="Time",type="o")
plot(ar.sim.4,ylab=expression(Y[t]),xlab="Time",type="o")
# AR(1) sample ACFs
# Page 93
par(mfrow=c(2,2))
acf(ar.sim.1,main="Sample ACF")
acf(ar.sim.2,main="Sample ACF")
acf(ar.sim.3,main="Sample ACF")
acf(ar.sim.4,main="Sample ACF")

# Figure 4.7.
# AR(2) stationarity region
# Page 97
par(xaxs = "i", yaxs = "i")
plot(x = -2, y = -1, xlim = c(-2,2), ylim = c(-1,1),
    type = "n", frame.plot = FALSE, xlab = expression(phi[1]), ylab = expression(phi[2]))
#abline() draws y = mx + b      
abline(a = 1, b = -1) #Draw line of phi2 = 1 – phi1
abline(a = 1, b =  1) #Draw line of phi2 = 1 + phi1
#Plot the phi1 and phi2 values
points(x = 0, y = 0.5, pch = 1, col = "red")
points(x = 0, y = -0.5, pch = 2, col = "darkgreen")
points(x = -0.2, y = -0.5, pch = 2, col = "darkgreen")
points(x = -1, y = -0.5, pch = 2, col = "darkgreen")
points(x = -1.8, y = -0.9, pch = 2, col = "darkgreen")
points(x = 0.5, y = 0.25, pch = 1, col = "red")
points(x = 1.8, y = 0.9, pch = 3, col = "blue")
points(x = -1.2, y = 0.8, pch = 3, col = "blue")
legend(locator(1), legend = c("Real roots",
      "Complex roots", "Outside stationarity region"), pch =
      c(1,2,3), col = c("red", "darkgreen", "blue"), cex =
      0.75, bty = "n")

# Example 4.4.
# True AR(2) autocorrelation functions (out to k=20 lags)
# Uses ARMAacf function
# ARMAacf function includes the k=0 lag
# Use y = y[2:21] to remove k=0 lag from ARMAacf output
# Page 100
par(mfrow=c(2,2))
y = ARMAacf(ar = c(0.5,-0.5), lag.max = 20)
y = y[2:21]
plot(y, x = 1:20, type = "h", ylim = c(-1,1), xlab = "k",
      ylab = "Autocorrelation", main = "Population ACF")
abline(h = 0)
y = ARMAacf(ar = c(1.1,-0.3), lag.max = 20)
y = y[2:21]
plot(y, x = 1:20, type = "h", ylim = c(-1,1), xlab = "k",
      ylab = "Autocorrelation", main = "Population ACF")
abline(h = 0)
y = ARMAacf(ar = c(-0.5,0.25), lag.max = 20)
y = y[2:21]
plot(y, x = 1:20, type = "h", ylim = c(-1,1), xlab = "k",
      ylab = "Autocorrelation", main = "Population ACF")
abline(h = 0)
y = ARMAacf(ar = c(1,-0.5), lag.max = 20)
y = y[2:21]
plot(y, x = 1:20, type = "h", ylim = c(-1,1), xlab = "k",
      ylab = "Autocorrelation", main = "Population ACF")
abline(h = 0)

# Example 4.4.
# AR(2) simulations
# Page 101
par(mfrow=c(2,2))
ar2.sim.1 <- arima.sim(list(order = c(2,0,0), ar = c(0.5,-0.5)), n = 100)
ar2.sim.2 <- arima.sim(list(order = c(2,0,0), ar = c(1.1,-0.3)), n = 100)
ar2.sim.3 <- arima.sim(list(order = c(2,0,0), ar = c(-0.5,-0.25)), n = 100)
ar2.sim.4 <- arima.sim(list(order = c(2,0,0), ar = c(1,-0.5)), n = 100)
plot(ar2.sim.1,ylab=expression(Y[t]),xlab="Time",type="o")
plot(ar2.sim.2,ylab=expression(Y[t]),xlab="Time",type="o")
plot(ar2.sim.3,ylab=expression(Y[t]),xlab="Time",type="o")
plot(ar2.sim.4,ylab=expression(Y[t]),xlab="Time",type="o")
# AR(2) sample ACFs
# Page 102
par(mfrow=c(2,2))
acf(ar2.sim.1,main="Sample ACF")
acf(ar2.sim.2,main="Sample ACF")
acf(ar2.sim.3,main="Sample ACF")
acf(ar2.sim.4,main="Sample ACF")

# Figure 4.11.
# True ARMA(1,1) autocorrelation functions (out to k=20 lags)
# Uses ARMAacf function
# ARMAacf function includes the k=0 lag
# Use y = y[2:21] to remove k=0 lag from ARMAacf output
# Page 112
par(mfrow=c(2,2))
y = ARMAacf(ar = 0.9, ma = 0.25, lag.max = 20)
y = y[2:21]
plot(y, x = 1:20, type = "h", ylim = c(-1,1), xlab = "k",
      ylab = "Autocorrelation", main = "Population ACF")
abline(h = 0)
y = ARMAacf(ar = -0.9, ma = 0.25, lag.max = 20)
y = y[2:21]
plot(y, x = 1:20, type = "h", ylim = c(-1,1), xlab = "k",
      ylab = "Autocorrelation", main = "Population ACF")
abline(h = 0)
y = ARMAacf(ar = 0.5, ma = 0.25, lag.max = 20)
y = y[2:21]
plot(y, x = 1:20, type = "h", ylim = c(-1,1), xlab = "k",
      ylab = "Autocorrelation", main = "Population ACF")
abline(h = 0)
y = ARMAacf(ar = -0.5, ma = 0.25, lag.max = 20)
y = y[2:21]
plot(y, x = 1:20, type = "h", ylim = c(-1,1), xlab = "k",
      ylab = "Autocorrelation", main = "Population ACF")
abline(h = 0)

No comments:

Post a Comment

Thank you