时间序列数据的平稳性分析

在日常生活中,会遇到许多变化不定的统计数据,比如环境因素,如温度、湿度、降雨量等。这些因素通常在一天之内会多次变化。除此之外,还会访问许多商店,它们销售各种商品,并记录它们的销售情况,可能是每日或每月的。

那么,所有这些数据类型的共同特征是什么?在应用任何合适的模型之前,这些数据应该如何预处理?本文将回答这些问题,并展示这些数据集遵循的标准以及如何在Python语言中监控这些标准。

目录

  • 目标
  • 概述
  • 数据平稳性
  • 检查数据平稳性的方法
  • 代码实现
  • 观察结果
  • 结论

目标

通过比较两个不同的数据集,使用滚动统计和增广迪基-富勒测试来检验时间序列数据的平稳性。

概述

时间序列数据是按固定时间间隔收集的一组观测值,它描述了一定时期内收集的数据量。例如,有一家手机商店的数据,描述了每天手机的总销量,或者某个地方每天降雨量的数据显示,这类数据被称为时间序列数据,其中一个变量是时间。

时间序列数据必须以相等的时间间隔收集,如一天、一个月、一周、十年等。时间序列数据的用途包括:预测未来数据值、分析过去的销售数据以预测未来的商业机会、评估当前的成就等。

时间序列的模式

时间序列数据中,通常观察到三种模式:趋势、季节性和不规则性。趋势描述了数据值在长时间内定期上升或下降的运动。季节性是一种在固定时间间隔后重复出现的连续上升和下降趋势。不规则性没有系统性模式,只在短时间内发生,不会在固定时间间隔后重复出现。

平稳性

时间序列数据模型基于平稳数据工作。数据的平稳性由以下三个标准描述:具有恒定的均值、具有恒定的方差、自协方差不依赖于时间。

检查时间序列数据平稳性的方法

Python中,有两种方法可以检查数据的平稳性:滚动统计和增广迪基-富勒测试(ADCF)。滚动统计方法通过移动方差或移动平均图来直观表示数据的平稳性。增广迪基-富勒测试则通过测试统计量和一些关键值来定义数据的平稳性。如果测试统计量小于关键值,可以拒绝原假设,认为序列是平稳的。

代码实现

以下是两个数据集的描述和代码实现。

数据集1:每月电力产量

数据集2:每月太阳黑子数量

# 导入模块 import numpy as np import pandas as pd import matplotlib.pyplot as plt # 加载数据集 data = pd.read_csv('path_to_electricity.csv') data1 = pd.read_csv('path_to_sunspots.csv') # 将数据转换为日期时间格式 data['DATE'] = pd.to_datetime(data['DATE'], infer_datetime_format=True) index = data.set_index(['DATE']) data1['Month'] = pd.to_datetime(data1['Month'], infer_datetime_format=True) index1 = data1.set_index(['Month']) # 绘制图表 plt.plot(index) plt.show()
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485