Analyzing and forecasting sequential data
Time series data has one critical difference: observations are DEPENDENT. EXAMPLES:
CHALLENGES:
COMPONENTS:
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
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)