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 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] model = AutoReg(data, lags=2).fit() print(model.params)
四、滑动窗口回归
原理:
在滑动窗口内使用回归分析,适用于局部建模。
公式:
优缺点:
优点:能捕捉局部趋势。
缺点:对窗口大小敏感。
import numpy as np from sklearn.linear_model import LinearRegression
data = np.arange(10).reshape(-1, 1) 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 = [1, 2, 3, 5, 8, 13, 21] diff = [data[i] - data[i-1] for i in range(1, len(data))] print(diff)
六、ARIMA(AutoRegressive Integrated Moving Average)
原理:
综合自回归、差分和移动平均,用于预测平稳时间序列。
公式:
优缺点:
优点:功能强大,适合多种数据类型。
缺点:模型参数复杂,需调参。
from statsmodels.tsa.arima.model import ARIMA
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] model = ARIMA(data, order=(1, 1, 1)).fit() print(model.summary())
七、SARIMA(Seasonal ARIMA)
原理:
在ARIMA基础上加入季节性参数,捕捉周期性波动。
公式:
优缺点:
优点:适合有季节性规律的数据。
缺点:计算量大。
from statsmodels.tsa.statespace.sarimax import SARIMAX