时间序列分析:探索平稳性和自相关性

目录

数据集简介

ADF检验

原假设

一般方法

实验与结果分析

KPSS检验

原假设

一般方法

实验与结果分析

ACF(自相关函数)

原理

实验与结果分析

PACF(部分自相关函数)

原理

实验与结果分析

总结

数据集简介

        本文使用的AirPassengers数据集记录了1949年1月至1960年12月期间国际航空公司的月度乘客人数。这是一个经典的时间序列数据集,经常用于时间序列分析和建模的示例。数据集展示了明显的趋势和季节性模式,是研究非平稳时间序列的理想案例。

import pandas as pd
import matplotlib.pyplot as plt

# 下载AirPassengers数据集
url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/airline-passengers.csv'
data = pd.read_csv(url, index_col='Month', parse_dates=True)

# 可视化时间序列
plt.figure(figsize=(12, 6))
plt.plot(data, label='Air Passengers')
plt.title('Monthly Number of Air Passengers')
plt.xlabel('Date')
plt.ylabel('Number of Passengers')
plt.legend()
plt.show()

        可视化时间序列如下图:

ADF检验

原假设

        ADF(Augmented Dickey-Fuller)检验的原假设是时间序列存在单位根,序列是非平稳的。

一般方法

        通过计算ADF统计量并与临界值进行比较,如果ADF统计量小于临界值,且p值小于显著性水平(例如0.05),则拒绝原假设,认为时间序列是平稳的。

实验与结果分析

from statsmodels.tsa.stattools import adfuller

# ADF检验
result_adf = adfuller(data['Passengers'])
print('ADF Statistic:', result_adf[0])
print('p-value:', result_adf[1])
print('Critical Values:')
for key, value in result_adf[4].items():
    print(f'\t{key}: {value}')

ADF Statistic: 0.8153688792060482
p-value: 0.991880243437641
Critical Values:
    1%: -3.4816817173418295
    5%: -2.8840418343195267
    10%: -2.578770059171598

        实验结果显示,ADF统计量为0.8154,p值为0.9919,远大于0.05的显著性水平,因此我们无法拒绝原假设,表明时间序列不是平稳的。进一步观察,ADF统计量大于1%、5%和10%的临界值,进一步支持了这一结论。

KPSS检验

原假设

        KPSS(Kwiatkowski-Phillips-Schmidt-Shin)检验的原假设是时间序列是平稳的。

一般方法

        通过计算KPSS统计量并与临界值进行比较,如果KPSS统计量大于临界值,且p值小于显著性水平(例如0.05),则拒绝原假设,认为时间序列是非平稳的。

实验与结果分析

from statsmodels.tsa.stattools import kpss

# KPSS检验
result_kpss = kpss(data['Passengers'], regression='c')
print('KPSS Statistic:', result_kpss[0])
print('p-value:', result_kpss[1])
print('Critical Values:')
for key, value in result_kpss[3].items():
    print(f'\t{key}: {value}')

KPSS Statistic: 1.6513122354165206
p-value: 0.01
Critical Values:
    10%: 0.347
    5%: 0.463
    2.5%: 0.574
    1%: 0.739

        实验结果显示KPSS统计量为1.6513,p值为0.01,远小于0.05的显著性水平,因此我们拒绝原假设,表明时间序列不是平稳的。KPSS统计量远高于1%、2.5%、5%和10%的临界值,进一步支持了这一结论。

ACF(自相关函数)

原理

         ACF用于显示时间序列在不同滞后(lag)下的自相关系数。它帮助识别序列中的季节性模式和周期性。如果多个滞后显著,则表明存在周期性或季节性。

实验与结果分析

from statsmodels.graphics.tsaplots import plot_acf

# 绘制ACF图
plt.figure(figsize=(12, 6))
plot_acf(data, lags=40)
plt.title('ACF of Air Passengers')
plt.show()

         ACF图显示多个滞后(特别是滞后1到滞后12)的自相关系数显著,超过了95%的置信区间。这表明时间序列存在明显的季节性和周期性特征,特别是年周期性(每12个月一个周期)。

PACF(部分自相关函数)

原理

        PACF用于显示在控制所有中间滞后的影响后,每个滞后与当前值之间的部分自相关系数。它帮助识别自回归模型的适当阶数。

实验与结果分析

from statsmodels.graphics.tsaplots import plot_pacf

# 绘制PACF图
plt.figure(figsize=(12, 6))
plot_pacf(data, lags=40, method='ywm')
plt.title('PACF of Air Passengers')
plt.show()

 

        PACF图显示,在滞后1处部分自相关系数显著高于零,表明最近一个月的乘客数量对当前月的乘客数量有很强的预测能力。此外,在滞后12处也有一个显著的负相关,进一步证实了年度季节性。滞后1之后,部分自相关系数迅速减小并波动在零附近,表明时间序列数据可以用较低阶的自回归模型(如AR(1))来解释,同时需要考虑季节性自回归成分。 

总结 

        通过对AirPassengers数据集的ADF和KPSS检验,我们得出了明确的结论,即该时间序列具有显著的非平稳性。具体而言,ADF检验结果显示p值远高于0.05的显著性水平,不能拒绝原假设,表明序列存在单位根且非平稳。与此同时,KPSS检验结果进一步确认了这一结论,显著的KPSS统计量和极低的p值指向拒绝平稳性的原假设。综合这两项检验结果,我们可以确信该时间序列具有显著的趋势和季节性成分,需要进行平稳化处理以适应时间序列模型的要求。

        此外,ACF和PACF图提供了更详细的时间序列特征分析。ACF图显示出在多个滞后期内的显著自相关性,特别是在每12个月的滞后期上,表明存在强烈的年度季节性模式。PACF图则揭示了滞后1期和滞后12期的显著部分自相关性,支持低阶自回归模型(如AR(1))和季节性自回归成分的适用性。通过这些图表的观察,我们进一步确认了数据的非平稳性和周期性特征,这对于后续建模具有重要指导意义。在构建预测模型时,考虑差分处理和季节性ARIMA模型等方法,将有助于捕捉数据的内在结构,提高预测的准确性和可靠性。

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值