• matlab练习程序(ACF/PACF系数计算)


    在使用AR/MA/ARMA处理序列之前,需要确定可以使用哪种模型。

    通常通过判断ACF或PACF的数据拖尾与截尾情况即可做出判断:

    1. 自相关系数拖尾,偏相关系数截尾,选择AR模型。

    2. 自相关系数截尾,偏相关系数拖尾,选择MA模型。

    3. 两个都拖尾,选择ARMA模型。

    这里PACF用的是Yule-Walker方程来求解的,具体原理可以看最后面的链接,感觉讲的很清楚了。

    我这里只把代码列出来,并且和matlab做了个比较。

    matlab代码如下:

    clear;close all;clc;
    
    %AR模型:自相关系数拖尾,偏相关系数截尾
    %MA模型:自相关系数截尾,偏相关系数拖尾
    %ARMA模型:两个都为拖尾
    
    x = rand(100,1);
    for i=3:100
       x(i) = 0.5*x(i-1) + 0.3*x(i-2) + rand(1); 
    end
    
    subplot(4,1,1);
    plot(x);
    title('原数据');
    
    corr = calc_xcorr(x);
    subplot(4,1,2);
    plot(corr,'g-o')
    hold on;
    plot(xcorr(x),'r-*')
    title('自相关');
    
    acorr=calc_acorr(x);
    subplot(4,1,3);
    plot(acorr,'g-o');
    hold on;
    y=xcorr(x-mean(x));
    plot(y(length(x):end)/max(y),'r-*');
    plot(autocorr(x,length(x)-1),'b');
    title('归一化自相关');
    
    pcorr=aclc_pcorr(x);
    subplot(4,1,4);
    plot(pcorr,'g-o');
    hold on;
    plot(parcorr(x,'Method','yule-walker','NumLags',length(x)-1),'r-*');
    title('偏相关');
    
    %自相关
    function corr = calc_xcorr(x)
    xinv = flipud(x);
    corr = zeros(2*length(x)-1,1);
    for i=1:length(x)
        for j=1:i
            corr(i) = corr(i) + x(j)*xinv(i-j+1);
            corr(length(corr)-i+1) = corr(i);
        end
    end
    end
    
    %归一化后的自相关
    function acorr=calc_acorr(x)
    x = x - mean(x);
    xinv = flipud(x);
    acorr = zeros(2*length(x)-1,1);
    for i=1:length(x)
        for j=1:i
            acorr(i) = acorr(i) + x(j)*xinv(i-j+1);
            acorr(length(acorr)-i+1) = acorr(i);
        end
    end
    acorr =acorr(length(x):end)/max(acorr);
    end
    
    %偏相关
    function pcorr=aclc_pcorr(x)
    x = x - mean(x);
    pcorr = ones(length(x),1);
    for k=2:length(pcorr)
        
        r = zeros(k,1);
        for i=1:k
            r(i) = sum(x(1:length(x)-i+1).*x(i:length(x)))/(length(x));
        end
        R=toeplitz(r(1:end-1));
        
        theta = R\r(2:end);
        pcorr(k) = theta(end);
    end
    end

    结果如下:

    参考:

    https://www.jianshu.com/p/811f9ea0b52d

    http://www-stat.wharton.upenn.edu/~steele/Courses/956/ResourceDetails/YWSourceFiles/YW-Eshel.pdf

  • 相关阅读:
    leetcode 190 Reverse Bits
    vs2010 单文档MFC 通过加载位图文件作为客户区背景
    leetcode 198 House Robber
    记忆化搜索(DP+DFS) URAL 1183 Brackets Sequence
    逆序数2 HDOJ 1394 Minimum Inversion Number
    矩阵连乘积 ZOJ 1276 Optimal Array Multiplication Sequence
    递推DP URAL 1586 Threeprime Numbers
    递推DP URAL 1167 Bicolored Horses
    递推DP URAL 1017 Staircases
    01背包 URAL 1073 Square Country
  • 原文地址:https://www.cnblogs.com/tiandsp/p/16413405.html
Copyright © 2020-2023  润新知