时间序列数据的静止性指的是数据的均值、方差和协方差都不随时间而变化,这在时间序列分析中很重要,因为只有当时间序列是静止的时,我们才能应用一些常见的时间序列分析方法。
Python中有一些常见的方法可以检查时间序列的静止性,下面详细介绍这些方法。
- 画出时间序列的子序列和滚动统计图
一种初步检查时间序列是否静止的方法是画出时间序列的子序列和滚动统计图。可以先将时间序列分成若干个子序列,然后画出每个子序列的统计图,如果每个子序列的均值、方差和协方差差不多,则说明时间序列静止。
滚动统计图则是对整个时间序列进行统计,然后将得到的统计值滑动窗口滚动,画出一系列滚动统计图,如果统计图总体不随时间而变化,则说明时间序列静止。
- 平稳性检验
平稳性检验可以进一步检查时间序列是否静止。
(1) ADF检验
ADF检验是检验时间序列平稳性的方法之一。它的假设是时间序列具有单根,即原假设为非平稳,备择假设为平稳。可以用Python中的statsmodels库来实现ADF检验,代码如下:
from statsmodels.tsa.stattools import adfuller
result = adfuller(data)
print('ADF Statistic: %f' % result[0])
print('p-value: %f' % result[1])
print('Critical Values:')
for key, value in result[4].items():
print('\t%s: %.3f' % (key, value))
如果ADF Statistic为负数,p-value小于0.05,且Critical Values中5%的值都小于ADF Statistic,则可以拒绝原假设,认为时间序列是平稳的。
(2) KPSS检验
KPSS检验也是检验时间序列平稳性的方法之一。它的假设是时间序列具有多个根,即原假设为平稳,备择假设为非平稳。可以用Python中的statsmodels库来实现KPSS检验,代码如下:
from statsmodels.tsa.stattools import kpss
result = kpss(data)
print('KPSS Statistic: %f' % result[0])
print('p-value: %f' % result[1])
print('Critical Values:')
for key, value in result[3].items():
print('\t%s: %.3f' % (key, value))
如果KPSS Statistic小于Critical Values中5%的值,p-value小于0.05,则可以拒绝原假设,认为时间序列是非平稳的。
- 差分
差分是对时间序列进行预处理的方法之一,可以将非平稳时间序列转化为平稳时间序列。可以对时间序列进行一阶和二阶差分,然后检验差分后的序列是否平稳。如果差分后的序列平稳,则原序列也是平稳的。
diff1 = data.diff().dropna()
# diff1.plot()
diff2 = diff1.diff().dropna()
# diff2.plot()
总之,在时间序列分析中,我们可以通过一些方法检验时间序列是否是静止的,这些方法包括子序列和滚动统计图、平稳性检验和差分等,可以根据具体情况选择合适的方法进行检验。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何用Python检查时间序列数据是否是静止的 - Python技术站