欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python+ARIMA进行时间序列处理

程序员文章站 2022-12-01 18:42:59
1什么时候进行时间序列处理?   发现进行预测时,与属性没有多大关系,只和时间有关,这时候就不能利用机器学习模型来解决,要用时间序列处理 这里用的python语言,...

1什么时候进行时间序列处理?

 

发现进行预测时,与属性没有多大关系,只和时间有关,这时候就不能利用机器学习模型来解决,要用时间序列处理

这里用的python语言,使用一种统计模型ARIMA

2ARIMA

Auto-Regressive Integrated Moving Averages

该模型需要三个参数 p d q

d一般在1和2之间选择,不做太多讨论

p:number of AR terms. ?AR terms 是指依赖变量的延迟。

如果p=5,则x(t)的预测将变为 x(t-1),x(t-2),x(t-3),x(t-4),x(t-5)

q: number of MA terms. MA terms是指延迟误差,在预测等式的时候。

如果q=5,对于x(t)的预测将会变为e(t-1),e(t-2),e(t-3),e(t-4),e(t-5)

e(i)是指第i次,实际值与MA的差异

最主要的是如何确定p和q的值,用ACF和PACF决定这两个数字。

acf Autocorrelation Function?

用来测量ts之间的关联性(包括自身的延迟版本)

在lag=5的时候,acf会比较序列在t1和t2时刻,在t1-5 和 t2-5

pacf Partial Autocorrelation Function

也是用来测量ts之间的关联性,但是消除了那些已经被干预比较解释过的变量。比如:

在lag=5的时候,在检查关联性的时候,会去除lag1-4的影响

3检验平稳性

使用ARIMA进行预测,需要数据具有平稳性。所以需要先对数据进行平稳性检测

Dicky-Fuller Test可以实现该功能

4如何使数据平稳

让一个序列平稳几乎是不可能的,但是我们可以尽可能的接近

有两个元素导致不平稳:趋势和季节性(不一定是天气)

原则就是为这两个元素建模或者估计,然后从序列中将起剔除,就可以利用统计模型对其进行预测。最后需要将预测值转换为原始的尺寸,通过将这两个因素约束回来

如何移除以及移除趋势

一个方法是利用转换函数,这个函数对更好的数做出更多的惩罚,比如使用log函数,开平方根

如何移除趋势和季节性

有两个方法:

Differencing ?带有时间延迟的差别

Decomposition(分解) 同时为趋势和季节性建模并从模型中将他们移除