机器学习——时间序列ARIMA模型(一):差分法详解

机器学习——时间序列ARIMA模型(一):差分法详解

一、所需数据的性质

平稳性

样本数据需随着时间序列而发生变化,且序列的均值和方差不发生明显变化。

预测出在未来的一段期间内数据顺着现有的“惯性”延续下去

现实案例如:股价预测,人口增长率预测

严平稳与弱平稳

严平稳:分布不随时间的改变而改变(期望为0,方差为1)

弱平稳:期望与依赖性不变(未来的值依赖于过去的值)

二、差分法

例如我们现在有一组数据,其随着时间的变化而呈现如下图趋势变化。

image-20220501144724690

那么我们需要将此数据的方差变小,即让此曲线能够更平稳,进而使用我们的ARIMA模型进行预测。

差分法定义:

当自变量x变到x+1时,函数y=y(x)的改变量
Δ y x = y ( x + 1 ) − y ( x ) , ( x = 0 , 1 , 2 , . . . ) \Delta y_{x} = y(x+1) - y(x) , (x = 0,1,2,...) Δyx=y(x+1)y(x),(x=0,1,2,...)
称为函数y(x)在点x的一阶差分。通常记作
Δ y x = y x + 1 − y x ( x = 0 , 1 , 2 , . . . ) \Delta y_{x} = y_{x+1} - y_{x} (x=0,1,2,...) Δyx=yx+1yx(x=0,1,2,...)
这里我写了些数据来进一步说明差分法,假设我们有的数据dif_test.csv如下:

datavalues
2015/1/220
2015/1/560
2015/1/6130
2015/1/7150
2015/1/8160
2015/1/9150
2015/1/12130
2015/1/1360
2015/1/1420
2015/1/1520

使用jupyter编写代码

#使用pandas读取数据
import pandas as pd
dif_data = 'dif_test.csv'
dif_data = pd.read_csv(dif_data, index_col=0, parse_dates=[0])
dif_data.head()

使用matplotlib和seaborn绘制曲线

import matplotlib.pylab as plt
import seaborn as sns
#绘制图像
dif_data.plot(figsize=(12,8))
plt.legend(bbox_to_anchor=(1.25, 0.5))
plt.title("method of difference")
sns.despine()

image-20220501153708551

将原数据进行一阶差分

stock_diff = dif_data.diff()
stock_diff.plot(figsize=(9,5))
plt.legend(bbox_to_anchor=(1.25, 0.5))
plt.title("first difference")
sns.despine()

一阶差分后结果如下图

image-20220501153917310

简单来说就是将values值改变成后项减去前项。例如values中的前两项之差(60-20=40)成为差分后的第一项。依此类推,使values趋于平稳。

40
70
20
10
-10
-20
-70
-40
0
  • 8
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天海一直在AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值