欢迎光临
我们一直在努力

平稳时间序列的自协方差函数和自相关系数,平稳时间序列的自协方差函数

这篇博客主要记录人大出版《应用时间序列分析》第一章的笔记。

时间序列数据 数据类型

数据分析中的数据大致分为三类:时间序列数据、横截面数据、面板数据。下面分别介绍这三类数据。

时间序列数据:在不同时间点搜集到的数据,这些数据通常会随时间的变化而变化。比如股票价格、每日温度等

横截面数据:在相同或近似相同时间点搜集到的数据。比如绝大多数通过问卷调查搜集到的数据、人口普查数据

面板数据:针对不同对象在一段时间中搜集到的数据,可以理解为横截面随时间变化的数据,综合了时序数据与横截面数据的特点。比如所有股票在2018年的收盘价,数据结构如下表所示:

日期贵州茅台上海汽车中国软件…通达信2018-01-01?????2018-01-02?????…?????2018-12-31?????

上表中每一行都是横截面数据,每一列都是是时序数据,是最简单的面板数据示例。上表仅展示了收盘价一个变量,多个变量的面板数据无法在一个二维表中展示,可以将这些二维表堆叠成为三维表。

时间序列数据与横截面数据的不同

为什么要区分数据类型呢?为什么要专门针对时序数据开发算法呢?这是因为时间序列数据与横截面数据的性质不同。横截面数据的样本采自同一总体,用于估计同一个随机变量;而时序数据的样本点采集自不同的时间,属于不同的随机变量。横截面数据的样本之间一般没有相关性;而时序数据则存在较强的自相关性。

举个例子,用户对CSDN的满意度是一个随机变量,为了探究这一随机变量我们做一次满意度调查,这些调查的数据均是这一随机变量的样本。而北京市在夏天与冬天的温度显然是不同的随机变量。用表来表示的话如下:

随机变量X1X2X3Xt样本x1x2x3xt

X1, X2, X3, Xt是每个时间点上的随机变量,x1, x2, x3, xt是每个时间点上的观测值。我们可以得出时间序列的第一香港vps个特点:不同的时间点对应着不同的随机变量,每个时点上的随机变量仅有一个观测值。这也是时间序列数据与横截面数据最大的不同。

众所周知,统计学需要基于大样本,否则得出的结论是不靠谱的。而时间序列数据中每个随机变量仅有一个观测值,这使得无法直接使用横截面数据的算法来分析时间序列数据。

时间序列数据通常是以上一个时点为基础来变化的,比如股票的涨跌幅均是在前一日的收盘价基础上计算。即使不是以上一个时点为基础来变化,也会由于惯性或者向均值回归而与之前的数据产生这样或者那样的联系。所以时间序列数据往往具有较强的自相关性。

平稳性

之所以要提出平稳性这个概念,是由于不同的时间点对应着不同的随机变量,每个时点上的随机变量仅有一个观测值。而当样本容量为1时,所有的统计学方法全都失效。那么我们就无法分析时间序列数据了。

解决样本容量过少问题的最直观方法就是增大样本量,这在横截面数据的分析中可行,但是时间具有单向一维性,不可重来,我们无法重新观测已经发生过的事件。平稳性就是为了解决样本容量为1的问题。

平稳性分为严平稳与宽平稳,由于严平稳的时序十分罕见,下面仅仅介绍宽平稳的定义:

宽平稳时序是指一阶矩与二阶矩均平稳的时间序列。简单来说,就是任取t,有?、?是常数,当k固定时,?也是常数。即宽平稳时间序列中所有随机变量的均值、方差存在且为常数,协方差仅仅与时间间隔有关

我们把??称作自协方差函数,简记为??。

可以看出,如果时序具有宽平稳性,均值、方差与自协方差均不会随着时间的改变而改变,可以使用横截面数据的分析方法进行区间估计与假设检验。值得注意的是,宽平稳时间序列仅仅在二阶矩的范围内平稳,这意味着我们不能将宽平稳时间序列直接当作横截面数据进行处理,否则会出现一些问题。比如,如果将具有强自相关性的宽平稳时间序列进行线性回归建模依然会导致虚假回归的问题。(关于虚假回归的问题会在后续博客中介绍)

那么对于非平稳时序如何进行分析呢?我们通常会使用差分等操作将非平稳时序转化为平稳时序后再进行操作。

自协方差函数与自相关函数

由于时间序列通常具有较强的自相关性,我们通常使用自协方差函数与自相关函数(ACF)来描述时间序列。当时间序列具有宽平稳的性质时,可以使用样本数据来估计它们,下面介绍ACF(k)的计算方法。

假设时序??共有T期观测值,我们可以构建出 T – k 个数组。计算这T – k 个数组组成的dataframe的样本协方差,将协方差除以时序方差的点估计即可以得到自相关函数的点估计。

单纯计算ACF值是没有意义的,我们还需要对 ACF(k) 进行显著性检验,这通常使用ACF图来进行检验,在Python中画ACF图的代码如下:

from statsmodels.graphics.tsaplots import plot_acfimport matplotlib.pyplot as pltplot_acf([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], lags=9, alpha=0.05)plt.show()

结果如下:

纵轴是ACF(k),横轴是k,蓝色区域是95%置信区间。plot_acf模型中的lags是图中显示的最大k数,alpha是显著性水平。

当铅垂线端点在蓝色区域外时,我们认为该ACF(k)显著。如果在k之后没有ACF(k)显著,则称该时间序列ACF k 阶截尾。如果一直有ACF(k)显著,则称该时间序列ACF 拖尾。

问题1:为什么ACF(0) = 1?

问题2:? 为什么lags越大置信区间越宽?

思考一下,下面给答案:

答案1:ACF(0)即自己与自己的相关系数,恒为1

答案2:用样本估计ACF(k)时共使用了T – k 个样本。k越大则样本量越小,相同置信水平下的置信区间越大

误区 将时序数据直接当作横截面数据处理!!比如直接估计均值与方差,直接进行回归等。正确的做法是使用专门的时序模型进行分析。在检验时序的平稳性通过后就把时序数据直接引入回归方程!!ADF检验与PP检验均是检验时序的宽平稳性质,针对宽平稳时序也只能进行二阶矩以内的数据分析方法,直接引入回归方程依然有可能会导致虚假回归的问题!正确的做法是使用ARIMAX模型。在使用ACF图定阶之前不检验时序的平稳性!!只有平稳时序的ACF才是常数,才能够使用样本估计,理论上讲仅有平稳时序的ACF图才是有意义的。如果一定要针对非平稳时序画ACF图,则ACF图的显著性检验失效。

?

14447003

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。