arima预测建模步骤python_ARIMA进行时间序列预测-python实现

用ARIMA进行时间序列预测

本文翻译于Kaggle,原文链接时间序列预测教程。中文论坛很少有对整个过程进行描述,所以想转载过来供大家一起学习。数据在原文也有,我也放了云盘天气数据。

英文水平和学术水平都比较低,所以翻译问题和理论问题在所难免,如果不能理解,请查看原文。

我们将使用最常见的方法ARIMA

ARIMA:差分整合移动平均自回归模型。我将在下一部分详细解释。

接下来我们会看到:

什么是时间序列(Time Series)?

时间序列的平稳性(Stationarity )

使一个时间序列平稳?

预测一个时间序列

什么是时间序列?

时间序列是以国定的时间间隔收集的数据点的集合。

它依赖于时间。

大多数的时间序列都有某种形式的季节性趋势。例如,如果我们销售冰淇淋,很可能在夏季会有更高的销售额。因此,该事件序列具有季节性趋势。

再举一个例子,假如我们在一年内每天投掷一次骰子。正如你想的那样,不会出现数字6主要出现在夏季或者数字5出现在1月份这样的情景。因此,该时间序列不具有季节性趋势。

时间序列的平稳性

一个时间序列是平稳序列还是非平稳序列,有三个基本的判断标准。

时间序列的统计特征比如均值、方差应随时间保持恒定,那么我们说这个时间序列是平稳的。

常数平均值(constant mean)

常数方差(constant variance)

不依赖于时间的自协方差。自协方差是指时间序列与滞后时间序列之间的协方差。

# Mean temperature of Bindikuri area

plt.figure(figsize=(22,10))

plt.plot(weather_bin.Date,weather_bin.MeanTemp)

plt.title("Mean Temperature of Bindukuri Area")

plt.xlabel("Date")

plt.ylabel("Mean Temperature")

plt.show()

# lets create time series from weather

timeSeries = weather_bin.loc[:, ["Date","MeanTemp"]]

timeSeries.index = timeSeries.Date

ts = timeSeries.drop("Date",axis=1)

从上面的图中可以看出,我们的时间序列具有季节性变化。每年夏季平均气温较高,冬季平均气温较低。

现在我们来检验一下时间序列的平稳性。我们可以用以下方法检验平稳性:

绘制滚动数据:我们有一个窗口假设窗口大小为6然后通过滚动均值和方差来检验是否平稳。

迪基-福勒检验(Dickey-Fuller Test):测试结果包括一个测试统计量和一些差异置信水平的临界值。如果检验统计量小于临界值,我们可以说时间序列是平稳的。

# adfuller library

from statsmodels.tsa.stattools import adfuller

# check_adfuller

def check_adfuller(ts):

# Dickey-Fuller test

result = adfuller(ts, autolag&#

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值