📗
TimeSeriesAnalysis101
  • 时间序列分析101:序言
  • 1. 概述
  • 2. 准备和处理时间序列数据
    • 2.1 准备数据集
    • 2.2 寻找时间轴
    • 2.3 时间序列可能遇到的问题
    • 2.4 清洗数据
      • 2.4.1 缺失值处理
      • 2.4.2 改变数据集时间频率
      • 2.4.3 平滑数据
  • 3. 探索式分析(EDA)
    • 3.1 针对时间序列的特殊方法
      • 3.1.1 理解平稳性
      • 3.1.2 寻找自相关
      • 3.1.3 虚假相关性
    • 3.2 常用的可视化图表
      • 3.2.1 1D可视化
      • 3.2.2 2D可视化
  • 4. 基于统计学的时间序列分析方法
    • 4.1 自回归模型(Autoregressive)
    • 4.2 移动平均模型(Moving Average)
    • 4.3 差分整合移动平均自回归模型(Autoregressive Integrated Moving Average)
    • 4.4 向量自回归模型(Vector Autoregression)
    • 4.5 基于统计学方法的优势与劣势
  • 5. 特征生成和特征选择
    • 5.1 特征工程的考虑
    • 5.2 常用的特征清单
    • 5.3 自动特征生成与选择
  • 6. 基于机器学习的时间序列分析方法
    • 6.1 时间序列分类问题
    • 6.2 时间序列聚类问题
  • 7. 基于深度学习的时间序列分析方法
    • 7.1 LSTM长短期记忆网络
      • 7.1.1 使用Pytorch搭建
      • 7.1.2 使用Darts调用
    • 7.2 CNN卷积神经网络
  • 8. 模型评估和性能考虑
    • 8.1 模型评估的考虑
    • 8.2 计算效率的考虑
Powered by GitBook
On this page

Was this helpful?

  1. 3. 探索式分析(EDA)
  2. 3.1 针对时间序列的特殊方法

3.1.2 寻找自相关

自相关是时间序列的一个重要概念,指的是时间序列中某一个时刻的值和另一个时刻的值具有一定的相关性。举例来说,有一个每天更新的气温数据,你可能会发现每年5月15号和8月15号的气温存在某种关联,当年5月15号更热,则对应的8月15号也更热。当然还有一种可能性是这种关联性趋近于0, 知道5月15号的气温并不会给你任何关于8月15号气温的信息。

为了进一步探索自相关,需要引入两个函数,自相关函数和偏自相关函数来描述这一现象。

The autocorrelation function

自相关(acf)函数描述的是一组时间序列和它前面间隔n个时刻的一组时间序列之前的相关性。

关于acf有一些重要的事实:

  • 周期性序列的acf值和原始序列具有相同的周期性

  • 对几个周期性序列的和计算acf,和分别计算每个周期性序列的acf再相加,结果是一样的

  • 所有时间序列在间隔lag=0时的acf值都为1,也就是时间序列和它本身之前具有完全的正相关性

  • 一个完全的白噪声序列,它在任何间隔处的acf都近似于0

  • 对于任何一个时间序列,它在5%的置信度下的acf值不显著为0的置信区间临界值为±1.96T−d± \frac{1.96} {\sqrt{T-d}}±T−d​1.96​,其中T为样本量,d为时间间隔,从公式中可以得出,随着时间间隔d的增大,置信区间也是在不断增大的,也就是说距离越远的相关性越不可信。

The partial autocorrelation function

偏自相关(pacf)函数描述的是一组时间序列和它前面间隔n个时刻的一组时间序列之前的偏相关性。这里的偏相关性可以从本质上理解为去除了样本之间的干涉,也就是更早时刻的相关性影响。

举例来说,计算时间间隔3的pacf是去除了时间间隔小于3的样本的影响,而只计算由于时间间隔为3时的时间序列之间的相关性,因为时间间隔为1和2的样本的影响已经在前面的pacf函数中计算过了。通过之后python实战的例子可以帮助我们理解这个概念。

关于pacf也有一些有趣的事实:

  • 对于周期性时间序列,pacf会迅速趋近于0,而不像是acf一样呈现周期性,因此pacf没有太多冗余信息存在。这对于我们判断要收集多长的时间序列才能获取足够多的信息具有很大的帮助。

  • pacf的置信区间临界值和acf相同

在下面的python实战部分,我们会看到一个平稳时间序列的例子和一个非平稳时间序列的例子。

Python代码实现

# 导入气温数据
series = pd.read_csv('data/daily-min-temperatures.csv', header=0, index_col=0,
parse_dates=True, squeeze=True)
# 画出最低气温时间序列
plt.plot(series)
# 画出acf函数
# 蓝色底色区域内画出的是95%置信区间,数据落在蓝色区域内表示在统计学意义上在x轴的时间间隔下具有自相关性
plot_acf(series)
plt.show()
# 画出pacf函数
plot_pacf(series)
plt.show()
# 构造一个非平稳线性增长时间序列
x= np.linspace(1,100,100)
plt.plot(x)
plot_acf(x)
plt.show()
plot_pacf(x)
plt.show()
# 从这个例子可以看到,从lag>=2开始,pacf值几乎都等于0,而lag=1
Previous3.1.1 理解平稳性Next3.1.3 虚假相关性

Last updated 3 years ago

Was this helpful?