From 285d5c171104e44e1a5d2fe30f062be08dbab8cb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Karam=C3=A9?=
 <frederic.karame@univ-lemans.fr>
Date: Thu, 30 Jun 2016 12:12:58 +0200
Subject: [PATCH] Fix a bug in the predictive density calculation.

---
 src/auxiliary_particle_filter.m | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/src/auxiliary_particle_filter.m b/src/auxiliary_particle_filter.m
index a48973b..a793411 100644
--- a/src/auxiliary_particle_filter.m
+++ b/src/auxiliary_particle_filter.m
@@ -84,18 +84,18 @@ end
 % Uncomment for building the mean average predictions based on a sparse
 % grids of structural shocks. Otherwise, all shocks are set to 0 in the
 % prediction.
-%if ParticleOptions.proposal_approximation.cubature
-%    [nodes,nodes_weights] = spherical_radial_sigma_points(number_of_structural_innovations) ;
-%    nodes_weights = ones(size(nodes,1),1)*nodes_weights ;
-%elseif ParticleOptions.proposal_approximation.unscented
-%    [nodes,nodes_weights,nodes_weights_c] = unscented_sigma_points(number_of_structural_innovations,ParticleOptions);
-%else
-%    error('Estimation: This approximation for the proposal is not implemented or unknown!')
-%end    
-%nodes = Q_lower_triangular_cholesky*nodes ;
+% if ParticleOptions.proposal_approximation.cubature
+%     [nodes,nodes_weights] = spherical_radial_sigma_points(number_of_structural_innovations) ;
+%     nodes_weights = ones(size(nodes,1),1)*nodes_weights ;
+% elseif ParticleOptions.proposal_approximation.unscented
+%     [nodes,nodes_weights,nodes_weights_c] = unscented_sigma_points(number_of_structural_innovations,ParticleOptions);
+% else
+%     error('Estimation: This approximation for the proposal is not implemented or unknown!')
+% end    
+% nodes = (Q_lower_triangular_cholesky*(nodes'))' ;
 
 nodes = zeros(1,number_of_structural_innovations) ;
-nodes_weights = 1 ; 
+nodes_weights = ones(number_of_structural_innovations,1) ;   
 
 for t=1:sample_size
     yhat = bsxfun(@minus,StateVectors,state_variables_steady_state);
@@ -104,14 +104,14 @@ for t=1:sample_size
         tmp = 0 ;
         tmp_ = 0 ;
         for i=1:size(nodes)
-            [tmp1, tmp1_] = local_state_space_iteration_2(yhat,nodes(i,:)*ones(1,number_of_particles),ghx,ghu,constant,ghxx,ghuu,ghxu,yhat_,steadystate,ThreadsOptions.local_state_space_iteration_2);
+            [tmp1, tmp1_] = local_state_space_iteration_2(yhat,nodes(i,:)'*ones(1,number_of_particles),ghx,ghu,constant,ghxx,ghuu,ghxu,yhat_,steadystate,ThreadsOptions.local_state_space_iteration_2);
             tmp = tmp + nodes_weights(i)*tmp1 ;
             tmp_ = tmp_ + nodes_weights(i)*tmp1_ ;
         end
     else
         tmp = 0 ;
         for i=1:size(nodes)
-            tmp = tmp + nodes_weights(i)*local_state_space_iteration_2(yhat,nodes(i,:)*ones(1,number_of_particles),ghx,ghu,constant,ghxx,ghuu,ghxu,ThreadsOptions.local_state_space_iteration_2);
+            tmp = tmp + nodes_weights(i)*local_state_space_iteration_2(yhat,nodes(i,:)'*ones(1,number_of_particles),ghx,ghu,constant,ghxx,ghuu,ghxu,ThreadsOptions.local_state_space_iteration_2);
         end
     end
     PredictionError = bsxfun(@minus,Y(:,t),tmp(mf1,:));
@@ -152,4 +152,4 @@ for t=1:sample_size
 end
 
 %plot(lik) ;
-LIK = -sum(lik(start:end));
\ No newline at end of file
+LIK = -sum(lik(start:end));
-- 
GitLab