首页 > 解决方案 > Octave中的Box Jenkins自相关

问题描述

我有以下 50 个样本向量:

a =

   0.0070398
   0.0071569
   0.0071597
   0.0071614
   0.0071254
   0.0071286
   0.0071043
   0.0071640
   0.0071707
   0.0071813
   0.0071288
   0.0070965
   0.0071268
   0.0071027
   0.0070675
   0.0070540
   0.0070033
   0.0069686
   0.0069367
   0.0069110
   0.0069406
   0.0069742
   0.0069297
   0.0069140
   0.0068838
   0.0069168
   0.0069261
   0.0069110
   0.0068610
   0.0068222
   0.0067937
   0.0067714
   0.0067458
   0.0067084
   0.0066542
   0.0066503
   0.0066675
   0.0066913
   0.0066844
   0.0066897
   0.0066587
   0.0066329
   0.0066484
   0.0066282
   0.0066080
   0.0065814
   0.0065367
   0.0065021
   0.0064948
   0.0064713

我想计算向量的自相关。我写了 Box Jenkins 公式如下:

Box Jenkins自相关

并在 Octave 中实现了该功能:

function autocorr(y, tau)

    y_bar = mean(y);
    T = length(y);

    # NUMERATOR
    numerator = 0;
    for t = (tau + 1):T
        numerator += (y(t)-y_bar)*(y(t-tau)-y_bar);
    endfor

    # DENOMINATOR
    denominator = 0;
    for t = 1:T
        denominator += (y(t)-y_bar)**2;
    endfor

    retval = numerator/denominator  # NOTE THAT 1/T IS PRESENT IN BOTH NUMERATOR AND DENOMINATOR


endfunction

现在,如果我这样做:

octave:41> autocorr(a,1)
retval =  0.94683

我得到 0.94683 而不是 1。

  1. 期望 1 是否正确?
  2. 可以做些什么来减少 Octave 中的错误?
  3. Octave 中是否有任何可用的函数/包来计算这个?

标签: octave

解决方案


推荐阅读