Анализ временных рядов – это важнейший метод анализа и прогнозирования данных, наблюдаемых с течением времени. Python предоставляет богатую экосистему библиотек и инструментов, упрощающих работу с данными временных рядов. В этой статье блога мы рассмотрим различные методы анализа временных рядов в Python с примерами кода. Независимо от того, новичок ли вы в анализе временных рядов или хотите расширить свои знания, это руководство предоставит вам необходимые инструменты для анализа и прогнозирования на основе данных, зависящих от времени.
Содержание:
- Введение в анализ временных рядов
- Загрузка и подготовка данных временных рядов
- Исследовательский анализ данных (EDA)
- Визуализация данных временных рядов
- Декомпозиция и анализ тенденций
- Стационарность и дифференцирование
- Автокорреляционный и частичный автокорреляционный анализ
- Построение моделей временных рядов
- Модели скользящего среднего (MA)
- Модели авторегрессии (AR)
- Модели авторегрессии скользящего среднего (ARMA)
- Модели авторегрессии с интегрированным скользящим средним (ARIMA)
- Сезонные модели ARIMA (SARIMA)
- Модели экспоненциального сглаживания (ETS)
- Модели пророков
- Сети краткосрочной памяти (LSTM)
- Оценка моделей временных рядов
- Прогнозирование будущей стоимости
- Продвинутые методы
- Заключение
Метод 1: загрузка и подготовка данных временных рядов
import pandas as pd
# Load CSV data into a DataFrame
data = pd.read_csv('time_series_data.csv', parse_dates=['timestamp'], index_col='timestamp')
# Resample data to daily frequency
daily_data = data.resample('D').mean()
# Fill missing values using forward fill
daily_data = daily_data.ffill()
Метод 2: исследовательский анализ данных (EDA)
import matplotlib.pyplot as plt
# Plot the time series data
plt.plot(data)
plt.title('Time Series Data')
plt.xlabel('Timestamp')
plt.ylabel('Value')
plt.show()
Метод 3: декомпозиция и анализ тенденций
from statsmodels.tsa.seasonal import seasonal_decompose
# Decompose the time series into trend, seasonal, and residual components
decomposition = seasonal_decompose(data, model='additive')
# Plot the decomposed components
trend = decomposition.trend
seasonal = decomposition.seasonal
residual = decomposition.resid
plt.figure(figsize=(10, 8))
plt.subplot(411)
plt.plot(data, label='Original')
plt.legend(loc='best')
plt.subplot(412)
plt.plot(trend, label='Trend')
plt.legend(loc='best')
plt.subplot(413)
plt.plot(seasonal, label='Seasonality')
plt.legend(loc='best')
plt.subplot(414)
plt.plot(residual, label='Residuals')
plt.legend(loc='best')
plt.tight_layout()
plt.show()
Метод 4: автокорреляционный и частичный автокорреляционный анализ
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
# Plot autocorrelation and partial autocorrelation plots
fig, ax = plt.subplots(2, 1, figsize=(10, 8))
plot_acf(data, ax=ax[0])
plot_pacf(data, ax=ax[1])
plt.tight_layout()
plt.show()
Метод 5: построение модели ARIMA
from statsmodels.tsa.arima.model import ARIMA
# Fit ARIMA model to the time series data
model = ARIMA(data, order=(1, 1, 1))
model_fit = model.fit()
# Generate predictions
predictions = model_fit.predict(start='2024-01-01', end='2024-01-31')
# Plot original data and predicted values
plt.plot(data, label='Original')
plt.plot(predictions, label='Predictions')
plt.title('ARIMA Model - Time Series Forecast')
plt.xlabel('Timestamp')
plt.ylabel('Value')
plt.legend(loc='best')
plt.show()
В этой статье мы рассмотрели различные методы анализа временных рядов в Python. Мы обсудили загрузку и подготовку данных временных рядов, выполнение исследовательского анализа данных, разложение и анализ тенденций, проведение автокорреляционного и частичного автокорреляционного анализа, а также построение моделей ARIMA для прогнозирования. Эти методы обеспечивают прочную основу для анализа и прогнозирования данных временных рядов в Python. Благодаря знаниям, полученным из этого руководства, вы сможете изучить более сложные методы и решить сложные проблемы, зависящие от времени.