W11
Advanced 3 sessions • 6 hours R

Week 11: Time Series Analysis

.R
Follow along in RStudioDownload the Week 11 R script — every example ready to run with Ctrl+Enter.
Download R Script

Analyzing and forecasting sequential data

Week 11 Overview

Time series data has one critical difference: observations are DEPENDENT. EXAMPLES:

  • Stock prices (today related to yesterday)
  • Weather (today's temp related to yesterday)
  • Sales (seasonal patterns, trends)
  • Traffic (rush hour patterns)
  • Website traffic (daily/weekly seasonality)

CHALLENGES:

  • Can't randomize or shuffle data
  • Patterns change over time
  • Need special models
  • Requires stationarity for many methods

COMPONENTS:

  • Trend: Long-term direction
  • Seasonality: Repeating patterns
  • Cycles: Long-term oscillations
  • Noise: Random variation

THIS WEEK YOU'LL LEARN: ✓ Time series decomposition ✓ Stationarity testing ✓ Exponential smoothing ✓ ARIMA models ✓ SARIMA (seasonal ARIMA) ✓ Forecasting accuracy metrics ✓ Cross-validation for time series

Key Concepts

STATIONARITY - CRITICAL REQUIREMENT:

Most forecasting models require stationary data (constant mean, variance, no trend)

library(forecast)
library(tseries)

# Create time series
ts_data <- ts(c(100, 105, 110, 108, 115, 120, 125), frequency=1)

# Test for stationarity
adf.test(ts_data)
# p < 0.05 → stationary

# If non-stationary, difference
ts_diff <- diff(ts_data)
adf.test(ts_diff)
# p now < 0.05 → stationary

EXPONENTIAL SMOOTHING - SIMPLE FORECAST:

# Simple exponential smoothing
model_ses <- ses(ts_data, h=5)
forecast(model_ses)

# Holt's (with trend)
model_holt <- holt(ts_data, h=5)
forecast(model_holt)

# Holt-Winters (with seasonality)
model_hw <- hw(ts_data, seasonal="additive", h=5)
forecast(model_hw)

ARIMA(p,d,q) MODELS:

# Auto ARIMA (automatic parameter selection)
library(forecast)
model_arima <- auto.arima(ts_data)
print(model_arima)

# Forecast
forecast(model_arima, h=5)

# Check residuals (should be white noise)
checkresiduals(model_arima)

ACCURACY METRICS:

# Common metrics
MAE <- mean(abs(actual - predicted)) # Mean Absolute Error
RMSE <- sqrt(mean((actual - predicted)^2)) # Root MSE
MAPE <- mean(abs((actual - predicted)/actual)) * 100 # % error

# Better: scale-independent
library(forecast)
accuracy(predicted, actual)