9#ifndef FIMS_INTERFACE_RCPP_RCPP_OBJECTS_RCPP_DISTRIBUTION_HPP
10#define FIMS_INTERFACE_RCPP_RCPP_OBJECTS_RCPP_DISTRIBUTION_HPP
13#include "../../../distributions/distributions.hpp"
32 std::shared_ptr<std::vector<uint32_t>>
key_m;
66 static std::map<uint32_t, std::shared_ptr<DistributionsInterfaceBase>>
81 this->key_m = std::make_shared<std::vector<uint32_t>>();
119 Rcpp::IntegerVector
ids) {
199 std::make_shared<DnormDistributionsInterface>(*
this);
241 this->expected_mean[0].initial_value_m =
input_value;
242 this->expected_mean[0].estimation_type_m.
set(
"fixed_effects");
251 Rcpp::IntegerVector
ids) {
253 this->
key_m->resize(ids.size());
269 dnorm.expected_values.resize(this->expected_values.
size());
270 dnorm.log_sd.resize(this->log_sd.
size());
271 dnorm.expected_mean.resize(this->expected_mean.
size());
272 for (
size_t i = 0;
i < this->observed_values.
size();
i++) {
273 dnorm.observed_values[
i] = this->observed_values[
i].initial_value_m;
275 for (
size_t i = 0;
i < this->expected_values.
size();
i++) {
276 dnorm.expected_values[
i] = this->expected_values[
i].initial_value_m;
278 for (
size_t i = 0;
i < this->log_sd.
size();
i++) {
279 dnorm.log_sd[
i] = this->log_sd[
i].initial_value_m;
281 for (
size_t i = 0;
i < this->expected_mean.
size();
i++) {
282 dnorm.expected_mean[
i] = this->expected_mean[
i].initial_value_m;
296 " has been finalized already.");
301 std::shared_ptr<fims_info::Information<double>>
info =
307 it =
info->density_components.find(this->
id_m);
311 " not found in Information.");
314 std::shared_ptr<fims_distributions::NormalLPDF<double>>
dnorm =
315 std::dynamic_pointer_cast<fims_distributions::NormalLPDF<double>>(
324 if (this->log_sd.
size() !=
n_x) {
326 if (this->log_sd.
size() == 1) {
327 auto tmp = this->log_sd[0];
329 for (
size_t i = 0;
i <
n_x; ++
i) {
330 this->log_sd[
i] =
tmp;
335 "log_sd size does not match number of observations and is not "
339 for (
size_t i = 0;
i <
n_x;
i++) {
340 if (this->log_sd[
i].estimation_type_m.
get() ==
"constant") {
341 this->log_sd[
i].final_value_m = this->log_sd[
i].initial_value_m;
343 this->log_sd[
i].final_value_m =
dnorm->log_sd.get_force_scalar(
i);
347 for (
size_t i = 0;
i < this->expected_mean.
size();
i++) {
348 if (this->expected_mean[
i].estimation_type_m.
get() ==
"constant") {
349 this->expected_mean[
i].final_value_m =
350 this->expected_mean[
i].initial_value_m;
352 this->expected_mean[
i].final_value_m =
dnorm->expected_mean[
i];
357 if (this->expected_values.
size() == 1) {
360 if (this->observed_values.
size() == 1) {
364 for (
size_t i = 0;
i < this->lpdf_vec.
size();
i++) {
365 this->lpdf_vec[
i] =
dnorm->lpdf_vec[
i];
366 this->expected_values[
i].final_value_m =
dnorm->get_expected(
i);
367 this->observed_values[
i].final_value_m =
dnorm->get_observed(
i);
380 std::stringstream
ss;
383 ss <<
" \"module_name\": \"density\",\n";
384 ss <<
" \"module_id\": " << this->
id_m <<
",\n";
385 ss <<
" \"module_type\": \"normal\",\n";
388 ss <<
" \"input_type\" : \"" << this->
input_type_m <<
"\",\n";
389 ss <<
" \"density_component\": {\n";
391 ss <<
" \"value\":[";
392 if (this->lpdf_vec.
size() == 0) {
395 for (
size_t i = 0;
i < this->lpdf_vec.
size() - 1;
i++) {
403 ss <<
" \"expected_values\":[";
404 if (this->expected_values.
size() == 0) {
407 for (
size_t i = 0;
i < this->expected_values.
size() - 1;
i++) {
412 this->expected_values[this->expected_values.
size() - 1]
416 ss <<
" \"log_sd_values\":[";
417 if (this->log_sd.
size() == 0) {
425 this->log_sd[this->log_sd.
size() - 1].final_value_m)
428 ss <<
" \"observed_values\":[";
429 if (this->observed_values.
size() == 0) {
432 for (
size_t i = 0;
i < this->observed_values.
size() - 1;
i++) {
433 ss << this->observed_values[
i].final_value_m <<
", ";
435 ss << this->observed_values[this->observed_values.
size() - 1]
445 template <
typename Type>
447 std::shared_ptr<fims_info::Information<Type>>
info =
450 std::shared_ptr<fims_distributions::NormalLPDF<Type>>
distribution =
451 std::make_shared<fims_distributions::NormalLPDF<Type>>();
456 std::stringstream
ss;
458 distribution->key.resize(this->
key_m->size());
459 for (
size_t i = 0;
i < this->
key_m->size();
i++) {
460 distribution->key[
i] = this->
key_m->at(
i);
462 distribution->id = this->
id_m;
463 distribution->observed_values.resize(this->observed_values.
size());
464 for (
size_t i = 0;
i < this->observed_values.
size();
i++) {
466 this->observed_values[
i].initial_value_m;
470 for (
size_t i = 0;
i < this->expected_values.
size();
i++) {
472 this->expected_values[
i].initial_value_m;
475 for (
size_t i = 0;
i < this->log_sd.
size();
i++) {
477 if (this->log_sd[
i].estimation_type_m.
get() ==
"fixed_effects") {
479 ss <<
"dnorm." << this->
id_m <<
".log_sd." << this->log_sd[
i].
id_m;
480 info->RegisterParameterName(
ss.str());
483 if (this->log_sd[
i].estimation_type_m.
get() ==
"random_effects") {
484 FIMS_ERROR_LOG(
"standard deviations cannot be set to random effects");
490 distribution->expected_mean.resize(this->expected_mean.
size());
491 for (
size_t i = 0;
i < this->expected_mean.
size();
i++) {
492 distribution->expected_mean[
i] = this->expected_mean[
i].initial_value_m;
493 if (this->expected_mean[
i].estimation_type_m.
get() ==
"fixed_effects") {
495 ss <<
"dnorm." << this->
id_m <<
".expected_mean."
496 << this->expected_mean[
i].
id_m;
497 info->RegisterParameterName(
ss.str());
500 if (this->expected_mean[
i].estimation_type_m.
get() ==
"random_effects") {
504 info->variable_map[this->expected_mean.
id_m] =
560 std::make_shared<DlnormDistributionsInterface>(*
this);
606 Rcpp::IntegerVector
ids) {
608 this->
key_m->resize(ids.size());
624 dlnorm.expected_values.resize(this->expected_values.
size());
627 for (
size_t i = 0;
i < this->observed_values.
size();
i++) {
628 dlnorm.observed_values[
i] = this->observed_values[
i].initial_value_m;
630 for (
size_t i = 0;
i < this->expected_values.
size();
i++) {
631 dlnorm.expected_values[
i] = this->expected_values[
i].initial_value_m;
633 for (
size_t i = 0;
i < this->log_sd.
size();
i++) {
634 dlnorm.log_sd[
i] = this->log_sd[
i].initial_value_m;
647 " has been finalized already.");
652 std::shared_ptr<fims_info::Information<double>>
info =
658 it =
info->density_components.find(this->
id_m);
662 " not found in Information.");
665 std::shared_ptr<fims_distributions::LogNormalLPDF<double>>
dlnorm =
666 std::dynamic_pointer_cast<fims_distributions::LogNormalLPDF<double>>(
673 if (this->log_sd.
size() !=
n_x) {
675 if (this->log_sd.
size() == 1) {
676 auto tmp = this->log_sd[0];
678 for (
size_t i = 0;
i <
n_x; ++
i) {
679 this->log_sd[
i] =
tmp;
684 "log_sd size does not match number of observations and is not "
689 for (
size_t i = 0;
i <
n_x;
i++) {
690 if (this->log_sd[
i].estimation_type_m.
get() ==
"constant") {
691 this->log_sd[
i].final_value_m = this->log_sd[
i].initial_value_m;
693 this->log_sd[
i].final_value_m =
dlnorm->log_sd.get_force_scalar(
i);
698 if (this->expected_values.
size() == 1) {
701 if (this->observed_values.
size() == 1) {
704 for (
size_t i = 0;
i < this->lpdf_vec.
size();
i++) {
705 this->lpdf_vec[
i] =
dlnorm->lpdf_vec[
i];
706 this->expected_values[
i].final_value_m =
dlnorm->get_expected(
i);
707 this->observed_values[
i].final_value_m =
dlnorm->get_observed(
i);
720 std::stringstream
ss;
723 ss <<
" \"module_name\": \"density\",\n";
724 ss <<
" \"module_id\": " << this->
id_m <<
",\n";
725 ss <<
" \"module_type\": \"log_normal\",\n";
728 ss <<
" \"input_type\" : \"" << this->
input_type_m <<
"\",\n";
729 ss <<
" \"density_component\": {\n";
731 ss <<
" \"value\":[";
732 if (this->lpdf_vec.
size() == 0) {
735 for (
size_t i = 0;
i < this->lpdf_vec.
size() - 1;
i++) {
742 ss <<
" \"expected_values\":[";
743 if (this->expected_values.
size() == 0) {
746 for (
size_t i = 0;
i < this->expected_values.
size() - 1;
i++) {
751 this->expected_values[this->expected_values.
size() - 1]
756 ss <<
" \"log_sd_values\":[";
757 if (this->log_sd.
size() == 0) {
765 this->log_sd[this->log_sd.
size() - 1].final_value_m)
768 ss <<
" \"observed_values\":[";
769 if (this->observed_values.
size() == 0) {
772 for (
size_t i = 0;
i < this->observed_values.
size() - 1;
i++) {
773 ss << this->observed_values[
i].final_value_m <<
", ";
775 ss << this->observed_values[this->observed_values.
size() - 1]
785 template <
typename Type>
787 std::shared_ptr<fims_info::Information<Type>>
info =
790 std::shared_ptr<fims_distributions::LogNormalLPDF<Type>>
distribution =
791 std::make_shared<fims_distributions::LogNormalLPDF<Type>>();
795 std::stringstream
ss;
798 distribution->key.resize(this->
key_m->size());
799 for (
size_t i = 0;
i < this->
key_m->size();
i++) {
800 distribution->key[
i] = this->
key_m->at(
i);
802 distribution->observed_values.resize(this->observed_values.
size());
803 for (
size_t i = 0;
i < this->observed_values.
size();
i++) {
805 this->observed_values[
i].initial_value_m;
809 for (
size_t i = 0;
i < this->expected_values.
size();
i++) {
811 this->expected_values[
i].initial_value_m;
814 for (
size_t i = 0;
i < this->log_sd.
size();
i++) {
816 if (this->log_sd[
i].estimation_type_m.
get() ==
"fixed_effects") {
818 ss <<
"dlnorm." << this->
id_m <<
".log_sd." << this->log_sd[
i].
id_m;
819 info->RegisterParameterName(
ss.str());
822 if (this->log_sd[
i].estimation_type_m.
get() ==
"random_effects") {
823 FIMS_ERROR_LOG(
"standard deviations cannot be set to random effects");
885 std::make_shared<DmultinomDistributionsInterface>(*
this);
931 Rcpp::IntegerVector
ids) {
933 this->
key_m->resize(ids.size());
956 dmultinom.expected_values.resize(this->expected_values.
size());
958 dmultinom.observed_values[
i] = this->observed_values[
i].initial_value_m;
961 dmultinom.expected_values[
i] = this->expected_values[
i].initial_value_m;
973 fims::to_string(this->
id_m) +
974 " has been finalized already.");
979 std::shared_ptr<fims_info::Information<double>>
info =
985 it =
info->density_components.find(this->
id_m);
989 " not found in Information.");
992 std::shared_ptr<fims_distributions::MultinomialLPMF<double>>
dmultinom =
993 std::dynamic_pointer_cast<
999 this->lpdf_vec = Rcpp::NumericVector(
n_x);
1000 if (this->expected_values.
size() !=
n_x) {
1003 if (this->observed_values.
size() !=
n_x) {
1006 for (
size_t i = 0;
i < this->lpdf_vec.
size();
i++) {
1008 this->expected_values[
i].final_value_m =
dmultinom->get_expected(
i);
1010 this->observed_values[
i].final_value_m =
dmultinom->get_observed(
i);
1017 for (
size_t i = 0;
i <
dims[0];
i++) {
1018 for (
size_t j = 0;
j <
dims[1];
j++) {
1020 this->observed_values[
idx].final_value_m =
dmultinom->get_observed(
1021 static_cast<size_t>(
i),
static_cast<size_t>(
j));
1036 std::stringstream
ss;
1039 ss <<
" \"module_name\": \"density\",\n";
1040 ss <<
" \"module_id\": " << this->
id_m <<
",\n";
1041 ss <<
" \"module_type\": \"multinomial\",\n";
1044 ss <<
" \"input_type\" : \"" << this->
input_type_m <<
"\",\n";
1045 ss <<
" \"density_component\": {\n";
1047 ss <<
" \"value\":[";
1048 if (this->lpdf_vec.
size() == 0) {
1051 for (
size_t i = 0;
i < this->lpdf_vec.
size() - 1;
i++) {
1059 ss <<
" \"expected_values\":[";
1060 if (this->expected_values.
size() == 0) {
1063 for (
size_t i = 0;
i < this->expected_values.
size() - 1;
i++) {
1068 this->expected_values[this->expected_values.
size() - 1]
1074 ss <<
" \"observed_values\":[";
1075 if (this->observed_values.
size() == 0) {
1078 for (
size_t i = 0;
i < this->observed_values.
size() - 1;
i++) {
1079 ss << this->observed_values[
i].final_value_m <<
", ";
1081 ss << this->observed_values[this->observed_values.
size() - 1]
1091 template <
typename Type>
1093 std::shared_ptr<fims_info::Information<Type>>
info =
1096 std::shared_ptr<fims_distributions::MultinomialLPMF<Type>>
distribution =
1097 std::make_shared<fims_distributions::MultinomialLPMF<Type>>();
1102 distribution->key.resize(this->
key_m->size());
1103 for (
size_t i = 0;
i < this->
key_m->size();
i++) {
1104 distribution->key[
i] = this->
key_m->at(
i);
1106 distribution->observed_values.resize(this->observed_values.
size());
1107 for (
size_t i = 0;
i < this->observed_values.
size();
i++) {
1109 this->observed_values[
i].initial_value_m;
1113 for (
size_t i = 0;
i < this->expected_values.
size();
i++) {
1115 this->expected_values[
i].initial_value_m;
Rcpp interface that serves as the parent class for Rcpp distribution interfaces. This type should be ...
Definition rcpp_distribution.hpp:19
virtual bool set_observed_data(int observed_data_id)
Set the unique ID for the observed data object.
Definition rcpp_distribution.hpp:154
double lpdf_value
The log probability density function value.
Definition rcpp_distribution.hpp:76
virtual ~DistributionsInterfaceBase()
The destructor.
Definition rcpp_distribution.hpp:103
virtual double evaluate()=0
A method for each child distribution interface object to inherit so each distribution can have an eva...
std::shared_ptr< std::vector< uint32_t > > key_m
The unique ID for the variable map that points to a fims::Vector.
Definition rcpp_distribution.hpp:32
DistributionsInterfaceBase(const DistributionsInterfaceBase &other)
Construct a new Distributions Interface Base object.
Definition rcpp_distribution.hpp:93
uint32_t id_m
The local ID of the DistributionsInterfaceBase object.
Definition rcpp_distribution.hpp:28
virtual uint32_t get_id()=0
Get the ID for the child distribution interface objects to inherit.
SharedString use_mean_m
Control flag indicating whether to use the expected mean in the distribution calculations.
Definition rcpp_distribution.hpp:60
SharedInt interface_observed_data_id_m
The ID of the observed data object, which is set to -999.
Definition rcpp_distribution.hpp:71
virtual bool set_distribution_mean(double input_value)
Set the expected mean value for the distribution.
Definition rcpp_distribution.hpp:146
virtual bool set_distribution_links(std::string input_type, Rcpp::IntegerVector ids)
Sets pointers for data observations, random effects, or priors.
Definition rcpp_distribution.hpp:118
static uint32_t id_g
The static ID of the DistributionsInterfaceBase object.
Definition rcpp_distribution.hpp:24
static std::map< uint32_t, std::shared_ptr< DistributionsInterfaceBase > > live_objects
The map associating the ID of the DistributionsInterfaceBase to the DistributionsInterfaceBase object...
Definition rcpp_distribution.hpp:67
SharedString input_type_m
The type of density input. The options are prior, re, or data.
Definition rcpp_distribution.hpp:36
DistributionsInterfaceBase()
The constructor.
Definition rcpp_distribution.hpp:80
The Rcpp interface for Dlnorm to instantiate from R: dlnorm_ <- methods::new(DlnormDistribution).
Definition rcpp_distribution.hpp:530
virtual bool set_distribution_links(std::string input_type, Rcpp::IntegerVector ids)
Sets pointers for data observations, random effects, or priors.
Definition rcpp_distribution.hpp:605
DlnormDistributionsInterface(const DlnormDistributionsInterface &other)
Construct a new Dlnorm Distributions Interface object.
Definition rcpp_distribution.hpp:570
DlnormDistributionsInterface()
The constructor.
Definition rcpp_distribution.hpp:558
ParameterVector expected_values
The expected values, which would be the mean of log(x) for this distribution.
Definition rcpp_distribution.hpp:540
virtual std::string to_json()
Converts the data to json representation for the output.
Definition rcpp_distribution.hpp:719
virtual uint32_t get_id()
Gets the ID of the interface base object.
Definition rcpp_distribution.hpp:586
virtual double evaluate()
Evaluate lognormal probability density function (pdf). The natural log of the pdf is returned.
Definition rcpp_distribution.hpp:621
ParameterVector observed_values
Observed data.
Definition rcpp_distribution.hpp:535
ParameterVector log_sd
The uncertainty, which would be the natural logarithm of the standard deviation (sd) of log(x) for th...
Definition rcpp_distribution.hpp:548
virtual bool set_observed_data(int observed_data_id)
Set the unique ID for the observed data object.
Definition rcpp_distribution.hpp:592
virtual void finalize()
Extracts the derived quantities from Information to the Rcpp object.
Definition rcpp_distribution.hpp:643
virtual ~DlnormDistributionsInterface()
The destructor.
Definition rcpp_distribution.hpp:580
RealVector lpdf_vec
Vector that records the individual log probability function for each observation.
Definition rcpp_distribution.hpp:553
The Rcpp interface for Dmultinom to instantiate from R: dmultinom_ <- methods::new(DmultinomDistribut...
Definition rcpp_distribution.hpp:851
virtual bool set_distribution_links(std::string input_type, Rcpp::IntegerVector ids)
Sets pointers for data observations, random effects, or priors.
Definition rcpp_distribution.hpp:930
SharedString notes
TODO: document this.
Definition rcpp_distribution.hpp:878
virtual uint32_t get_id()
Gets the ID of the interface base object.
Definition rcpp_distribution.hpp:911
ParameterVector expected_values
The expected values, which should be a vector of length K where each value specifies the probability ...
Definition rcpp_distribution.hpp:862
void finalize()
Extracts derived quantities back to the Rcpp interface object from the Information object.
Definition rcpp_distribution.hpp:969
virtual double evaluate()
Definition rcpp_distribution.hpp:952
ParameterVector observed_values
Observed data, which should be a vector of length K of integers.
Definition rcpp_distribution.hpp:856
void set_note(std::string note)
Set the note object.
Definition rcpp_distribution.hpp:945
virtual bool set_observed_data(int observed_data_id)
Set the unique ID for the observed data object.
Definition rcpp_distribution.hpp:917
RealVector dims
The dimensions of the number of rows and columns of the multivariate dataset.
Definition rcpp_distribution.hpp:867
DmultinomDistributionsInterface()
The constructor.
Definition rcpp_distribution.hpp:883
virtual std::string to_json()
Converts the data to json representation for the output.
Definition rcpp_distribution.hpp:1035
RealVector lpdf_vec
Vector that records the individual log probability function for each observation.
Definition rcpp_distribution.hpp:872
DmultinomDistributionsInterface(const DmultinomDistributionsInterface &other)
Construct a new Dmultinom Distributions Interface object.
Definition rcpp_distribution.hpp:895
virtual ~DmultinomDistributionsInterface()
The destructor.
Definition rcpp_distribution.hpp:906
The Rcpp interface for Dnorm to instantiate from R: dnorm_ <- methods::new(DnormDistribution).
Definition rcpp_distribution.hpp:167
DnormDistributionsInterface(const DnormDistributionsInterface &other)
Construct a new Dnorm Distributions Interface object.
Definition rcpp_distribution.hpp:209
ParameterVector expected_mean
The expected mean, which would be the mean of x for this distribution.
Definition rcpp_distribution.hpp:182
DnormDistributionsInterface()
The constructor.
Definition rcpp_distribution.hpp:197
virtual std::string to_json()
Converts the data to json representation for the output.
Definition rcpp_distribution.hpp:379
virtual ~DnormDistributionsInterface()
The destructor.
Definition rcpp_distribution.hpp:220
RealVector lpdf_vec
Vector that records the individual log probability function for each observation.
Definition rcpp_distribution.hpp:192
virtual double evaluate()
Evaluate normal probability density function (pdf). The natural log of the pdf is returned.
Definition rcpp_distribution.hpp:266
ParameterVector expected_values
The expected values, which would be the mean of x for this distribution.
Definition rcpp_distribution.hpp:177
virtual void finalize()
Extracts the derived quantities from Information to the Rcpp object.
Definition rcpp_distribution.hpp:292
virtual bool set_observed_data(int observed_data_id)
Set the unique ID for the observed data object.
Definition rcpp_distribution.hpp:232
ParameterVector observed_values
Observed data.
Definition rcpp_distribution.hpp:172
virtual bool set_distribution_mean(double input_value)
Set the expected mean value for the distribution.
Definition rcpp_distribution.hpp:240
ParameterVector log_sd
The uncertainty, which would be the standard deviation of x for the normal distribution.
Definition rcpp_distribution.hpp:187
virtual bool set_distribution_links(std::string input_type, Rcpp::IntegerVector ids)
Sets pointers for data observations, random effects, or priors.
Definition rcpp_distribution.hpp:250
virtual uint32_t get_id()
Gets the ID of the interface base object.
Definition rcpp_distribution.hpp:226
Base class for all interface objects.
Definition rcpp_interface_base.hpp:628
bool finalized
Is the object already finalized? The default is false.
Definition rcpp_interface_base.hpp:633
std::string value_to_string(double value)
Report the parameter value as a string.
Definition rcpp_interface_base.hpp:669
static std::vector< std::shared_ptr< FIMSRcppInterfaceBase > > fims_interface_objects
FIMS interface object vectors.
Definition rcpp_interface_base.hpp:638
virtual bool add_to_fims_tmb()
A virtual method to inherit to add objects to the TMB model.
Definition rcpp_interface_base.hpp:643
An Rcpp interface class that defines the ParameterVector class.
Definition rcpp_interface_base.hpp:144
void resize(size_t size)
Resizes a ParameterVector to the desired length.
Definition rcpp_interface_base.hpp:295
size_t size()
Returns the size of a ParameterVector.
Definition rcpp_interface_base.hpp:288
uint32_t id_m
The local ID of the Parameter object.
Definition rcpp_interface_base.hpp:157
Parameter & get(size_t pos)
An internal accessor for calling a position of a ParameterVector from R.
Definition rcpp_interface_base.hpp:267
void set(size_t pos, const Parameter &p)
An internal setter for setting a position of a ParameterVector from R.
Definition rcpp_interface_base.hpp:283
An Rcpp interface class that defines the RealVector class.
Definition rcpp_interface_base.hpp:413
size_t size()
Returns the size of a RealVector.
Definition rcpp_interface_base.hpp:584
void resize(size_t size)
Resizes a RealVector to the desired length.
Definition rcpp_interface_base.hpp:591
A class that provides shared ownership of an integer value.
Definition rcpp_shared_primitive.hpp:29
void set(int val)
Change the value of the integer.
Definition rcpp_shared_primitive.hpp:134
A class that provides shared ownership of a string.
Definition rcpp_shared_primitive.hpp:1513
std::string get() const
Retrieves the string value managed by the object.
Definition rcpp_shared_primitive.hpp:1617
void set(std::string val)
Sets the string value of the object.
Definition rcpp_shared_primitive.hpp:1626
#define FIMS_WARNING_LOG(MESSAGE)
Definition def.hpp:648
#define FIMS_ERROR_LOG(MESSAGE)
Definition def.hpp:664
void clear_internal()
Clears the internal objects.
Definition rcpp_interface.hpp:235
The Rcpp interface to declare objects that are used ubiquitously throughout the Rcpp interface,...
double sanitize_val(double x)
Sanitize a double value by replacing NaN or Inf with -999.0.
Definition rcpp_interface_base.hpp:113
fims::Vector< Type > observed_values
Input value of distribution function for priors or random effects.
Definition density_components_base.hpp:61
Type lpdf
Total log probability density contribution of the distribution.
Definition density_components_base.hpp:180
Implements the LogNormalLPDF distribution functor used by FIMS to evaluate observation-level and tota...
Definition lognormal_lpdf.hpp:34
Implements the MultinomialLPMF distribution functor used by FIMS to evaluate the observation-level an...
Definition multinomial_lpmf.hpp:36
Implements the NormalLPDF distribution functor used by FIMS to evaluate observation-level and total l...
Definition normal_lpdf.hpp:32
virtual const Type evaluate()
Evaluates the normal log probability density function.
Definition normal_lpdf.hpp:59