From f12e8a3754957a18c380e4096371aa63e4cdeee6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Charybdis=29?= <stephane.adjemian@univ-lemans.fr> Date: Thu, 8 Mar 2012 16:36:31 +0100 Subject: [PATCH] Force the weights to sum up to one, and not to the number of particles as in WK (Econometrica 2010). --- matlab/particle/sequential_importance_particle_filter.m | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/matlab/particle/sequential_importance_particle_filter.m b/matlab/particle/sequential_importance_particle_filter.m index cbf675237..a38363243 100644 --- a/matlab/particle/sequential_importance_particle_filter.m +++ b/matlab/particle/sequential_importance_particle_filter.m @@ -115,7 +115,7 @@ lik = NaN(sample_size,1); % Initialization of the weights across particles. nb_obs_resamp = 0 ; -weights = ones(1,number_of_particles) ; +weights = ones(1,number_of_particles)/number_of_particles ; StateVectors = bsxfun(@plus,StateVectorVarianceSquareRoot*randn(state_variance_rank,number_of_particles),StateVectorMean); for t=1:sample_size yhat = bsxfun(@minus,StateVectors,state_variables_steady_state); @@ -134,10 +134,9 @@ for t=1:sample_size if (Neff<.5*sample_size && strcmpi(DynareOptions.particle.resampling.status,'generic')) || strcmpi(DynareOptions.particle.resampling.status,'systematic') nb_obs_resamp = nb_obs_resamp+1 ; StateVectors = tmp(mf0,resample(weights,DynareOptions.particle.resampling.method1,DynareOptions.particle.resampling.method2)); - weights = ones(1,number_of_particles) ; + weights = ones(1,number_of_particles)/number_of_particles ; elseif strcmpi(DynareOptions.particle_filter.resampling.status,'none') StateVectors = tmp(mf0,:); - weights = number_of_particles*weights; end end -- GitLab