2023-11-29 13:46:56 +01:00
function indmcf = mcf_analysis ( lpmat, ibeha, inobeha, options_mcf, M_, options_, bayestopt_, estim_params_)
% indmcf = mcf_analysis(lpmat, ibeha, inobeha, options_mcf, M_, options_, bayestopt_, estim_params_)
2023-11-28 21:06:31 +01:00
% Inputs:
% - lpmat [double] Monte Carlo matrix
% - ibeha [integer] index of behavioural runs
% - inobeha [integer] index of non-behavioural runs
% - options_gsa_ [structure] GSA options_
2023-11-29 13:46:56 +01:00
% - M_ [structure] describing the model
2023-11-28 21:06:31 +01:00
% - options_ [structure] describing the options
% - bayestopt_ [structure] describing the priors
% - estim_params_ [structure] characterizing parameters to be estimated
%
% Outputs:
% - indmcf [double] results of matrix
2023-10-25 10:14:12 +02:00
2017-05-16 15:10:20 +02:00
% Written by Marco Ratto
% Joint Research Centre, The European Commission,
% marco.ratto@ec.europa.eu
%
2022-04-13 13:15:19 +02:00
% Copyright © 2014 European Commission
2023-10-25 10:14:12 +02:00
% Copyright © 2016-2023 Dynare Team
2017-05-16 15:10:20 +02:00
%
% 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
2021-06-09 17:33:48 +02:00
% along with Dynare. If not, see <https://www.gnu.org/licenses/>.
2017-05-16 15:10:20 +02:00
pvalue_ks = options_mcf . pvalue_ks ;
pvalue_corr = options_mcf . pvalue_corr ;
alpha2 = options_mcf . alpha2 ;
param_names = options_mcf . param_names ;
2023-10-25 10:14:12 +02:00
if options_ . TeX
2017-05-16 15:10:20 +02:00
if ~ isfield ( options_mcf , ' param_names_tex' )
param_names_tex = options_mcf . param_names ;
else
param_names_tex = options_mcf . param_names_tex ;
end
2018-11-14 18:37:54 +01:00
else
param_names_tex = strrep ( options_mcf . param_names , ' _' , ' \_' ) ;
2017-05-16 15:10:20 +02:00
end
amcf_name = options_mcf . amcf_name ;
amcf_title = options_mcf . amcf_title ;
beha_title = options_mcf . beha_title ;
nobeha_title = options_mcf . nobeha_title ;
title = options_mcf . title ;
fname_ = options_mcf . fname_ ;
xparam1 = [ ] ;
if isfield ( options_mcf , ' xparam1' )
xparam1 = options_mcf . xparam1 ;
end
OutputDirectoryName = options_mcf . OutputDirectoryName ;
2023-11-28 21:06:31 +01:00
[ proba , dproba ] = stab_map_1 ( lpmat , ibeha , inobeha , [ ] , fname_ , options_ , bayestopt_ . name , estim_params_ , 0 ) ;
2017-05-16 15:10:20 +02:00
indmcf = find ( proba < pvalue_ks ) ;
2023-11-28 21:06:31 +01:00
[ ~ , jtmp ] = sort ( proba ( indmcf ) , 1 , ' ascend' ) ;
2017-05-16 15:10:20 +02:00
indmcf = indmcf ( jtmp ) ;
if ~ isempty ( indmcf )
skipline ( )
2017-10-10 10:05:59 +02:00
headers = { ' Parameter' , ' d-stat' , ' p-value' } ;
labels = param_names ( indmcf ) ;
2023-11-28 21:06:31 +01:00
data_mat = [ dproba ( indmcf ) proba ( indmcf ) ] ;
2017-05-16 15:10:20 +02:00
options_temp . noprint = 0 ;
dyntable ( options_temp , [ ' Smirnov statistics in driving ' , title ] , headers , labels , data_mat , size ( labels , 2 ) + 2 , 16 , 3 ) ;
2023-10-25 10:14:12 +02:00
if options_ . TeX
2017-10-10 10:05:59 +02:00
labels_TeX = param_names_tex ( indmcf ) ;
2017-05-16 15:10:20 +02:00
M_temp . dname = OutputDirectoryName ;
M_temp . fname = fname_ ;
dyn_latex_table ( M_temp , options_temp , [ ' Smirnov statistics in driving ' , strrep ( title , ' _' , ' \\_' ) ] , amcf_name , headers , labels_TeX , data_mat , size ( labels , 2 ) + 2 , 16 , 6 ) ;
end
end
if length ( ibeha ) > 10 && length ( inobeha ) > 10
2023-11-29 13:46:56 +01:00
indcorr1 = stab_map_2 ( lpmat ( ibeha , : ) , alpha2 , pvalue_corr , M_ , options_ , bayestopt_ , estim_params_ , beha_title ) ;
indcorr2 = stab_map_2 ( lpmat ( inobeha , : ) , alpha2 , pvalue_corr , M_ , options_ , bayestopt_ , estim_params_ , nobeha_title ) ;
2017-05-16 15:10:20 +02:00
indcorr = union ( indcorr1 ( : ) , indcorr2 ( : ) ) ;
indcorr = indcorr ( ~ ismember ( indcorr ( : ) , indmcf ) ) ;
indmcf = [ indmcf ( : ) ; indcorr ( : ) ] ;
end
2023-10-25 10:14:12 +02:00
if ~ isempty ( indmcf ) && ~ options_ . nograph
2017-05-16 15:10:20 +02:00
skipline ( )
xx = [ ] ;
2023-11-29 13:46:56 +01:00
if ~ isempty ( xparam1 )
xx = xparam1 ( indmcf ) ;
end
2018-11-14 18:37:54 +01:00
scatter_mcf ( lpmat ( ibeha , indmcf ) , lpmat ( inobeha , indmcf ) , param_names_tex ( indmcf ) , ...
2023-10-25 10:14:12 +02:00
' .' , [ fname_ , ' _' , amcf_name ] , OutputDirectoryName , amcf_title , xx , options_ , ...
2017-05-16 15:10:20 +02:00
beha_title , nobeha_title )
end