首页 > 解决方案 > 平滑要在 ARIMA 中使用的时间序列数据

问题描述

我是机器学习的新手。我想要做的是平滑数据集,当绘制看起来像这样时。

训练和测试数据集

蓝线是训练数据,橙线是测试数据。时间序列数据是股票的每日收盘价。

有没有办法让它平滑?我尝试过应用对数转换,但似乎没有多大帮助。

生成图表的代码:

#general
import pandas as pd
import numpy as np
import matplotlib.pylab as plt
%matplotlib inline
import yfinance as yf

#ML stuff
from sklearn.preprocessing import MinMaxScaler

ticker = "0118.KL"
data = yf.Ticker(ticker)
df = data.history(start="2019-01-01",end="2020-04-30")

df = df.filter(items=['Close'])
train = df[:-30]
test = df[-30:]

train = np.log(train['Close'])
test = np.log(test['Close'])

plt.plot(train)
plt.plot(test)
plt.show()

标签: pythontime-seriessmoothing

解决方案


最简单的方法是使用移动平均线。可以在此处找到教程。

从时间序列的角度来看,平滑数据不会改变 Box-Jenkins 设置中的大部分标识(例如模型)(我假设这是您的 AI 框架中使用的)。但是,如果您在使用另一种估计范式训练模型之前对数据进行平滑处理,您的标准误和估计可能会出现偏差。

在估计后平滑数据可能有助于可视化您正在做什么,但不会反映您训练的模型的预测。


推荐阅读