clear all
% load data created by the MpdfDS_example
load pdfds_results

DS.class   = 'MemDS';
DS.Data    = Data;
DS.drv     = drv;


%%%%%% ARX estimator conditioned on frg

A1.class = 'ARXpartialforg';
A1.yrv = y;
A1.rv = RV({'theta','r'},[2,1]);
A1.rgr = RVtimes([y,u],[-3,-1]) ; 
A1.log_level = 'logbounds';
A1.constant = 0;
A1.name = 'A1';

Apri =A1;
Apri.class = 'ARX';
DSpri = DS;
DSpri.Data = DS.Data(:,1:6);
% get decent prior -- estimate with data first
[Dum,post]=estimator(DSpri,{Apri});

A1.prior = post.estimators{1}.posterior;

% we have 2 parameters - i.e. 4 hypotheses

%%%%%% Random walk on frg - Dirichlet 
walk.class = 'mDirich';         % random walk on coefficient phi
walk.rv    = RV({'phi'},4);       % 2D random walk - frg is the first element
walk.k     = 0.001;              % width of the random walk
walk.betac = 0.1*ones(1,4);         % stabilizing elememnt of random walk

%%%%%% Particle
p.class = 'MarginalizedParticle';
p.parameter_pdf = walk;         % Random walk is the parameter evolution model
p.bm    = A1;

% prior on ARX
%%%%%% Combining estimators in Marginalized particle filter
E.class = 'PF';
E.particle = p;                    % ARX is the analytical part
E.res_threshold = 0.7;             % resampling parameter
E.n = 100;                           % number of particles
E.prior.class = 'eBeta';         % prior on non-linear part
E.prior.alpha = 5*ones(1,4); % 
E.prior.beta  = ones(1,4); % 
E.log_level = 'logbounds,logweights';
E.name = 'MPF';

[M,Str]=estimator(DS,{E});

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% plot results
ndat = size(M.DS_dt_u,1);

figure(1);
subplot(2,2,1);
plotestimates(true_theta, M.MPF_apost_mean_theta, M.MPF_apost_lbound_theta, M.MPF_apost_ubound_theta);
title(' Regression parameters \theta')
set(gca,'YLim',[-1.5,1]);

subplot(2,2,2);
plotestimates(true_R, M.MPF_apost_mean_r,M.MPF_apost_lbound_r,M.MPF_apost_ubound_r);
title('Variance parameters r')

subplot(2,2,3);
plotestimates(1, M.MPF_apost_mean_phi(:,1),M.MPF_apost_lbound_phi(:,1),M.MPF_apost_ubound_phi(:,1));
title('Forgetting factor')


