STL decomposition notebook with parameter analysis, diagnostics, seasonal strength metrics, forecasting, and alternative methods. Complete time series decomposition workflow with visualizations and statistical tests.
This comprehensive Jupyter notebook provides an in-depth exploration of Seasonal-Trend decomposition using LOESS (STL), a powerful non-parametric method for analyzing time series data. Using atmospheric CO₂ concentration data (1959-1987) as a case study, the notebook demonstrates a complete workflow from data preparation and decomposition to advanced diagnostics and forecasting.
- Complete STL Workflow: Full implementation of STL decomposition with parameter tuning
- Comparative Analysis: Robust vs. non-robust decomposition, multiple seasonal window sizes
- Advanced Diagnostics: Comprehensive residual analysis with statistical tests (Shapiro-Wilk, D'Agostino, Anderson-Darling, ADF)
- Seasonality Strength Metrics: Quantitative assessment of seasonal patterns
- Forecasting Capabilities: STL-based forecasting with confidence intervals
- Alternative Methods: Comparison with classical additive decomposition
- Visualization Suite: Extensive plotting for data exploration and component analysis
- Parameter Sensitivity: Analysis of how different parameters affect decomposition results
The analysis uses the Atmospheric CO₂ Concentrations dataset from Mauna Loa Observatory:
- Time Period: January 1959 to December 1987 (29 years)
- Frequency: Monthly measurements
- Observations: 348 data points
statsmodels- STL decomposition and statistical testspandas&numpy- Data manipulation and numerical operationsmatplotlib&seaborn- Visualization and plottingscipy- Statistical functions and tests
-
Data Preparation & Exploration
- Loading and formatting time series data
- Statistical summaries and distribution analysis
- Rolling statistics visualization
-
STL Decomposition
- Basic decomposition with optimal parameters
- Component extraction and analysis
- Reconstruction validation
-
Parameter Sensitivity
- Effect of different seasonal window sizes (7, 13, 25, 37)
- Robust vs. non-robust decomposition comparison
-
Alternative Methods
- Classical additive decomposition
- Multiplicative decomposition (where applicable)
-
Advanced Diagnostics
- Residual analysis and statistical tests
- Normality and stationarity checks
- Autocorrelation analysis
-
Seasonality Strength Analysis
- Variance contribution metrics
- Rolling seasonality strength
- Amplitude analysis over time
-
Forecasting
- Trend and seasonal component forecasting
- 24-month forecast with confidence intervals
- Forecast validation metrics
- Strong upward trajectory: CO₂ increased from ~315 ppm to ~351 ppm over 29 years
- Dominant variance contributor: Explains ~97% of total variance
- Linear increase rate: Approximately 1.12 ppm/year in recent years
- Clear annual cycle: ~6.6 ppm amplitude
- Stable pattern: Consistent seasonal behavior over time
- Optimal window: 13 months captures the annual pattern best
- Stationary: Successfully removed trend and seasonality (ADF p-value ≈ 0)
- Mild non-normality: Slight deviation from normal distribution
- Low variance: Only ~0.23 ppm standard deviation
This notebook demonstrates STL decomposition for:
- Environmental Science: Analyzing climate and pollution trends
- Economics: Business cycle decomposition
- Finance: Market trend and seasonality analysis
- Operations: Demand forecasting and pattern recognition
- Quality Control: Process monitoring and anomaly detection
- Parameter Optimization: Empirical determination of optimal seasonal window
- Robustness Assessment: Comparison of robust vs. standard fitting
- Diagnostic Framework: Comprehensive model validation approach
- Forecasting Integration: Simple yet effective forecasting method
- Visual Analytics: Multi-faceted visualization of decomposition results
pip install pandas numpy matplotlib seaborn statsmodels scipy# Clone and run the notebook
jupyter notebook seasonal_trend_decomposition_using_LOESS.ipynb- Replace the CO₂ data with your time series
- Adjust seasonal period parameter based on your data frequency
- Modify visualization parameters as needed
- Extend analysis with domain-specific metrics
- STL effectively separates trend, seasonal, and residual components
- Robust STL recommended for real-world data with potential outliers
- Parameter selection crucial for accurate decomposition
- Residual diagnostics essential for model validation
- STL-based forecasting provides interpretable short-term projections
- Cleveland, R. B., Cleveland, W. S., McRae, J. E., & Terpenning, I. (1990). STL: A Seasonal-Trend Decomposition Procedure Based on Loess. Journal of Official Statistics, 6(1), 3-73.
- Hyndman, R. J., & Athanasopoulos, G. (2018). Forecasting: Principles and Practice.
- Statsmodels Documentation: Seasonal-Trend Decomposition using LOESS.
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions, issues, and feature requests are welcome! Feel free to check the issues page.
This notebook is designed for educational and research purposes. Real-world applications may require additional considerations and validation.