mindmap root((Time Series Analysis)) Databases TimeScaleDB InfluxDB Python tools Altair Pandas DuckDB Polars Scipy Gekko Matplotlib Core concepts Trend Cycle Variation Statistical movements Stationary and non-stationary Seasonality Auto-Correlation Forcasting Auto Regressive Integrated Moving Average - ARIMA Exponential smoothing
A mindmap of time series analysis
Core concepts explained visually
Time series
Observed values of the same variable collected at regular time intervals.
In the below example, revenue is the variable observed with a monthly time intervals given a year.
--- config: xyChart: width: 700 height: 350 themeVariables: xyChart: titleColor: "#ff0000" --- xychart-beta title "Sales revenue" x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] y-axis "Revenue (in $)" 4000 --> 13000 line [5000, 6200, 7900, 8800, 10300, 11500, 12200, 11600, 10800, 10300, 9000, 8200]
Time series analysis
The method of analyzing a timestamped dataset to observe/forecast/predict past and future values for the observed variable. Hence this analysis can be used as a decision support system.
Trend
Positive secular trend
--- config: xyChart: width: 700 height: 350 themeVariables: xyChart: titleColor: "#ff0000" --- xychart-beta title "Sales revenue (positive secular trend)" x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] y-axis "Revenue (in $)" 4000 --> 13000 line [5000, 5200, 6100, 5900, 6800, 7500, 8200, 7900, 8600, 8400, 9100, 9500]
Negative secular trend
--- config: xyChart: width: 700 height: 350 themeVariables: xyChart: titleColor: "#ff0000" --- xychart-beta title "Sales revenue (negative secular trend)" x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] y-axis "Revenue (in $)" 4000 --> 20000 line [14000, 13600, 13900, 13200, 13500, 12800, 13100, 12500, 12700, 12100, 11800, 11500]
Seasonality
Time series data can change depending on the seasons/seasonal pattern.
Seasonal positive secular trend
--- config: xyChart: width: 700 height: 350 themeVariables: xyChart: titleColor: "#ff0000" --- xychart-beta title "Sales revenue (seasonal postive secular trend)" x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] y-axis "Revenue (in $)" 4000 --> 20000 line [14000, 13600, 14800, 14200, 15100, 15600, 15300, 14900, 15800, 15400, 15900, 16200]
Seasonal negative secular trend
--- config: xyChart: width: 700 height: 350 themeVariables: xyChart: titleColor: "#ff0000" --- xychart-beta title "Sales revenue (seasonal negative secular trend)" x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] y-axis "Revenue (in $)" 4000 --> 20000 line [14000, 13200, 13900, 12800, 13500, 14100, 12600, 13200, 13800, 12400, 12900, 13300]
Cyclic
--- config: xyChart: width: 700 height: 350 themeVariables: xyChart: titleColor: "#ff0000" --- xychart-beta title "Sales revenue (Cyclic trend)" x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] y-axis "Revenue (in $)" 4000 --> 20000 line [10000, 10800, 11900, 13200, 14300, 15100, 15500, 15400, 14800, 13900, 12800, 11700]
Resources
Here are some of the resources which helped me learn the basic concepts of time series analysis with no specific order.
Introduction to time series analysis
Lecture on time series analysis
Patterns and trends in time series plots
When I learn an interesting aspect of time series analysis, I will update this post. For now, time series analysis was fun learning. I have barely scratched the surface here.
More fun to be had!