00001
00002
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,
00030 APOP_CG_FR =1,
00031 APOP_CG_BFGS =2,
00032 APOP_CG_PR =3,
00033 APOP_SIMAN =5,
00034 APOP_RF_NEWTON =10,
00035
00036 APOP_RF_HYBRID =12,
00037 APOP_RF_HYBRID_NOSCALE =13
00038 } apop_optimization_enum;
00039
00041 typedef struct{
00042
00043 double *starting_pt;
00044 apop_optimization_enum method;
00045 double step_size, tolerance, delta;
00046 int verbose;
00047 char want_cov;
00048
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
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
00104 apop_model * apop_model_fix_params(apop_model *model_in);
00105
00106 #ifdef __cplusplus
00107 }
00108 #endif
00109 #endif
Autogenerated by doxygen on 28 Sep 2009.