1.15 python/pandas时间序列和ARIMA(1)

为了公司可能工作,把之前学的时间序列用python再整一遍。
- Python进行时间序列主要用到pandas statsmodels sklearn
- pandas-datareader很有用,可以访问到yahoo 和googe finance, 还有世界银行和纳斯达克。
- tsfresh包进行序列模型特征提取,非常方便,好建模;比如异常检测模型

ARIMA:
ACF: 相隔一段时间的前后两个序列相似程度(相关系数)
PACF:
- ACF建立的y(t)和y(t-x)之间关系不单纯, 受中间量如y(t-1)的影响, 我们对误差进行建模, 以此来消除中间(x-1)个量的影响,PACF之后是严格y(t)和y(t-x)相关关系

具体步骤:
- EDA看图
- 填补missing值
- 去除趋势,季节因素
- 平稳性检测;平稳的话看看是不是白噪声(
证明序列是否为平稳序列有两种方法,一种就是上面说的图像法,另一种是单位根检验,比如ADF test。)
- Arima:acf, pacf; 模型的拟合;
- ARIMA模型检验:
- 残差是否平均值为0并且方差为常数的正态分布(白噪声)
- Ljung-Box检测: 原假设为噪声是白噪声; P>0.5接受就好
- 与预测(可以用RMSE来看模型好坏);
- arch效应检验(有的话需要用波动率模型建模)

总的来说就是确定性因素的分解—随机因素的均值建模—波动率建模。

附录:
1. ARIMA参数选择:

这里写图片描述
2. AIC, BIC更小来尝试选择(两个都可以,)
一般而言,当模型复杂度提高(k增大)时,似然函数L也会增大,从而使AIC变小,但是k过大时,似然函数增速减缓,导致AIC增大,模型过于复杂容易造成过拟合现象。目标是选取AIC最小的模型,AIC不仅要提高模型拟合度(极大似然),而且引入了惩罚项,使模型参数尽可能少,有助于降低过拟合的可能性。

Reference:
1. https://www.zhihu.com/question/31833683 Faaany 杨鸣一 米都森
2. http://blog.csdn.net/jteng/article/details/40823675
3. http://blog.csdn.net/wmn7q/article/details/64129929

把我之前做的用Python重新写一下