From 4ac5ebbefccb217017f910243e06677e78ba0b0c Mon Sep 17 00:00:00 2001 From: Houtan Bastani Date: Fri, 15 Mar 2019 14:22:50 +0100 Subject: [PATCH] add var AR test --- tests/Makefile.am | 1 + tests/trend-component-and-var-models/vm5.mod | 121 +++++++++++++++++++ 2 files changed, 122 insertions(+) create mode 100644 tests/trend-component-and-var-models/vm5.mod diff --git a/tests/Makefile.am b/tests/Makefile.am index 10d941ba9..ab5a89346 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -374,6 +374,7 @@ MODFILES = \ trend-component-and-var-models/vm2.mod \ trend-component-and-var-models/vm3.mod \ trend-component-and-var-models/vm4.mod \ + trend-component-and-var-models/vm5.mod \ trend-component-and-var-models/tcm1.mod \ trend-component-and-var-models/tcm2.mod \ trend-component-and-var-models/tcm3.mod \ diff --git a/tests/trend-component-and-var-models/vm5.mod b/tests/trend-component-and-var-models/vm5.mod new file mode 100644 index 000000000..db4b86058 --- /dev/null +++ b/tests/trend-component-and-var-models/vm5.mod @@ -0,0 +1,121 @@ +// --+ options: transform_unary_ops +-- + +var y1 y2 y3 y4; + +varexo e1 e2 e3 e4; + +parameters A111 A112 A113 A114 + A121 A122 A123 A124 + A131 A132 A133 A134 + A141 A142 A143 A144 + A211 A212 A213 A214 + A221 A222 A223 A224 + A231 A232 A233 A234 + A241 A242 A243 A244 + A311 A312 A313 A314 + A321 A322 A323 A324 + A331 A332 A333 A334 + A341 A342 A343 A344 ; + +A1 = randn(4); +A2 = randn(4); +A3 = randn(4); + +A111 = A1(1,1); +A112 = A1(1,2); +A113 = A1(1,3); +A114 = A1(1,4); +A121 = A1(2,1); +A122 = A1(2,2); +A123 = A1(2,3); +A124 = A1(2,4); +A131 = A1(3,1); +A132 = A1(3,2); +A133 = A1(3,3); +A134 = A1(3,4); +A141 = A1(4,1); +A142 = A1(4,2); +A143 = A1(4,3); +A144 = A1(4,4); + +A211 = A2(1,1); +A212 = A2(1,2); +A213 = A2(1,3); +A214 = A2(1,4); +A221 = A2(2,1); +A222 = A2(2,2); +A223 = A2(2,3); +A224 = A2(2,4); +A231 = A2(3,1); +A232 = A2(3,2); +A233 = A2(3,3); +A234 = A2(3,4); +A241 = A2(4,1); +A242 = A2(4,2); +A243 = A2(4,3); +A244 = A2(4,4); + +A311 = A3(1,1); +A312 = A3(1,2); +A313 = A3(1,3); +A314 = A3(1,4); +A321 = A3(2,1); +A322 = A3(2,2); +A323 = A3(2,3); +A324 = A3(2,4); +A331 = A3(3,1); +A332 = A3(3,2); +A333 = A3(3,3); +A334 = A3(3,4); +A341 = A3(4,1); +A342 = A3(4,2); +A343 = A3(4,3); +A344 = A3(4,4); + +var_model(model_name=toto, eqtags=['eq:y1', 'eq:y2', 'eq:y3', 'eq:y4']); + +model; + +[name='eq:y1'] +log(y1) = A111*log(y1(-1)) + A112*y2(-1) + A113*y3(-1) + A114*y4(-1) + + A211*log(y1(-2)) + A212*y2(-2) + A213*y3(-2) + A214*y4(-2) + + A311*log(y1(-3)) + A312*y2(-3) + A313*y3(-3) + A314*y4(-3) + e1; + +[name='eq:y2'] +y2 = A121*log(y1(-1)) + A122*y2(-1) + A123*y3(-1) + A124*y4(-1) + + A221*log(y1(-2)) + A222*y2(-2) + A223*y3(-2) + A224*y4(-2) + + A321*log(y1(-3)) + A322*y2(-3) + A323*y3(-3) + A324*y4(-3) + e2; + +[name='eq:y3'] +y3 = A131*log(y1(-1)) + A132*y2(-1) + A133*y3(-1) + A134*y4(-1) + + A231*log(y1(-2)) + A232*y2(-2) + A233*y3(-2) + A234*y4(-2) + + A331*log(y1(-3)) + A332*y2(-3) + A333*y3(-3) + A334*y4(-3) + e3; + +[name='eq:y4'] +y4 = A141*log(y1(-1)) + A142*y2(-1) + A143*y3(-1) + A144*y4(-1) + + A241*log(y1(-2)) + A242*y2(-2) + A243*y3(-2) + A244*y4(-2) + + A341*log(y1(-3)) + A342*y2(-3) + A343*y3(-3) + A344*y4(-3) + e4; + +end; + +[A0, AR, B] = get_companion_matrix('toto'); + +if max(max(abs(AR(:,:,1)-A1)))>1e-12 + error('First order autoregressive matrix is wrong.') +end + +if max(max(abs(AR(:,:,2)-A2)))>1e-12 + error('Second order autoregressive matrix is wrong.') +end + +if max(max(abs(AR(:,:,3)-A3)))>1e-12 + error('Third order autoregressive matrix is wrong.') +end + +CompanionMatrix = [A1, A2, A3; + eye(4), zeros(4, 8); + zeros(4), eye(4), zeros(4)]; + +if max(max(abs(CompanionMatrix-oo_.var.toto.CompanionMatrix)))>1e-12 + error('Companion matrix is wrong.') +end