Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Stationarity and Its Importance | Foundations of Time Series Analysis
Time Series Forecasting with ARIMA

bookStationarity and Its Importance

Understanding stationarity is fundamental to time series analysis and especially to building ARIMA models. A time series is said to be stationary if its statistical properties — such as mean, variance, and autocorrelation — do not change over time. Stationarity ensures that relationships observed in the past persist into the future, which is a core assumption behind most forecasting models, including ARIMA.

There are two main types of stationarity:

  • Strict stationarity requires that the entire distribution of the series is unchanged by shifts in time, meaning all moments (mean, variance, higher-order moments) remain constant;
  • Weak (or second-order) stationarity only requires the mean and variance to be constant over time, and that covariance between values depends only on the lag between them, not on the actual time at which the covariance is computed.

For ARIMA models to provide reliable forecasts, the input time series must be stationary. If a series is not stationary—perhaps due to trends, seasonality, or changing variance—the model’s assumptions are violated, often resulting in poor predictions. Non-stationary data often need to be transformed before modeling, with differencing being a common technique to remove trends and stabilize the mean.

Note
Definition

Stationarity refers to a time series whose statistical properties do not change over time.

Key indicators of non-stationarity include:

  • Changing mean (trend);
  • Changing variance (heteroscedasticity);
  • Seasonal patterns.
1234567891011121314151617181920212223242526
import numpy as np import pandas as pd import matplotlib.pyplot as plt # Generate a stationary time series (white noise) np.random.seed(0) stationary_series = np.random.normal(loc=0, scale=1, size=100) # Generate a non-stationary time series (random walk) non_stationary_series = np.cumsum(np.random.normal(loc=0, scale=1, size=100)) plt.figure(figsize=(12, 5)) plt.subplot(1, 2, 1) plt.plot(stationary_series, color='blue') plt.title('Stationary Series (White Noise)') plt.xlabel('Time') plt.ylabel('Value') plt.subplot(1, 2, 2) plt.plot(non_stationary_series, color='red') plt.title('Non-Stationary Series (Random Walk)') plt.xlabel('Time') plt.ylabel('Value') plt.tight_layout() plt.show()
copy
12345678910111213141516
import numpy as np import pandas as pd import matplotlib.pyplot as plt np.random.seed(0) non_stationary_series = np.cumsum(np.random.normal(loc=0, scale=1, size=100)) # Assume 'non_stationary_series' from previous code diff_series = np.diff(non_stationary_series) plt.figure(figsize=(8, 4)) plt.plot(diff_series, color='green') plt.title('Differenced Series (First Order)') plt.xlabel('Time') plt.ylabel('Value') plt.show()
copy
question mark

Which plot feature most clearly indicates a non-stationary time series?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 3

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

What is the difference between strict and weak stationarity?

How can I check if my time series data is stationary?

Can you explain how differencing helps achieve stationarity?

Awesome!

Completion rate improved to 6.67

bookStationarity and Its Importance

Свайпніть щоб показати меню

Understanding stationarity is fundamental to time series analysis and especially to building ARIMA models. A time series is said to be stationary if its statistical properties — such as mean, variance, and autocorrelation — do not change over time. Stationarity ensures that relationships observed in the past persist into the future, which is a core assumption behind most forecasting models, including ARIMA.

There are two main types of stationarity:

  • Strict stationarity requires that the entire distribution of the series is unchanged by shifts in time, meaning all moments (mean, variance, higher-order moments) remain constant;
  • Weak (or second-order) stationarity only requires the mean and variance to be constant over time, and that covariance between values depends only on the lag between them, not on the actual time at which the covariance is computed.

For ARIMA models to provide reliable forecasts, the input time series must be stationary. If a series is not stationary—perhaps due to trends, seasonality, or changing variance—the model’s assumptions are violated, often resulting in poor predictions. Non-stationary data often need to be transformed before modeling, with differencing being a common technique to remove trends and stabilize the mean.

Note
Definition

Stationarity refers to a time series whose statistical properties do not change over time.

Key indicators of non-stationarity include:

  • Changing mean (trend);
  • Changing variance (heteroscedasticity);
  • Seasonal patterns.
1234567891011121314151617181920212223242526
import numpy as np import pandas as pd import matplotlib.pyplot as plt # Generate a stationary time series (white noise) np.random.seed(0) stationary_series = np.random.normal(loc=0, scale=1, size=100) # Generate a non-stationary time series (random walk) non_stationary_series = np.cumsum(np.random.normal(loc=0, scale=1, size=100)) plt.figure(figsize=(12, 5)) plt.subplot(1, 2, 1) plt.plot(stationary_series, color='blue') plt.title('Stationary Series (White Noise)') plt.xlabel('Time') plt.ylabel('Value') plt.subplot(1, 2, 2) plt.plot(non_stationary_series, color='red') plt.title('Non-Stationary Series (Random Walk)') plt.xlabel('Time') plt.ylabel('Value') plt.tight_layout() plt.show()
copy
12345678910111213141516
import numpy as np import pandas as pd import matplotlib.pyplot as plt np.random.seed(0) non_stationary_series = np.cumsum(np.random.normal(loc=0, scale=1, size=100)) # Assume 'non_stationary_series' from previous code diff_series = np.diff(non_stationary_series) plt.figure(figsize=(8, 4)) plt.plot(diff_series, color='green') plt.title('Differenced Series (First Order)') plt.xlabel('Time') plt.ylabel('Value') plt.show()
copy
question mark

Which plot feature most clearly indicates a non-stationary time series?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 3
some-alt