首页 > 编程语言 >matlab练习程序(VAR模型)

matlab练习程序(VAR模型)

时间:2022-09-03 20:22:06浏览次数:94  
标签:par end 模型 练习 ey matlab VAR ex

VAR模型称为向量自回归模型,可以对多组变量之间的关系进行建模,是AR模型的多维扩展。

比如有两个变量X和Y,AR模型建模场景是X只和X过去的状态有关系,VAR模型建模场景则是X同时跟X和Y过去的状态都有关系。

VAR基本形式如下:

模型参数求解可以参考上一篇ARMA模型的求解方法。

matlab代码如下:

clear all;close all;clc;

n=50;
ux = 3.4;
uy = 2.9;
ex = randn(n,1);
ey = randn(n,1);
x = randn(n,1);
y = randn(n,1);

%VAR模型
for i=3:n
    x(i) = 0.2*x(i-1) + 0.1*x(i-2) - 0.4*y(i-1) - 0.3*y(i-2) + ux + ex(i);
    y(i) = -0.3*x(i-1) - 0.2*x(i-2) + 0.1*y(i-1) + 0.2*y(i-2) + uy + ey(i);
end

subplot(2,1,1);
plot(x,'r-o');
hold on;
plot(y,'g-o');
title('原始序列')

newux = mean(x);
newuy = mean(y);
options.Algorithm = 'levenberg-marquardt';
lb = [];ub = [];
par = [newux;newuy;rand(8,1);rand(2*n,1)];
f = @(par) func(par,x,y);
par= lsqnonlin(f,par,lb,ub,options);        %执行优化

%生成拟合量
for i=3:n
    x(i) =  par(3)*x(i-1) + par(4)*x(i-2) + par(5)*y(i-1) + par(6)*y(i-2) + par(1) + ex(i);
    y(i) =  par(7)*x(i-1) + par(8)*x(i-2) + par(9)*y(i-1) + par(10)*y(i-2) + par(2) + ey(i);
end

subplot(2,1,2);
plot(x,'r-o');
hold on;
plot(y,'g-o');
title('估计序列')

function re = func(par,x,y)

ex = par(11:10+length(x));
ey = par(11+length(x):end);

re = zeros(length(x)*2,1);
for i=3:length(x)
    re(i*2-1) = x(i) -( par(3)*x(i-1) + par(4)*x(i-2) + par(5)*y(i-1) + par(6)*y(i-2) + par(1) + ex(i));
    re(i*2) = y(i) -( par(7)*x(i-1) + par(8)*x(i-2) + par(9)*y(i-1) + par(10)*y(i-2) + par(2) + ey(i));
end

end

结果如下:

标签:par,end,模型,练习,ey,matlab,VAR,ex
From: https://www.cnblogs.com/tiandsp/p/16653530.html

相关文章

  • 牛客练习赛102
    A清楚姐姐的学术群intmain(){ intn=read(),m=read(),a=read(),b=read(); for(inti=1;i<=n;i++)people[i].push_back(0); for(inti=1;i<=......
  • matlab数据结构之-table2
    table是一种有行和列类似于表的数据结构,每一个都具有易于记忆的标签。表的创建需要有相同长度,且是列的存储方式。使用table()函数创建,以下假设记录病人的姓名、身高和......
  • matlab中数据结构之-structure
    数据结构是将有逻辑联系的结构中称为域的值组合成一群。结构的优势是域是被命名了的,可以使结构中存储的数据更加清晰。结构变量不是数组,他们没有索引,不能像vector那样......
  • 自连接及联表查询练习
    自连接:自己的表和自己的表连接核心:把一张表拆分成两张一样的表即可--查询父子信息SELECTcategoryNameAS'父栏目',categoryNameAS'子栏目'fromcategoryASa,c......
  • matlab练习程序(ARMA模型)
    ARMA称为自回归移动平均模型(Autoregressive moving averagemodel),由自回归模型(AR)和移动平均模型(MA)混合构成。注意这里的移动平均模型和移动平均值平滑曲线不是一......
  • Does VS code have variable explorer object like we have it in spyder?
    DoesVScodehavevariableexplorerobjectlikewehaveitinspyder?Openyour.pyscriptinvscodeRightclickanywhereonthescript>RuncurrentFilein......
  • matlab中数据结构之-cell array
    不同与matlab中的array数据结构中存储的都是一样的数据,cellarray中可以存储不同的数据类型,而且cellarray也可以是向量或矩阵,数组中不同的元素指向不同的数值。原来主......
  • for循环的练习题1-2
    练习1:计算0到100之间的奇数和偶数的和  练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个  ......
  • ES6 关键字 let 和 ES5 及以前关键字 var 的区别
    var在ES5及以前,通过var在块级作用域中声明的变量,外边也可以访问。块级作用域就是一对{}的作用域;块级作用域可以是控制语句的作用域,也就是非函数的作用域。functionf()......
  • 算法题练习,Solo和koko分糖 ,整数拆分, Cookies 分饼干
    目录1.CandySolo和koko分糖2.整数拆分3=1+1+13=1+23=33.Cookies分饼干1.CandySolo和koko分糖如果可以分给弟弟,必定满足全部异或为0,找出最小的一个给弟弟......