当前位置:   article > 正文

时间序列分析【滞后|差分|滚动窗口|单变量&多变量分析】(python)_时间序列分析:滑动窗口

时间序列分析:滑动窗口

整理了一下时间序列不同于别的数据的比较典型的几个处理方法,欢迎讨论~

 

差分

金融数据往往有很大的波动率,为了在一定程度上平滑这些数据,采用差分处理:两个相邻数据做差,这样可以为模型减少一些噪声便于学习,但每次做差都会损失一些信息,所以差分不宜超过两次,对高频数据,可考虑采用分数阶差分。

以close为目标变量,open为自变量为例:

freq['open_diff'] = freq['open'].diff()

滞后

对于一个数据集,我们要用特征x们去预测目标列y,换句话说,要用今天的数据去预测明天的y,所以我们需要让x下移一位把它们对齐,这时候索引 2015-3-20 11:15 对应的就是 上一时刻(10:45) 的open,high,low 和 当前(11:15)的close。

freq['open_lag'] = freq['open'].shift(1)

或者把y给领先一下也可以,只不过这个时候2015-3-20 11:15对应的是下一时刻(13:15)的close和当前时刻(11:15)的x。

这两个方法没什么差别,只要清楚当前索引时间对应的是哪天的y就好了。

滑动

由于时间序列的特殊性,它近期的数据往往比久远的历史数据更重要的一些

为了摒弃对当前而言过于久远的数据,我们固定一个窗口,当加入新数据时,就同时移动窗口的左右边界,随着一条新数据被纳入,最早的一条数据就会被扔掉。像指数平滑也是加重了近期数据的比重来削弱早期数据的影响。

  1. def rolling(window,step,dataset)
  2. Date = []
  3. hurst = []
  4. for i in range(window,len(dataset),step): #[左闭右开)
  5. #[0,100),[3,103)...[9,109)
  6. df = dataset.iloc[i-window:i].values.reshape(-1,1)
  7. #date[0]...date[9]
  8. date = dataset.index[i-window]
  9. hurst_exponent, c, data = compute_hc(df)#对当前窗口的数据进行计算(hurst指数)
  10. hurst.append(hurst_exponent)
  11. Date.append(date)
  12. plt.plot(Date, hurst)
  13. plt.xlabel('Date')
  14. plt.ylabel('hurst')
  15. plt.title(f'rolling window {window}')
  16. plt.show
  17. return Date,hurst
  18. rolling(100,3,freq_train)

时间序列的单变量分析方法

  • 自相关性Auto-correlation:当前时刻数据与历史时刻的相关性
  1. from statsmodels.tsa.stattools import acf
  2. from statsmodels.graphics.tsaplots import plot_acf
  • 偏自相关性Partial Auto-Correlation
  1. from statsmodels.tsa.stattools import pacf
  2. from statsmodels.graphics.tsaplots import plot_pacf
  • 平稳性检验Stationary:adf&kpss, 这俩H0和H1正好相反
from statsmodels.tsa.stattools import adfuller,kpss
  • hurst:序列是否随机游走(白噪声之和)
from hurst import compute_Hc
  • variance ratio test 方差比率: 关于市场有效说的随机游走检测
  • anova方差分析
from scipy.stats import kstest, f_oneway
  • 统计模型

线性回归,逻辑回归:统计中的拟合结果会显示系数、t统计量、f统计量这些

  1. import statsmodels.api as sm
  2. sm.OLS(y,x).fit()
  3. sm.Logit(y,x).fit()

模型的残差白噪声检验: 残差为白噪声则序列拟合的好(反之说明还有信息没有被拟合)

from statsmodels.stats.diagnostic import acorr_ljungbox

  • 因果分析(格兰杰因果,转移熵)

时间序列的多变量分析方法

  • 协整:多序列间存在组合平稳的现象

1. cadf

2. johansen

from statsmodels.tsa.vector_ar import vecm

有别的再加吧

 

 

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号