遇见数学
首发于遇见数学
[时间序列分析][3]--自相关系数和偏自相关系数

[时间序列分析][3]--自相关系数和偏自相关系数

文章首发自csdn博客 , 欢迎大家提出宝贵的意见。

之前在回归分析里面曾经讲过协方差和相关系数协方差与相关系数
这里再多讲一句,协方差是会受到单位的影响的,而相关系数就是消除了量纲的影响,来看两者的相关性。


这里讲的自相关系数可以说是根据最原始的定义引伸出来的。
下面分别讲一下我对自相关系数和偏自相关系数的理解:
自相关系数
其实自相关系数可以这么理解:把一列数据按照滞后数拆成两列数据,在对这两列数据做类似相关系数的操作。
看一个例子:

这组数据是求滞后数为2的自相关系数,则变成求{x1,x2,...,x8}和{x3,x4,...,x10}两者的“相关系数”,相关系数打引号是因为这个相关系数的公式和以往的有点不一样。下面看一下公式的对比:

要注意的是在计算自相关系数的时候 u 是使用的总体的均值, 可以看到他们除了 u 取得不一样, 几乎就是一样的。

u代表下面图片所示符号(不知道在知乎怎么打出这个符号来)



所以,我们可以这么理解自相关系数, 她就是用来表达一组数据前后数据 (自己和自己) 的相关性的

在mathematica中,求自相关系数的函数为 CorrelationFunction[]


偏自相关系数

偏自相关系数在网上能查到的很少,我就详细的讲一下。

首先是定义:

可以看到偏自相关系数就是去掉一些变量的影响后再来考察自相关系数。


但是上面这个式子不能进行计算,我们经过化简,可以得到下面的等价的式子:下面矩阵中的pi就是滞后为i的自相关系数


至于化简的过程,可以查阅一下相关的资料,用到了k阶自回归拟合,还是有点复杂的。

我们可以将上面的过程用mma实现,当然mma中是有现成的函数的,我们就全当验证一下公式是否正确。

我们来计算一下{2,3,4,3,7}的滞后系数为3的偏自相关系数


1.首先计算他的1,2,3阶滞后的自相关系数



  1. xs = CorrelationFunction[{2, 3, 4, 3, 7}, #] & /@ {1, 2, 3} 



2.接着生成如上的k*k的矩阵D和对于的Dk


    x = Array[  
       CorrelationFunction[{2, 3, 4, 3, 7}, Abs[#1 - #2]] &, {3, 3}];  
    x // MatrixForm 


    xk = x;  
    xk[[All, 3]] = xs;  
    xk // MatrixForm

3.计算Dk/D

    PartialCorrelationFunction[{2, 3, 4, 3, 7}, 3]  
    Det[xk]/Det[x]



上面的过程其实可以帮助我们更好的理解偏自相关系数的计算,我们把上面的过程总结成一个函数



    pcorr[h_, list_] := Block[{xs, x, xk, lh},  
      lh = Length[list];  
      xs = CorrelationFunction[list, #] & /@ Range[lh - 1];  
      x = Array[CorrelationFunction[list, Abs[#1 - #2]] &, {h, h}];  
      xk = x;  
      xk[[All, h]] = xs[[;; h]];  
      Print["D矩阵: ", MatrixForm[x]];  
      Print["Dk矩阵: ", MatrixForm[xk]];  
      Print["使用自编函数: " <> ToString[N@Det[xk]/Det[x]]];  
      Print["使用系统函数: " <> ToString[N@PartialCorrelationFunction[list, h]]];  
      ]  

这样在计算偏自相关系数的时候可以返回两个矩阵D和Dk,我们看一下效果
可以看到两者计算的结果是一样的,并且输出了两个矩阵。

最后欢迎关注我的微信公众号:prettymath

公众号里除了会更新与博客上一样的文章外,还会增加一些我自己喜欢的电影分享之类的,欢迎大家关注。

以上,所有。


问个问题:知乎专栏里的图片能复制进来吗,或者能用外链吗,不然感觉好麻烦。

有人知道的话私信我一下。

谢谢!



2017/4/23

编辑于 2017-04-23

文章被以下专栏收录