44 switch (
data->dataType()) {
52 if (input_x_index.size()==0)
55 for (
int i=0; i<
data->ndata(); i++)
56 xx.push_back(
data->extra_info(input_x_index[0], i));
61 for (
int i=0; i<
data->ndata(); i++)
73 if (input_x_index.size()==0) {
78 for (
int i=0; i<
data->ndata(); i++) {
79 xx.push_back(
data->extra_info(input_x_index[0], i));
80 yy.push_back(
data->extra_info(input_x_index[1], i));
90 for (
int i=0; i<
data->xsize(); i++)
91 for (
int j=0; j<
data->ysize(); j++)
96 ErrorCBL(
"wrong dataType!",
"STR_likelihood_inputs",
"LikelihoodFunction.cpp");
107 shared_ptr<statistics::STR_likelihood_inputs> pp = static_pointer_cast<statistics::STR_likelihood_inputs>(fixed_parameter);
109 double ll = pp->interp_function1D->operator()(likelihood_parameter[0]);
110 pp->model->parameters()->full_parameter(likelihood_parameter);
122 shared_ptr<statistics::STR_likelihood_inputs> pp = static_pointer_cast<statistics::STR_likelihood_inputs>(fixed_parameter);
124 double ll = pp->interp_function2D->operator()(likelihood_parameter[0], likelihood_parameter[1]);
125 pp->model->parameters()->full_parameter(likelihood_parameter);
137 shared_ptr<statistics::STR_likelihood_inputs> pp = static_pointer_cast<statistics::STR_likelihood_inputs>(fixed_parameter);
141 vector<double> computed_model = pp->model->operator()(pp->xx, likelihood_parameter);
146 double LogLikelihood = 0.;
147 for (
int i=0; i<pp->data->ndata(); i++)
148 LogLikelihood += pow((pp->data->data(i)-computed_model[i])/pp->data->error(i), 2);
150 return -0.5*LogLikelihood;
161 shared_ptr<statistics::STR_likelihood_inputs> pp = static_pointer_cast<statistics::STR_likelihood_inputs>(fixed_parameter);
166 vector<double> computed_model = pp->model->operator()(pp->xx, likelihood_parameter);
170 vector<double> diff(pp->data->ndata(), 0);
171 for (
int i=0; i<pp->data->ndata(); i++)
172 diff[i] = pp->data->data(i)-computed_model[i];
177 double LogLikelihood = 0.;
178 for (
int i=0; i<pp->data->ndata(); i++)
179 for (
int j=0; j<pp->data->ndata(); j++)
180 LogLikelihood += diff[i]*pp->data->inverse_covariance(i, j)*diff[j];
182 return -0.5*LogLikelihood;
192 shared_ptr<statistics::STR_likelihood_inputs> pp = static_pointer_cast<statistics::STR_likelihood_inputs>(fixed_parameter);
195 vector<vector<double>> computed_model = pp->model->operator()(pp->xx, pp->yy, likelihood_parameter);
199 double LogLikelihood = 0.;
200 for (
int i=0; i<pp->data->xsize(); i++)
201 for (
int j=0; j<pp->data->ysize(); j++)
202 LogLikelihood += pow((pp->data->data(i, j)-computed_model[i][j])/pp->data->error(i, j), 2);
204 return -0.5*LogLikelihood;
214 shared_ptr<statistics::STR_likelihood_inputs> pp = static_pointer_cast<statistics::STR_likelihood_inputs>(fixed_parameter);
217 vector<double> computed_model = pp->model->operator()(pp->xx, likelihood_parameter);
221 double LogLikelihood = 0.;
223 for (
int i=0; i<pp->data->ndata(); i++)
224 LogLikelihood += pp->data->data(i)*
cbl::Ln(computed_model[i],1.e-50)-computed_model[i]-gsl_sf_lnfact(
int(pp->data->data(i)));
226 return LogLikelihood;
236 shared_ptr<statistics::STR_likelihood_inputs> pp = static_pointer_cast<statistics::STR_likelihood_inputs>(fixed_parameter);
239 vector<vector<double>> computed_model = pp->model->operator()(pp->xx, pp->yy, likelihood_parameter);
243 double LogLikelihood = 0.;
245 for (
int i=0; i<pp->data->xsize(); i++)
246 for (
int j=0; j<pp->data->ysize(); j++)
247 LogLikelihood += pp->data->data(i,j)*
cbl::Ln(computed_model[i][j],1.e-50)-computed_model[i][j]-gsl_sf_lnfact(
int(pp->data->data(i, j)));
249 return LogLikelihood;
@ _2D_extra_
2D dataset with extra information
@ _1D_extra_
1D dataset with extra information
double LogLikelihood_Gaussian_1D_covariance(std::vector< double > &likelihood_parameter, const std::shared_ptr< void > input)
function to compute the gaussian loglikelihood
double LogLikelihood_Gaussian_1D_error(std::vector< double > &likelihood_parameter, const std::shared_ptr< void > input)
function to compute the Gaussian log-likelihood
double LogLikelihood_Poissonian_1D_(std::vector< double > &likelihood_parameter, const std::shared_ptr< void > input)
function to compute the poissonian loglikelihood
double LogLikelihood_1D_interpolated(std::vector< double > &likelihood_parameter, const std::shared_ptr< void > input)
function to compute the loglikelihood on a grid
double LogLikelihood_Poissonian_2D_(std::vector< double > &likelihood_parameter, const std::shared_ptr< void > input)
function to compute the poissonian loglikelihood
double LogLikelihood_2D_interpolated(std::vector< double > &likelihood_parameter, const std::shared_ptr< void > input)
function to compute the loglikelihood on a grid
double LogLikelihood_Gaussian_2D_error(std::vector< double > &likelihood_parameter, const std::shared_ptr< void > input)
function to compute the gaussian loglikelihood model with one parameter
The global namespace of the CosmoBolognaLib
std::vector< T > different_elements(const std::vector< T > vect_input)
get the unique elements of a std::vector
int ErrorCBL(const std::string msg, const std::string functionCBL, const std::string fileCBL, const cbl::glob::ExitCode exitCode=cbl::glob::ExitCode::_error_)
throw an exception: it is used for handling exceptions inside the CosmoBolognaLib
T Ln(const T val, const double fact=0.9)
natural logarithm