专栏名称: 学姐带你玩AI
这里有人工智能前沿信息、算法技术交流、机器学习/深度学习经验分享、AI大赛解析、大厂大咖算法面试分享、人工智能论文技巧、AI环境工具库教程等……学姐带你玩转AI!
目录
相关文章推荐
跟宇宙结婚  ·  节目更新:跟宇宙结婚悄悄话 vol.245 ... ·  2 天前  
51好读  ›  专栏  ›  学姐带你玩AI

通透!十大时间序列分析方法 超强总结 !!

学姐带你玩AI  · 公众号  ·  · 2024-12-11 18:06

正文

来源:投稿  作者:sunny
编辑:学姐

时间序列分析是一种重要的数据处理方法,用于研究数据的时间依赖性和趋势。本文将总结十大经典时间序列技术,涵盖其 原理 公式 优缺点 及代码实现,助力你快速掌握时间序列分析的精髓。

一、移动平均(Moving Average,MA)

原理: 移动平均法通过对指定窗口内的数据求平均值,平滑数据波动,适用于趋势分析。

公式:

优缺点:

  • 优点:简单易用,适合消除短期波动。
  • 缺点:对数据的突变反应迟钝,不适合长期预测。
import pandas as pd

data = pd.Series([12345678910])
moving_avg = data.rolling(window=3).mean()
print(moving_avg)

二、指数平滑(Exponential Smoothing,ES)

原理: 通过指数衰减加权平均,最近的数据权重更大。

公式:

优缺点:

  • 优点:对近期变化更敏感。
  • 缺点:需要指定平滑因子 α\alphaα。
from statsmodels.tsa.holtwinters import SimpleExpSmoothing

data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
model = SimpleExpSmoothing(data).fit(smoothing_level=0.2)
smoothed = model.fittedvalues
print(smoothed)

三、自回归(Autoregressive,AR)

原理: 假设当前值是过去若干值的线性组合。

公式:

优缺点:

  • 优点:适用于平稳时间序列。
  • 缺点:不适合非线性数据。
from statsmodels.tsa.ar_model import AutoReg

data = [12345678910]
model = AutoReg(data, lags=2).fit()
print(model.params)

四、滑动窗口回归

原理: 在滑动窗口内使用回归分析,适用于局部建模。

公式:

优缺点:

  • 优点:能捕捉局部趋势。
  • 缺点:对窗口大小敏感。
import numpy as np
from sklearn.linear_model import LinearRegression

data = np.arange(10).reshape(-11)
window = 3
X, y = [], []
for i in range(len(data) - window):
    X.append(data[i:i+window])
    y.append(data[i+window])
model = LinearRegression().fit(np.array(X).reshape(-1, window), y)
print(model.coef_)

五、差分(Differencing)

原理: 通过计算相邻点差值,使时间序列平稳化。

公式:

优缺点:

  • 优点:简单有效,可消除趋势和季节性。
  • 缺点:可能过度差分,导致信息丢失。
data = [123581321]
diff = [data[i] - data[i-1for i in range(1, len(data))]
print(diff)

六、ARIMA(AutoRegressive Integrated Moving Average)

原理: 综合自回归、差分和移动平均,用于预测平稳时间序列。

公式:

优缺点:

  • 优点:功能强大,适合多种数据类型。
  • 缺点:模型参数复杂,需调参。
from statsmodels.tsa.arima.model import ARIMA

data = [12345678910]
model = ARIMA(data, order=(111)).fit()
print(model.summary())

七、SARIMA(Seasonal ARIMA)

原理: 在ARIMA基础上加入季节性参数,捕捉周期性波动。

公式:

优缺点:

  • 优点:适合有季节性规律的数据。
  • 缺点:计算量大。
from statsmodels.tsa.statespace.sarimax import SARIMAX

data = [12345678910]
model = SARIMAX(data, order=(111), seasonal_order=(11112)).fit()
print(model.summary())

八、LSTM(Long Short-Term Memory)

原理: 一种特殊的递归神经网络,能捕获长期依赖关系。

公式: 涉及遗忘门、输入门和输出门的复杂运算。

优缺点:

  • 优点:擅长处理非线性和长序列数据。
  • 缺点:训练时间长,参数难调。
from keras.models import Sequential
from keras.layers import LSTM, Dense

model = Sequential([
    LSTM(50, activation='relu', input_shape=(101)),
    Dense(1)
])
model.compile(optimizer='adam', loss='mse')

九、Prophet

原理: 基于加法模型分解趋势、季节性和假期影响。

优缺点:

  • 优点:简单易用,适合商业数据。
  • 缺点:灵活性不如传统方法。
from prophet import Prophet

data = pd.DataFrame({'ds': pd.date_range('2023-01-01', periods=100), 'y': range(100)})
model = Prophet()
model.fit(data)
future = model.make_future_dataframe(periods=30)
forecast = model.predict(future)

十、FFT(Fast Fourier Transform)

原理: 将时间序列转换为频域,分析周期性成分。







请到「今天看啥」查看全文