--- a +++ b/mle_results.m @@ -0,0 +1,109 @@ +# Copyright (C) 2003,2004 Michael Creel michael.creel@uab.es +# under the terms of the GNU General Public License. +# +# This program 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 2 of the License, or +# (at your option) any later version. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +# Copyright (C) 2003 Michael Creel michael.creel@uab.es +# under the terms of the GNU General Public License. +# The GPL license is in the file COPYING +# +# This program 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 2 of the License, or +# (at your option) any later version. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +# Copyright (C) 2003 Michael Creel michael.creel@uab.es +# under the terms of the GNU General Public License. +# The GPL license is in the file COPYING +# +# This program 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 2 of the License, or +# (at your option) any later version. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +# report results +function [theta, V, obj_value, infocrit] = mle_results(theta, data, model, modelargs, names, title, unscale, control) + if nargin < 8 + [theta, obj_value, convergence] = mle_estimate(theta, data, model, modelargs); + else + [theta, obj_value, convergence] = mle_estimate(theta, data, model, modelargs, control); + endif + V = mle_variance(theta, data, model, modelargs); + +# unscale results if argument has been passed +# this puts coefficients into scale corresponding to the original modelargs + if (nargin > 5) + if iscell(unscale) # don't try it if unscale is simply a placeholder + [theta, V] = unscale_parameters(theta, V, unscale); + endif + endif + + [theta, V] = delta_method("parameterize", theta, {data, model, modelargs}, V); + + n = rows(data); + k = rows(V); + se = sqrt(diag(V)); + if convergence == 1 + convergence="Normal convergence"; + elseif convergence == 2 + convergence="No convergence"; + elseif convergence == -1 + convergence = "Max. iters. exceeded"; + endif + printf("\n\n******************************************************\n"); + disp(title); + printf("\nMLE Estimation Results\n"); + printf("BFGS convergence: %s\n\n", convergence); + + printf("Average Log-L: %f\n", obj_value); + printf("Observations: %d\n", n); + a =[theta, se, theta./se, 2 - 2*normal_cdf(abs(theta ./ se))]; + + clabels = str2mat("estimate", "st. err", "t-stat", "p-value"); + + printf("\n"); + if names !=0 + prettyprint(a, names, clabels); + else prettyprint_c(a, clabels); + endif + + printf("\nInformation Criteria \n"); + caic = -2*n*obj_value + rows(theta)*(log(n)+1); + bic = -2*n*obj_value + rows(theta)*log(n); + aic = -2*n*obj_value + 2*rows(theta); + infocrit = [caic, bic, aic]; + printf("CAIC : %8.4f Avg. CAIC: %8.4f\n", caic, caic/n); + printf(" BIC : %8.4f Avg. BIC: %8.4f\n", bic, bic/n); + printf(" AIC : %8.4f Avg. AIC: %8.4f\n", aic, aic/n); + printf("******************************************************\n"); +endfunction