Commit 57b7c0e9 authored by Sébastien Villemot's avatar Sébastien Villemot
Browse files

Add unit test for kalman filter with missing observations

Contributed by Johannes Pfeifer
parent 3414d4d4
......@@ -39,6 +39,7 @@ wsOct
!/external_function/extFunWithFirstAndSecondDerivs.m
!/fs2000/fs2000a_steadystate.m
!/fs2000/fsdat_simul.m
!/fs2000/fsdat_simul_missing_obs.m
!/gsa/data_ca1.m
!/gsa/data_ca1.mat
!/gsa/ls2003_mean.mat
......
......@@ -67,6 +67,7 @@ MODFILES = \
fs2000/fs2000_calib.mod \
fs2000/fs2000_analytic_derivation.mod \
fs2000/fs2000_particle.mod \
fs2000/fs2000_missing_data.mod \
homotopy/homotopy1_test.mod \
homotopy/homotopy2_test.mod \
homotopy/homotopy3_test.mod \
......
// Tests kalman filter with missing observations
var m P c e W R k d n l gy_obs gp_obs y dA;
varexo e_a e_m;
parameters alp bet gam mst rho psi del;
alp = 0.33;
bet = 0.99;
gam = 0.003;
mst = 1.011;
rho = 0.7;
psi = 0.787;
del = 0.02;
model;
dA = exp(gam+e_a);
log(m) = (1-rho)*log(mst) + rho*log(m(-1))+e_m;
-P/(c(+1)*P(+1)*m)+bet*P(+1)*(alp*exp(-alp*(gam+log(e(+1))))*k^(alp-1)*n(+1)^(1-alp)+(1-del)*exp(-(gam+log(e(+1)))))/(c(+2)*P(+2)*m(+1))=0;
W = l/n;
-(psi/(1-psi))*(c*P/(1-n))+l/n = 0;
R = P*(1-alp)*exp(-alp*(gam+e_a))*k(-1)^alp*n^(-alp)/W;
1/(c*P)-bet*P*(1-alp)*exp(-alp*(gam+e_a))*k(-1)^alp*n^(1-alp)/(m*l*c(+1)*P(+1)) = 0;
c+k = exp(-alp*(gam+e_a))*k(-1)^alp*n^(1-alp)+(1-del)*exp(-(gam+e_a))*k(-1);
P*c = m;
m-1+d = l;
e = exp(e_a);
y = k(-1)^alp*n^(1-alp)*exp(-alp*(gam+e_a));
gy_obs = dA*y/y(-1);
gp_obs = (P/P(-1))*m(-1)/dA;
end;
initval;
k = 6;
m = mst;
P = 2.25;
c = 0.45;
e = 1;
W = 4;
R = 1.02;
d = 0.85;
n = 0.19;
l = 0.86;
y = 0.6;
gy_obs = exp(gam);
gp_obs = exp(-gam);
dA = exp(gam);
end;
shocks;
var e_a; stderr 0.014;
var e_m; stderr 0.005;
end;
steady;
check;
estimated_params;
alp, beta_pdf, 0.356, 0.02;
bet, beta_pdf, 0.993, 0.002;
gam, normal_pdf, 0.0085, 0.003;
mst, normal_pdf, 1.0002, 0.007;
rho, beta_pdf, 0.129, 0.223;
psi, beta_pdf, 0.65, 0.05;
del, beta_pdf, 0.01, 0.005;
stderr e_a, inv_gamma_pdf, 0.035449, inf;
stderr e_m, inv_gamma_pdf, 0.008862, inf;
end;
varobs gp_obs gy_obs;
estimation(order=1, datafile=fsdat_simul_missing_obs, nobs=192, loglinear, mh_replic=2000, mh_nblocks=2, mh_jscale=0.8);
/*
* The following lines were used to generate the data file. If you want to
* generate another random data file, comment the "estimation" line and uncomment
* the following lines.
*/
//stoch_simul(periods=200, order=1);
//datatomfile('fsdat_simul', char('gy_obs', 'gp_obs'));
% Generated data, used by fs2000.mod
gy_obs =[
NaN
1.0002599
0.99104664
1.0321162
1.0223545
1.0043614
0.98626929
1.0092127
1.0357197
1.0150827
1.0051548
0.98465775
0.99132132
0.99904153
1.0044641
1.0179198
1.0113462
0.99409421
0.99904293
1.0448336
0.99932433
1.0057004
0.99619787
1.0267504
1.0077645
1.0058026
1.0025891
0.9939097
0.99604693
0.99908569
1.0151094
0.99348134
1.0039124
1.0145805
0.99800868
0.98578138
1.0065771
0.99843919
0.97979062
0.98413351
0.96468174
1.0273857
1.0225211
0.99958667
1.0111157
1.0099585
0.99480311
1.0079265
0.98924573
1.0070613
1.0075706
0.9937151
1.0224711
1.0018891
0.99051863
1.0042944
1.0184055
0.99419508
0.99756624
1.0015983
0.9845772
1.0004407
1.0116237
0.9861885
1.0073094
0.99273355
1.0013224
0.99777979
1.0301686
0.96809556
0.99917088
0.99949253
0.96590004
1.0083938
0.96662298
1.0221454
1.0069792
1.0343996
1.0066531
1.0072525
0.99743563
0.99723703
1.000372
0.99013917
1.0095223
0.98864268
0.98092242
0.98886488
1.0030341
1.01894
0.99155059
0.99533235
0.99734316
1.0047356
1.0082737
0.98425116
0.99949212
1.0055899
1.0065075
0.99385069
0.98867975
0.99804843
1.0184038
0.99301902
1.0177222
1.0051924
1.0187852
1.0098985
1.0097172
1.0145811
0.98721038
1.0361722
1.0105821
0.99469309
0.98626785
1.013871
0.99858924
0.99302637
1.0042186
0.99623745
0.98545708
1.0225435
1.0011861
1.0130321
0.97861347
1.0228193
0.99627435
1.0272779
1.0075172
1.0096762
1.0129306
0.99966549
1.0262882
1.0026914
1.0061475
1.009523
1.0036127
0.99762992
0.99092634
1.0058469
0.99887292
1.0060653
0.98673557
0.98895709
0.99111967
0.990118
0.99788054
0.97054709
1.0099157
1.0107431
0.99518695
1.0114048
0.99376019
1.0023369
0.98783327
1.0051727
1.0100462
0.98607387
1.0000064
0.99692442
1.012225
0.99574078
0.98642833
0.99008207
1.0197359
1.0112849
0.98711069
0.99402748
1.0242141
1.0135349
0.99842505
1.0130714
0.99887044
1.0059058
1.0185998
1.0073314
0.98687706
1.0084551
0.97698964
0.99482714
1.0015302
1.0105331
1.0261767
1.0232822
1.0084176
0.99785167
0.99619733
1.0055223
1.0076326
0.99205461
1.0030587
1.0137012
1.0145878
1.0190297
1.0000681
1.0153894
1.0140649
1.0007236
0.97961463
1.0125257
1.0169503
NaN
1.0221185
];
gp_obs =[
1.0079715
1.0115853
1.0167502
1.0068957
1.0138189
1.0258364
1.0243817
1.017373
1.0020171
1.0003742
1.0008974
1.0104804
1.0116393
1.0114294
0.99932124
0.99461459
1.0170349
1.0051446
1.020639
1.0051964
1.0093042
1.007068
1.01086
NaN
1.0014883
1.0117332
0.9990095
1.0108284
1.0103672
1.0036722
1.0005124
1.0190331
1.0130978
1.007842
1.0285436
1.0322054
1.0213403
1.0246486
1.0419306
1.0258867
1.0156316
0.99818589
0.9894107
1.0127584
1.0146882
1.0136529
1.0340107
1.0343652
1.02971
1.0077932
1.0198114
1.013971
1.0061083
1.0089573
1.0037926
1.0082071
0.99498155
0.99735772
0.98765026
1.006465
1.0196088
1.0053233
1.0119974
1.0188066
1.0029302
1.0183459
1.0034218
1.0158799
0.98824798
1.0274357
1.0168832
1.0180641
1.0294657
0.98864091
1.0358326
0.99889969
1.0178322
0.99813566
1.0073549
1.0215985
1.0084245
1.0080939
1.0157021
1.0075815
1.0032633
1.0117871
1.0209276
1.0077569
0.99680958
1.0120266
1.0017625
1.0138811
1.0198358
1.0059629
1.0115416
1.0319473
1.0167074
1.0116111
1.0048627
1.0217622
1.0125221
1.0142045
0.99792469
0.99823971
0.99561547
0.99850373
0.9898464
1.0030963
1.0051373
1.0004213
1.0144117
0.97185592
0.9959518
1.0073529
1.0051603
0.98642572
0.99433423
1.0112131
1.0007695
1.0176867
1.0134363
0.99926191
0.99879835
0.99878754
1.0331374
1.0077797
1.0127221
1.0047393
1.0074106
0.99784213
1.0056495
1.0057708
0.98817494
0.98742176
0.99930555
1.0000687
1.0129754
1.009529
1.0226731
1.0149534
1.0164295
1.0239469
1.0293458
1.026199
1.0197525
1.0126818
1.0054473
1.0254423
1.0069461
1.0153135
1.0337515
1.0178187
1.0240469
1.0079489
1.0186953
1.0008628
1.0113799
1.0140118
1.0168007
1.011441
0.98422774
0.98909729
1.0157859
1.0151586
0.99756232
0.99497777
1.0102841
1.0221659
0.9937759
0.99877193
1.0079433
0.99667692
1.0095959
1.0128804
1.0156949
1.0111951
1.0228887
1.0122083
1.0190197
1.0074927
1.0268096
0.99689352
0.98948474
1.0024938
1.0105543
1.014116
1.0141217
1.0056504
1.0101026
1.0105069
0.99619053
1.0059439
0.99449473
0.99482458
1.0037702
1.0068087
0.99575975
1.0030815
1.0334014
0.99879386
0.99625634
NaN
0.99233844
];
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment