matlab之 时间序列MA(q)模型

理学院真的是一个伟大的学院,什么时间序列啊,这么难的东西,那么厚的一本书,我们竟然要把它学会,还要考试(说好的人与人之间的信任呢/(ㄒoㄒ)/~~)

已知 零均值平稳时间序列MA(q)序列的自协方差函数,求模型的系数。

function [k,cur_pii,sigma2,b]=time_serise(r)
%MA(2)
q=2;    #MA(q)
guest=100; % should be changed,最小迭代次数
eps=1e-8;
%r0=12.4168;
%r=[12.4168,-4.7520,5.2];%r1是原数据r0,自协方差函数
%r=[7.4084,-2.664,3.4];
r0=r(1);
for i=4:guest*10
    r(i)=0;
end
 
pre_pii=[];cur_pii=[];omg=[];gama=[];
%自协方差阵
 
for k=1:guest
    for i=1:k
        for j=1:k
            gama(i,j)=r(abs(i-j)+1);%公式,+1是因为r(1)实际是r0
        end
    end
    for i=1:q
        for j=i:(k+i-1)
            omg(i,j-i+1)=r(j+1);
        end
    end
    if k==1
        pre_pii=omg*inv(gama)*omg';
    else
        cur_pii=omg*inv(gama)*omg';
        sum=0;
        for i=1:q
            for j=1:q
                sum=sum+(pre_pii(i,j)-cur_pii(i,j))^2;
            end
        end
        if sum < eps
            k;
            cur_pii;
            break
        end  
        pre_pii=cur_pii;
    end
end
for i=q:q
    tmp=eye(i+1);
    A=tmp(2:i+1,1:i);
    C=zeros(i,1);
    C(1)=1;
    Tmp=C'*cur_pii*C;
    sigma2=r0-C'*cur_pii*C;
    Gama=[];
    
    for j=1:i
        Gama(j)=r(1+j);
    end
    b=[];
    b=(Gama'-A*cur_pii*C)/sigma2;
end
end
r=[7.4084,-2.664,3.4];#自协方差函数
[k,cur_pii,sigma2,b]=time_serise(r)%b是系数,sigma2是sigma平方。

向量b就是模型的系数。


  • 12
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值