1、拿到数据咱们开始分析
我们拿到数据的时候,时间序列是数据主要分为四类,1.长期趋势。2.季节变动。3.循环变动 4.不规则数据。
给大家普及下(手动狗头):
1.长期趋势:
长期趋势是在很长时间实践按照某种特定趋势变化。简单来说,就是函数单调递减和函数单调递增。
2.季节变动:
由于自然条件和社会因素的影响,客观现象的统计数值在一年内出现的带有规律性的变化。
3.循环变动:
就是数据表现的是一个循环函数
4.不规则数据:
不规则变动是指由于意外的波动。而且这个意外是不经常的。
具体演示一下:
尴尬,俺看不出来。当然数据要根据具体应用场景去选择方法,当然我的方法不一定适用全部。
我这个是根据实际运用场景,直接选择了Arima算法。(终归只是算法而已,人是活的,不一定非得用某一种固定的算法)。
2、Arima
现在我们可以看到上面的数据并不平稳,当然咱们这样看只是我们直到了,计算机都不知道啊,所以必须得去测一下。
硬性基础知识
普及下时间序列平稳性:平稳性就是要求样本时间序列拟合的曲线在未来一段时间中顺着现有形态“惯性"的持续下去,平稳性要求序列的均值和方差不发生明显变化。
在Arima里有两个概念:
严平稳:分布不随时间的变化而变化,也就是说方差和期望都是不变的。
弱平稳:期望和相关系数(依赖性)是不变的,比如未来某时刻的Xt依赖于过去的数据,这就是依赖性。
ps:现实生活中严平稳太难,基本上弱平稳就好啦。
如果我们拿到数据不平稳怎么办?
我们这时候就需要差分法:时间序列在t和t-1时刻的差值。
ps:如果我们有一组数据x1,x2,x3如果x1和x2平稳,x3不平稳这个适合我们需要把x1,x2,x3全部差分。
第一幅图是没有了的,第二幅图是差分了的:
代码:
# -*- coding: utf-8 -*-
"""
Created on Sat Dec 26 18:57:06 2020
@author: 13056
"""
import pandas as pd
import matplotlib.pyplot as plt
#导入数据
data =pd.read_csv(r'C:/Users/13056/Desktop/145.csv',encoding = 'gb2312')
data = data.drop(['日期'], axis=1)
#用subplot()方法绘制多幅图形
plt.figure(figsize=(6,6),dpi=80)
#创建第一个画板
plt.figure(1)
#将第一个画板划分为2行1列组成的区块,并获取到第一块区域
ax1 = plt.subplot(211)
#在第一个子区域中绘图
plt.plot(data.ds)
data['ds'] = data['ds'].diff(1)#进行差分
#选中第二个子区域,并绘图
ax2 = plt.subplot(212)
plt.plot(data.ds)
对于差分,给大家举个例子(今天操作系统复习完了,很闲)
应该很简单明了,一次差分就是做一次加减法。(时间序列差分了不还是时间序列嘛/手动狗头),上面那个diff()函数里面的数字,如diff(1)就是时间间隔1的数据做减法,如果是diff(2),就是时间间隔2的数据做减法。
Arima模型
这就是Ar+i+ma的结合咱们现在分开讲一下。
AR
AR是一个自回归模型
p阶自回归过程的公式:yt =μ+∑pi=1riyt-1+εt(其