Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Decomposing Time Series: Trend, Seasonality, Residuals | Section
Deconstructing Temporal Patterns

bookDecomposing Time Series: Trend, Seasonality, Residuals

Swipe um das Menü anzuzeigen

Decomposing a time series allows you to break it into its most informative elements: trend, seasonality, and residuals. This approach helps you uncover the underlying patterns that drive time-dependent data and clarifies the behavior of your dataset over time. By separating these components, you can better understand what drives changes in your data, make more accurate forecasts, and identify anomalies or unusual events.

The trend represents the long-term movement or direction in the data, showing whether values tend to increase, decrease, or remain stable over time. Seasonality captures regular, repeating patterns that occur at fixed intervals, such as daily, weekly, or yearly cycles. The residuals (or remainder) are what is left after removing the trend and seasonality, highlighting the noise or random fluctuations that cannot be explained by the other components.

You can perform a basic decomposition using Python by calculating a rolling mean for the trend, subtracting it to reveal seasonality, and then isolating the residuals. Let's look at how this can be implemented.

1234567891011121314151617181920212223242526272829303132333435363738
import pandas as pd import matplotlib.pyplot as plt # Create a sample time series with trend and seasonality date_range = pd.date_range(start="2021-01-01", periods=48, freq="M") trend = pd.Series(range(48), index=date_range) seasonal_pattern = [10, 20, 15, 5] * 12 seasonality = pd.Series(seasonal_pattern, index=date_range) noise = pd.Series(pd.np.random.normal(0, 2, 48), index=date_range) ts = trend + seasonality + noise # Calculate trend using rolling mean window_size = 12 trend_component = ts.rolling(window=window_size, center=True).mean() # Calculate seasonality by subtracting trend seasonality_component = ts - trend_component # Calculate mean seasonal effect for each period in the cycle (e.g., month) seasonal_avg = seasonality_component.groupby(seasonality_component.index.month).mean() seasonality_aligned = ts.index.month.map(seasonal_avg) seasonality_aligned = pd.Series(seasonality_aligned.values, index=ts.index) # Residuals: remove both trend and seasonality residuals = ts - trend_component - seasonality_aligned # Plot all components fig, axs = plt.subplots(4, 1, figsize=(10, 10), sharex=True) axs[0].plot(ts, label="Original") axs[0].set_title("Original Time Series") axs[1].plot(trend_component, label="Trend", color="orange") axs[1].set_title("Trend (Rolling Mean)") axs[2].plot(seasonality_aligned, label="Seasonality", color="green") axs[2].set_title("Seasonality") axs[3].plot(residuals, label="Residuals", color="red") axs[3].set_title("Residuals") plt.tight_layout() plt.show()
copy

In this example, you first create a synthetic time series that includes a linear trend, a repeating seasonal pattern, and random noise. The rolling mean with a window of 12 smooths the data to estimate the trend. Subtracting this trend from the original series gives you a first look at the seasonality, which is then averaged by month to create a consistent seasonal component. Finally, the residuals are calculated by removing both the trend and seasonality from the original data.

The trend component helps you see the overall direction of your data, filtering out short-term fluctuations. The seasonality component highlights regular, repeating cycles that may be influenced by time of year, day of week, or other periodic effects. The residuals show the unpredictable part of your series, which is useful for detecting outliers or events that do not fit the expected pattern.

By analyzing these components separately, you gain deeper insights into the structure of your time series, allowing for improved modeling, forecasting, and anomaly detection.

question mark

Which statement best describes the importance of decomposing a time series into trend, seasonality, and residuals?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 8

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 1. Kapitel 8
some-alt