pandas时间序列与自回归ARIMA模型

知识点梳理

AR:
在这里插入图片描述
MA:
在这里插入图片描述
ARIMA:
在这里插入图片描述
因此需要指定 p , q , i 的 值:

i的值由图像确定,而使用ACF与PACF确定p与q的值:
在这里插入图片描述
在这里插入图片描述

1 时间预处理

1.1 创造时间序列

  1. 从指定日期开始
time_df = pd.date_range('2020-01-01', periods = 10, freq = 'D')
# periods:周期,即生成的时间序列个数
# freq:步长,可指定2D:两天;H:小时;M:月
  1. 获得起始与终止时间之间
time_df = pd.date_range('2020-01-01','2021-01-01',freq='M')
# 得到起始日期至终止日期之间的所有时间

1.2 选择时间序列

# 选择 2020-01-01 之后的日期
time_df.truncate(before='2020-01-01')

# 选择 2021-01-01 之后的日期
time_df.truncate(after='2021-01-01')

# 选择从 2020-01-01 到 2021-01-01 的日期
time_df['2020-01-01':'2021-01-01']

1.3 重采样

resample(‘计算时间频率’).观察指标()

升采样:

# 重采样为按月计数,观察总和
time_df = time_df.resample('M').sum()

# 以三天计数,观察均值
time_df = time_df.resample('3D').mean()

降采样:

# 以小时计数,空值填充为 NaN
time_df = time_df.resample('H').asfreq()

# 填充出现空缺的num个值,参考 NaN 上面的数值填充
time_df = time_df.resample('H').ffill(num)

# 填充出现空缺的num个值,参考 NaN 下面的数值填充
time_df = time_df.resample('H').bfill(num)

# 线性填充所有缺失值
time_df = time_df.resample('H').interplate('linear')

1.4 滑动窗口

# 以 20 为单位做滑动窗口
roll_windows = time_df.rolling(window=20)
# 不能直接使用roll_windows,还需要明确观察指标
roll_windows.mean() # 均值
roll_windows.std() # 方差
roll_windows.max() # 最大
roll_windows.min() # 最小
roll_windows.median() # 中位数
roll_windows.var() # 方差
roll_windows.skew() # 偏度

1.5 差分

# 一阶差分
dataframe['列名'] = dataframe['列名'].diff(1)
# 二阶差分:在一阶差分的基础上再做差分

2.自回归ARIMA模型

1.平稳性(差分)

data = data.diff() # 一阶差分
data = data.dropna() # 去除NaN

2. ACF与PACF

import statsmodels.tsa.api as smt
import seaborn as sns

sns.set(style='ticks', context='poster')
# ACF 曲线
smt.graphics.plot_acf(train_data, lags=20)
# PACF 曲线
smt.graphics.plot_pacf(train_data, lags=20)

3. ARIMA建模

import statsmodels.api as sm

arima_model = sm.tsa.SARIMAX(train_data, order=(4, 1, 2))
arima_result = model.fit()

4. 模型预测

arima_predict = arima_result.predict('起始时间', '终止时间',dynamic=True, typ='levels')

5. 模型评估

# ARIMA各种指标
arima_result.summary()
# AIC:赤池信息准则,衡量数据与参数之间的关系,越小越好
aic = arima_result.aic
# BIC:贝叶斯信息准则,同上,都是判断模型的简易性
bic = arima_result.bic
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

呆萌的代Ma

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

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

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

打赏作者

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

抵扣说明:

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

余额充值