Изучение анализа временных рядов: методы и примеры кода

Анализ временных рядов – это мощный метод, используемый для анализа и прогнозирования закономерностей в последовательных данных. Независимо от того, работаете ли вы с ценами на акции, данными о погоде или показателями продаж, понимание методов анализа временных рядов может помочь вам получить ценную информацию. В этой статье мы рассмотрим различные методы и приведем примеры кода, демонстрирующие их реализацию.

  1. Скользящее среднее.
    Метод скользящего среднего – это простой, но эффективный способ сгладить колебания временного ряда. Он включает в себя вычисление среднего значения для определенного окна точек данных. Вот пример использования Python:
import pandas as pd
# Generate a time series data
data = pd.Series([10, 12, 8, 14, 11, 9, 13, 15, 10, 12])
# Calculate the moving average with a window size of 3
moving_avg = data.rolling(window=3).mean()
# Print the moving average
print(moving_avg)
  1. Авторегрессионное интегрированное скользящее среднее (ARIMA):
    ARIMA — популярный метод прогнозирования данных временных рядов. Он сочетает в себе компоненты авторегрессии (AR), разности (I) и скользящего среднего (MA). Вот пример использования библиотеки statsmodelsв Python:
import pandas as pd
from statsmodels.tsa.arima.model import ARIMA
# Load time series data
data = pd.read_csv('data.csv')
# Fit ARIMA model
model = ARIMA(data, order=(1, 1, 1))
model_fit = model.fit()
# Make predictions
predictions = model_fit.predict(start=len(data), end=len(data)+5)
# Print the predictions
print(predictions)
  1. Сезонное разложение временных рядов (STL):
    STL — это метод, используемый для разложения временного ряда на трендовые, сезонные и остаточные компоненты. Это помогает выявить закономерности и аномалии в данных. Вот пример использования библиотеки statsmodels:
import pandas as pd
import statsmodels.api as sm
# Load time series data
data = pd.read_csv('data.csv')
# Decompose the time series
decomposition = sm.tsa.seasonal_decompose(data, model='additive')
# Print the trend, seasonal, and residual components
print(decomposition.trend)
print(decomposition.seasonal)
print(decomposition.resid)
  1. Сети с длинной краткосрочной памятью (LSTM).
    Сети LSTM — это тип рекуррентной нейронной сети (RNN), обычно используемый для прогнозирования временных рядов. У них есть возможность фиксировать долгосрочные зависимости в данных. Вот пример использования библиотеки Kerasв Python:
import numpy as np
from keras.models import Sequential
from keras.layers import LSTM, Dense
# Prepare the time series data
data = np.array([10, 12, 8, 14, 11, 9, 13, 15, 10, 12])
# Reshape the data for LSTM input
data = data.reshape((len(data), 1, 1))
# Build the LSTM model
model = Sequential()
model.add(LSTM(50, activation='relu', input_shape=(1, 1)))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')
# Fit the model
model.fit(data, data, epochs=100, verbose=0)
# Make predictions
predictions = model.predict(data)
# Print the predictions
print(predictions)

Анализ временных рядов предлагает широкий спектр методов анализа и прогнозирования закономерностей в последовательных данных. В этой статье мы рассмотрели несколько методов, включая скользящее среднее, сети ARIMA, STL и LSTM, с примерами кода на Python. Включив эти методы в рабочий процесс анализа данных, вы сможете получить ценную информацию и сделать более точные прогнозы.