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