在日常生活中,会遇到许多变化不定的统计数据,比如环境因素,如温度、湿度、降雨量等。这些因素通常在一天之内会多次变化。除此之外,还会访问许多商店,它们销售各种商品,并记录它们的销售情况,可能是每日或每月的。
那么,所有这些数据类型的共同特征是什么?在应用任何合适的模型之前,这些数据应该如何预处理?本文将回答这些问题,并展示这些数据集遵循的标准以及如何在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()