Skip to content
Snippets Groups Projects
Select Git revision
  • nlf-fixes
  • DSMH
  • OneStep2
  • SMC
  • online-filter-as-a-sampler
  • nonlinear-filter-fixes
  • SMCsamplers
  • smc-sampler
  • master default protected
  • 4.5
  • dynamic-striated
  • occbin
  • exo_steady_state
  • filter_initial_state
  • declare_vars_in_model_block
  • exceptions
  • rmExtraExo
  • julia
  • error_msg_undeclared_model_vars
  • static_aux_vars
  • 4.5.6
  • 4.5.5
  • 4.5.4
  • 4.5.3
  • 4.5.2
  • 4.5.1
  • 4.5.0
  • 4.4.3
  • 4.4.2
  • 4.4.1
  • 4.4.0
  • 4.4-beta1
  • 4.3.3
  • 4.3.2
  • 4.3.1
  • 4.3.0
  • 4.2.5
  • 4.2.4
  • 4.2.3
  • 4.2.2
40 results

check_prior_bounds.m

Blame
  • Forked from Dynare / dynare
    7352 commits behind the upstream repository.
    • Stéphane Adjemian's avatar
      f48566ae
      Fixed prior bounds (according to the doc in master branch). · f48566ae
      Stéphane Adjemian authored
       * Second  and  third  positional  arguments  after the  name  of  the
         estimated  parameter   in  the  estimated_params   block  are  only
         considered in the optimization stage (not in the MCMC)
      
       * Do not  store bounds  in bayestopt_, because  bounds do  not always
         reflect restrictions implied by prior shapes.
      
       * prior_bounds routine  returns a structure  (with fields lb  and ub)
         instead of a matrix.
      f48566ae
      History
      Fixed prior bounds (according to the doc in master branch).
      Stéphane Adjemian authored
       * Second  and  third  positional  arguments  after the  name  of  the
         estimated  parameter   in  the  estimated_params   block  are  only
         considered in the optimization stage (not in the MCMC)
      
       * Do not  store bounds  in bayestopt_, because  bounds do  not always
         reflect restrictions implied by prior shapes.
      
       * prior_bounds routine  returns a structure  (with fields lb  and ub)
         instead of a matrix.
    check_prior_bounds.m 2.56 KiB
    function check_prior_bounds(xparam1,bounds,M_,estim_params_,options_,bayestopt_)
    % function check_prior_bounds(xparam1,bounds,M_,estim_params_,options_)
    % checks the parameter vector of violations of the prior bounds
    % Inputs:
    %   -xparam1        [double]    vector of parameters to be estimated (initial values)
    %   -bounds         [vector]    vector containing the lower and upper
    %   bounds
    %   -M_             [structure] characterizing the model. 
    %   -estim_params_  [structure] characterizing parameters to be estimated
    %   -options_       [structure] characterizing the options
    %   -bayestopt_     [structure] characterizing priors
    
    % Copyright (C) 2013 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/>.
    
    outside_bound_pars=find(xparam1 < bounds.lb | xparam1 > bounds.ub);
    if ~isempty(outside_bound_pars)
        for ii=1:length(outside_bound_pars)
            outside_bound_par_names{ii,1}=get_the_name(outside_bound_pars(ii),0,M_,estim_params_,options_);
        end
        disp_string=[outside_bound_par_names{1,:}];
        for ii=2:size(outside_bound_par_names,1)
            disp_string=[disp_string,', ',outside_bound_par_names{ii,:}];
        end
        error(['Initial value(s) of ', disp_string ,' are outside parameter bounds. Potentially, you should set prior_trunc=0. If you used the mode_file-option, check whether your mode-file is consistent with the priors.'])
    end
    inadmissible_inverse_gamma_values=find(bayestopt_.pshape==4 & xparam1 == 0);
    if ~isempty(inadmissible_inverse_gamma_values)
        for ii=1:length(inadmissible_inverse_gamma_values)
            inadmissible_inverse_gamma_par_names{ii,1}=get_the_name(inadmissible_inverse_gamma_values(ii),0,M_,estim_params_,options_);
        end
        disp_string=[inadmissible_inverse_gamma_par_names{1,:}];
        for ii=2:size(inadmissible_inverse_gamma_par_names,1)
            disp_string=[disp_string,', ',inadmissible_inverse_gamma_par_names{ii,:}];
        end
        error(['Initial value(s) of ', disp_string ,' is zero. This is not allowed when using an inverse gamma prior.\n'])
    end