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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
2013-06-26 matlab练习程序(粒子群优化PSO)
2012-06-26 代理模式(C++)
2012-06-26 外观模式(C++)
2012-06-26 装饰模式(C++)
2012-06-26 组合模式(C++)