X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?p=CreaPhase.git;a=blobdiff_plain;f=octave_packages%2Feconometrics-1.0.8%2Fmle_example.m;fp=octave_packages%2Feconometrics-1.0.8%2Fmle_example.m;h=660b881146c9359754b5bd4c4149d2930cd0ae38;hp=0000000000000000000000000000000000000000;hb=c880e8788dfc484bf23ce13fa2787f2c6bca4863;hpb=1705066eceaaea976f010f669ce8e972f3734b05 diff --git a/octave_packages/econometrics-1.0.8/mle_example.m b/octave_packages/econometrics-1.0.8/mle_example.m new file mode 100644 index 0000000..660b881 --- /dev/null +++ b/octave_packages/econometrics-1.0.8/mle_example.m @@ -0,0 +1,79 @@ +## Copyright (C) 2003,2004 Michael Creel +## +## 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, see . + +## Example to show how to use MLE functions + + + +# Generate data +n = 1000; # how many observations? + +# the explanatory variables: note that they have unequal scales +x = [ones(n,1) -rand(n,1) randn(n,1)]; +theta = 1:3; # true coefficients are 1,2,3 +theta = theta'; + +lambda = exp(x*theta); +y = poissrnd(lambda); # generate the dependent variable + +#################################### +# define arguments for mle_results # +#################################### + +# starting values +theta = zeros(3,1); +# data +data = [y, x]; +# name of model to estimate +model = "poisson"; +modelargs = {0}; # if this is zero the function gives analytic score, otherwise not +# parameter names +names = char("beta1", "beta2", "beta3"); +mletitle = "Poisson MLE trial"; # title for the run + +# controls for bfgsmin: 30 iterations is not always enough for convergence +control = {50,0}; + +# This displays the results +printf("\n\nanalytic score, unscaled data\n"); +[theta, V, obj_value, infocrit] = mle_results(theta, data, model, modelargs, names, mletitle, 0, control); + +# This just calculates the results, no screen display +printf("\n\nanalytic score, unscaled data, no screen display\n"); +theta = zeros(3,1); +[theta, obj_value, convergence] = mle_estimate(theta, data, model, modelargs, control); +printf("obj_value = %f, to confirm it worked\n", obj_value); + +# This show how to scale data during estimation, but get results +# for data in original units (recommended to avoid conditioning problems) +# This usually converges faster, depending upon the data +printf("\n\nanalytic score, scaled data\n"); +[scaled_x, unscale] = scale_data(x); +data = [y, scaled_x]; +theta = zeros(3,1); +[theta, V, obj_value, infocrit] = mle_results(theta, data, model, modelargs, names, mletitle, unscale, control); + +# Example using numeric score +printf("\n\nnumeric score, scaled data\n"); +theta = zeros(3,1); +modelargs = {1}; # set the switch for no score +[theta, V, obj_value, infocrit] = mle_results(theta, data, model, modelargs, names, mletitle, unscale, control); + +# Example doing estimation in parallel on a cluster (requires MPITB) +# uncomment the following if you have MPITB installed +# theta = zeros(3,1); +# nslaves = 1; +# title = "MLE estimation done in parallel"; +# [theta, V, obj_value, infocrit] = mle_results(theta, data, model, modelargs, names, mletitle, unscale, control, nslaves);