Patterns in static

Apophenia

likelihoods.h

Go to the documentation of this file.
00001 
00002  /* Copyright (c) 2005--2007 by Ben Klemens.  Licensed under the modified GNU GPL v2; see COPYING and COPYING2.  */
00003 
00004 #ifndef apop_likelihoods_h
00005 #define  apop_likelihoods_h
00006 
00007 #include <gsl/gsl_cdf.h>
00008 #include <gsl/gsl_blas.h>
00009 #include <gsl/gsl_siman.h>
00010 #include <gsl/gsl_matrix.h>
00011 #include <gsl/gsl_randist.h>
00012 #include <gsl/gsl_multimin.h>
00013 #include <gsl/gsl_sf_gamma.h>
00014 #include <gsl/gsl_sf_psi.h>
00015 #include "stats.h"
00016 #include "types.h"
00017 #include "settings.h"
00018 #include "variadic.h"
00019 #include "conversions.h"
00020 
00021 #define MAX_ITERATIONS        5000
00022 #define MAX_ITERATIONS_w_d    5000
00023 
00024 #ifdef    __cplusplus
00025 extern "C" {
00026 #endif
00027 
00028 typedef enum {
00029     APOP_SIMPLEX_NM     =0, // 0: Nelder-Mead simplex (gradient handling rule is irrelevant)
00030     APOP_CG_FR     =1,      //  1: conjugate gradient (Fletcher-Reeves) (default)
00031     APOP_CG_BFGS   =2,      //  2: conjugate gradient (BFGS: Broyden-Fletcher-Goldfarb-Shanno)
00032     APOP_CG_PR     =3,      //  3: conjugate gradient (Polak-Ribiere)
00033     APOP_SIMAN      =5,         //  5: \ref simanneal "simulated annealing"
00034     APOP_RF_NEWTON  =10,        //  10: Find a root of the derivative via Newton's method
00035 //    APOP_RF_BROYDEN =11,        //  11: Find a root of the derivative via the Broyden Algorithm
00036     APOP_RF_HYBRID  =12,        //  12: Find a root of the derivative via the Hybrid method
00037     APOP_RF_HYBRID_NOSCALE  =13 //  13: Find a root of the derivative via the Hybrid method; no internal scaling
00038 } apop_optimization_enum;
00039 
00041 typedef struct{
00042 //traditional
00043     double      *starting_pt;
00044     apop_optimization_enum method;
00045     double      step_size, tolerance, delta;
00046     int         verbose;
00047     char        want_cov;
00048 //simulated annealing (also uses step_size);
00049     int         n_tries, use_score, iters_fixed_T;
00050     double      k, t_initial, mu_t, t_min ;
00051     gsl_rng     *rng;
00053     char        *trace_path;
00054     apop_model  *parent;
00055 } apop_mle_settings;
00056 
00057 apop_mle_settings *apop_mle_settings_alloc(apop_model *model);
00058 #ifndef SWIG
00059 Apop_settings_declarations(apop_mle)
00060 #endif
00061 
00062 #ifdef APOP_NO_VARIADIC
00063  gsl_vector * apop_numerical_gradient(apop_data * data, apop_model* model, double delta);
00064 #else
00065  gsl_vector * apop_numerical_gradient_base(apop_data * data, apop_model* model, double delta);
00066  apop_varad_declare(gsl_vector *, apop_numerical_gradient, apop_data * data; apop_model* model; double delta);
00067 #define apop_numerical_gradient(...) apop_varad_link(apop_numerical_gradient, __VA_ARGS__)
00068 #endif
00069 #ifdef APOP_NO_VARIADIC
00070  apop_data * apop_model_hessian(apop_data * data, apop_model *model, double delta);
00071 #else
00072  apop_data * apop_model_hessian_base(apop_data * data, apop_model *model, double delta);
00073  apop_varad_declare(apop_data *, apop_model_hessian, apop_data * data; apop_model *model; double delta);
00074 #define apop_model_hessian(...) apop_varad_link(apop_model_hessian, __VA_ARGS__)
00075 #endif
00076 #ifdef APOP_NO_VARIADIC
00077  apop_data * apop_model_numerical_covariance(apop_data * data, apop_model *model, double delta);
00078 #else
00079  apop_data * apop_model_numerical_covariance_base(apop_data * data, apop_model *model, double delta);
00080  apop_varad_declare(apop_data *, apop_model_numerical_covariance, apop_data * data; apop_model *model; double delta);
00081 #define apop_model_numerical_covariance(...) apop_varad_link(apop_model_numerical_covariance, __VA_ARGS__)
00082 #endif
00083 
00084 apop_model *   apop_maximum_likelihood(apop_data * data, apop_model dist);
00085 
00086 #ifdef APOP_NO_VARIADIC
00087  apop_model * apop_estimate_restart (apop_model *e, apop_model *copy, char * starting_pt, double boundary);
00088 #else
00089  apop_model * apop_estimate_restart_base(apop_model *e, apop_model *copy, char * starting_pt, double boundary);
00090  apop_varad_declare(apop_model *, apop_estimate_restart, apop_model *e; apop_model *copy; char * starting_pt; double boundary);
00091 #define apop_estimate_restart(...) apop_varad_link(apop_estimate_restart , __VA_ARGS__)
00092 #endif
00093 
00094 //in apop_linear_constraint.c
00095 #ifdef APOP_NO_VARIADIC
00096  double  apop_linear_constraint(gsl_vector *beta, apop_data * constraint, double margin);
00097 #else
00098  double  apop_linear_constraint_base(gsl_vector *beta, apop_data * constraint, double margin);
00099  apop_varad_declare(double , apop_linear_constraint, gsl_vector *beta; apop_data * constraint; double margin);
00100 #define apop_linear_constraint(...) apop_varad_link(apop_linear_constraint, __VA_ARGS__)
00101 #endif
00102 
00103 //in apop_model_fix_params.c
00104 apop_model * apop_model_fix_params(apop_model *model_in);
00105 
00106 #ifdef    __cplusplus
00107 }
00108 #endif
00109 #endif

SourceForge.net Logo

Autogenerated by doxygen on 28 Sep 2009.