第一章 时间序列概述
1.1 时间序列简介
1.1.1 时间序列定义
在进行时间序列之前,需要学习什么是时间序列。时间序列是一组按时间排列的数据。通常,这些数据在时间上是等间距的,即数据可以每小时或每分钟记录一次,也可以按周、月或按年取平均值记录。在统计学中,一般将按时间顺序排列的一组随机变量
X
1
,
X
2
,
⋯
,
X
t
,
⋯
X_1, X_2, \cdots, X_t, \cdots
X1,X2,⋯,Xt,⋯
称为时间序列,记为
{
X
t
,
t
∈
T
}
\{X_t, t \in T\}
{Xt,t∈T}。用
x
1
,
x
2
,
⋯
,
x
t
,
⋯
x_1, x_2, \cdots, x_t, \cdots
x1,x2,⋯,xt,⋯
表示该随机序列的一组有序观察值。
1.1.2 时间序列分量
时间序列通常可以分解为三个主要成分:趋势分量、季节分量和残差分量。趋势分量反映数据的长期变化方向,表现为持续上升或下降的总体趋势;季节分量捕捉数据中周期性出现的规律性波动,这些波动以固定时间间隔重复出现;残差分量表示趋势和季节性分量无法解释的行为,通常被视为白噪声。这三个成分共同构成了时间序列的完整结构。
1.1.3 时间序列分类
时间序列可以根据观察点的变量数,划分为一元时间序列或多元时间序列;根据时间的连续性,可以分为连续时间序列和离散时间序列;根据统计性质,可以分为平稳时间序列和非平稳时间序列。
第二章 时间序列绘图
2.1 单变量时序绘制
import os
import pandas as pd
from matplotlib import pyplot as plt
# 数据路径
root = os.path.dirname(os.path.dirname(__file__))
dataset_path = os.path.join(root, 'dataset', "ETTh1.csv")
# 读取数据
data = pd.read_csv(dataset_path, parse_dates=['date'])
# 可视化
plt.figure(figsize=(12, 8))
plt.plot(data['date'], data['HUFL'])
plt.xlabel('date')
plt.ylabel('HUFL')
plt.tight_layout()
plt.show()
2.2 多变量时序绘制
import os
import pandas as pd
from matplotlib import pyplot as plt
root = os.path.dirname(os.path.dirname(__file__))
dataset_path = os.path.join(root, 'dataset', "ETTh1.csv")
# 读取数据
data = pd.read_csv(dataset_path, parse_dates=['date'])
# 可视化
plt.figure(figsize=(12, 8))
plt.plot(data['date'], data['HUFL'], color='red', linestyle="-", label='HUFL')
plt.plot(data['date'], data['HULL'], color='blue', linestyle="--", label='HULL')
plt.xlabel('date')
plt.ylabel('HUFL')
plt.legend()
plt.tight_layout()
plt.show()