Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Dóra Kocsis
dynare
Commits
ab2ae38e
Commit
ab2ae38e
authored
Nov 16, 2012
by
Frédéric Karamé
Browse files
computes incremental weights for gaussian-mixture filters.
parent
7dcdd20f
Changes
1
Hide whitespace changes
Inline
Side-by-side
matlab/particle/gaussian_mixture_densities.m
0 → 100644
View file @
ab2ae38e
function
IncrementalWeights
=
gaussian_mixture_densities
(
obs
,
StateMuPrior
,
StateSqrtPPrior
,
StateWeightsPrior
,
...
StateMuPost
,
StateSqrtPPost
,
StateWeightsPost
,
...
StateParticles
,
H
,
normconst
,
weigths1
,
weigths2
,
ReducedForm
,
DynareOptions
)
%
% Elements to calculate the importance sampling ratio
%
% INPUTS
% reduced_form_model [structure] Matlab's structure describing the reduced form model.
% reduced_form_model.measurement.H [double] (pp x pp) variance matrix of measurement errors.
% reduced_form_model.state.Q [double] (qq x qq) variance matrix of state errors.
% reduced_form_model.state.dr [structure] output of resol.m.
% Y [double] pp*smpl matrix of (detrended) data, where pp is the maximum number of observed variables.
% start [integer] scalar, likelihood evaluation starts at 'start'.
% smolyak_accuracy [integer] scalar.
%
% OUTPUTS
% LIK [double] scalar, likelihood
% lik [double] vector, density of observations in each period.
%
% REFERENCES
%
% NOTES
% The vector "lik" is used to evaluate the jacobian of the likelihood.
% Copyright (C) 2009-2012 Dynare Team
%
% This file is part of Dynare.
%
% Dynare is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% Dynare is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
% Compute the density of particles under the prior distribution
[
ras
,
ras
,
prior
]
=
probability
(
StateMuPrior
,
StateSqrtPPrior
,
StateWeightsPrior
,
StateParticles
)
;
prior
=
prior
'
;
% Compute the density of particles under the proposal distribution
[
ras
,
ras
,
proposal
]
=
probability
(
StateMuPost
,
StateSqrtPPost
,
StateWeightsPost
,
StateParticles
)
;
proposal
=
proposal
'
;
% Compute the density of the current observation conditionally to each particle
yt_t_1_i
=
measurement_equations
(
StateParticles
,
ReducedForm
,
DynareOptions
)
;
eta_t_i
=
bsxfun
(
@
minus
,
obs
,
yt_t_1_i
)
'
;
yt_t_1
=
sum
(
yt_t_1_i
*
weigths1
,
2
)
;
tmp
=
bsxfun
(
@
minus
,
yt_t_1_i
,
yt_t_1
)
;
Pyy
=
bsxfun
(
@
times
,
weigths2
',tmp)*tmp'
+
H
;
sqr_det
=
sqrt
(
det
(
Pyy
))
;
foo
=
(
eta_t_i
/
Pyy
)
.*
eta_t_i
;
likelihood
=
exp
(
-
0.5
*
sum
(
foo
,
2
))/(
normconst
*
sqr_det
)
+
1e-99
;
IncrementalWeights
=
likelihood
.*
prior
.
/
proposal
;
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment