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());
254 for (R_xlen_t i = 0; i < ids.size(); i++) {
255 this->
key_m->at(i) = ids[i];
272 for (
size_t i = 0; i < this->observed_values.
size(); i++) {
275 for (
size_t i = 0; i < this->expected_values.
size(); i++) {
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 =
311 " not found in Information.");
314 std::shared_ptr<fims_distributions::NormalLPDF<double>> dnorm =
315 std::dynamic_pointer_cast<fims_distributions::NormalLPDF<double>>(
320 size_t n_x = dnorm->get_n_x();
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) {
358 this->expected_values.
resize(n_x);
360 if (this->observed_values.
size() == 1) {
361 this->observed_values.
resize(n_x);
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) {
420 for (R_xlen_t i = 0; i < static_cast<R_xlen_t>(this->log_sd.
size()) - 1;
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>
446 bool add_to_fims_tmb_internal() {
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++) {
465 distribution->observed_values[i] =
466 this->observed_values[i].initial_value_m;
469 distribution->expected_values.
resize(this->expected_values.
size());
470 for (
size_t i = 0; i < this->expected_values.
size(); i++) {
471 distribution->expected_values[i] =
472 this->expected_values[i].initial_value_m;
474 distribution->log_sd.
resize(this->log_sd.
size());
475 for (
size_t i = 0; i < this->log_sd.
size(); i++) {
476 distribution->log_sd[i] = this->log_sd[i].initial_value_m;
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());
481 info->RegisterParameter(distribution->log_sd[i]);
483 if (this->log_sd[i].estimation_type_m.
get() ==
"random_effects") {
484 FIMS_ERROR_LOG(
"standard deviations cannot be set to random effects");
487 info->variable_map[this->log_sd.
id_m] = &(distribution)->
log_sd;
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());
498 info->RegisterParameter(distribution->expected_mean[i]);
500 if (this->expected_mean[i].estimation_type_m.
get() ==
"random_effects") {
504 info->variable_map[this->expected_mean.
id_m] =
507 info->density_components[distribution->id] = distribution;
517 this->add_to_fims_tmb_internal<TMB_FIMS_REAL_TYPE>();
518 this->add_to_fims_tmb_internal<TMBAD_FIMS_TYPE>();
560 std::make_shared<DlnormDistributionsInterface>(*
this);
606 Rcpp::IntegerVector ids) {
608 this->
key_m->resize(ids.size());
609 for (R_xlen_t i = 0; i < ids.size(); i++) {
610 this->
key_m->at(i) = ids[i];
627 for (
size_t i = 0; i < this->observed_values.
size(); i++) {
630 for (
size_t i = 0; i < this->expected_values.
size(); i++) {
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 =
662 " not found in Information.");
665 std::shared_ptr<fims_distributions::LogNormalLPDF<double>> dlnorm =
666 std::dynamic_pointer_cast<fims_distributions::LogNormalLPDF<double>>(
671 size_t n_x = dlnorm->get_n_x();
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) {
699 this->expected_values.
resize(n_x);
701 if (this->observed_values.
size() == 1) {
702 this->observed_values.
resize(n_x);
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) {
760 for (R_xlen_t i = 0; i < static_cast<R_xlen_t>(this->log_sd.
size()) - 1;
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>
786 bool add_to_fims_tmb_internal() {
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>>();
794 distribution->id = this->
id_m;
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++) {
804 distribution->observed_values[i] =
805 this->observed_values[i].initial_value_m;
808 distribution->expected_values.
resize(this->expected_values.
size());
809 for (
size_t i = 0; i < this->expected_values.
size(); i++) {
810 distribution->expected_values[i] =
811 this->expected_values[i].initial_value_m;
813 distribution->log_sd.
resize(this->log_sd.
size());
814 for (
size_t i = 0; i < this->log_sd.
size(); i++) {
815 distribution->log_sd[i] = this->log_sd[i].initial_value_m;
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());
820 info->RegisterParameter(distribution->log_sd[i]);
822 if (this->log_sd[i].estimation_type_m.
get() ==
"random_effects") {
823 FIMS_ERROR_LOG(
"standard deviations cannot be set to random effects");
826 info->variable_map[this->log_sd.
id_m] = &(distribution)->
log_sd;
828 info->density_components[distribution->id] = distribution;
838 this->add_to_fims_tmb_internal<TMB_FIMS_REAL_TYPE>();
839 this->add_to_fims_tmb_internal<TMBAD_FIMS_TYPE>();
885 std::make_shared<DmultinomDistributionsInterface>(*
this);
931 Rcpp::IntegerVector ids) {
933 this->
key_m->resize(ids.size());
934 for (R_xlen_t i = 0; i < ids.size(); i++) {
935 this->
key_m->at(i) = ids[i];
958 dmultinom.
observed_values[i] = this->observed_values[i].initial_value_m;
961 dmultinom.
expected_values[i] = this->expected_values[i].initial_value_m;
964 dmultinom.
dims[0] = this->dims[0];
965 dmultinom.
dims[1] = this->dims[1];
973 fims::to_string(this->
id_m) +
974 " has been finalized already.");
979 std::shared_ptr<fims_info::Information<double>> info =
989 " not found in Information.");
992 std::shared_ptr<fims_distributions::MultinomialLPMF<double>> dmultinom =
993 std::dynamic_pointer_cast<
998 size_t n_x = dmultinom->lpdf_vec.size();
999 this->lpdf_vec = Rcpp::NumericVector(n_x);
1000 if (this->expected_values.
size() != n_x) {
1001 this->expected_values.
resize(n_x);
1003 if (this->observed_values.
size() != n_x) {
1004 this->observed_values.
resize(n_x);
1006 for (
size_t i = 0; i < this->lpdf_vec.
size(); i++) {
1007 this->lpdf_vec[i] = dmultinom->lpdf_vec[i];
1008 this->expected_values[i].final_value_m = dmultinom->get_expected(i);
1009 if (dmultinom->input_type !=
"data") {
1010 this->observed_values[i].final_value_m = dmultinom->get_observed(i);
1013 if (dmultinom->input_type ==
"data") {
1015 dims[0] = dmultinom->dims[0];
1016 dims[1] = dmultinom->dims[1];
1017 for (
size_t i = 0; i <
dims[0]; i++) {
1018 for (
size_t j = 0; j <
dims[1]; j++) {
1019 size_t idx = (i *
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>
1092 bool add_to_fims_tmb_internal() {
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>>();
1099 distribution->id = this->
id_m;
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++) {
1108 distribution->observed_values[i] =
1109 this->observed_values[i].initial_value_m;
1112 distribution->expected_values.
resize(this->expected_values.
size());
1113 for (
size_t i = 0; i < this->expected_values.
size(); i++) {
1114 distribution->expected_values[i] =
1115 this->expected_values[i].initial_value_m;
1118 info->density_components[distribution->id] = distribution;
1123 this->add_to_fims_tmb_internal<TMB_FIMS_REAL_TYPE>();
1124 this->add_to_fims_tmb_internal<TMBAD_FIMS_TYPE>();
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
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
VariableVector 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 double evaluate()
Evaluate lognormal probability density function (pdf). The natural log of the pdf is returned.
Definition rcpp_distribution.hpp:621
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
VariableVector expected_values
The expected values, which would be the mean of log(x) for this distribution.
Definition rcpp_distribution.hpp:540
virtual ~DlnormDistributionsInterface()
The destructor.
Definition rcpp_distribution.hpp:580
VariableVector observed_values
Observed data.
Definition rcpp_distribution.hpp:535
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
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
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
VariableVector expected_values
The expected values, which should be a vector of length K where each value specifies the probability ...
Definition rcpp_distribution.hpp:862
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
VariableVector observed_values
Observed data, which should be a vector of length K of integers.
Definition rcpp_distribution.hpp:856
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
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
VariableVector observed_values
Observed data.
Definition rcpp_distribution.hpp:172
VariableVector 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
VariableVector log_sd
The uncertainty, which would be the standard deviation of x for the normal distribution.
Definition rcpp_distribution.hpp:187
virtual bool set_observed_data(int observed_data_id)
Set the unique ID for the observed data object.
Definition rcpp_distribution.hpp:232
virtual bool set_distribution_mean(double input_value)
Set the expected mean value for the distribution.
Definition rcpp_distribution.hpp:240
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
VariableVector expected_mean
The expected mean, which would be the mean of x for this distribution.
Definition rcpp_distribution.hpp:182
Base class for all interface objects.
Definition rcpp_interface_base.hpp:656
bool finalized
Is the object already finalized? The default is false.
Definition rcpp_interface_base.hpp:661
std::string value_to_string(double value)
Report the variable value as a string.
Definition rcpp_interface_base.hpp:697
static std::vector< std::shared_ptr< FIMSRcppInterfaceBase > > fims_interface_objects
FIMS interface object vectors.
Definition rcpp_interface_base.hpp:666
virtual bool add_to_fims_tmb()
A virtual method to inherit to add objects to the TMB model.
Definition rcpp_interface_base.hpp:671
An Rcpp interface class that defines the RealVector class.
Definition rcpp_interface_base.hpp:432
size_t size()
Returns the size of a RealVector.
Definition rcpp_interface_base.hpp:603
void resize(size_t size)
Resizes a RealVector to the desired length.
Definition rcpp_interface_base.hpp:610
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
An Rcpp interface class that defines the VariableVector class.
Definition rcpp_interface_base.hpp:144
Variable & get(size_t pos)
An internal accessor for calling a position of a VariableVector from R.
Definition rcpp_interface_base.hpp:267
uint32_t id_m
The local ID of the Variable object.
Definition rcpp_interface_base.hpp:157
void set(size_t pos, const Variable &p)
An internal setter for setting a position of a VariableVector from R.
Definition rcpp_interface_base.hpp:283
void resize(size_t size)
Resizes a VariableVector to the desired length.
Definition rcpp_interface_base.hpp:295
size_t size()
Returns the size of a VariableVector.
Definition rcpp_interface_base.hpp:288
void resize(size_t s)
Changes the number of elements stored.
Definition fims_vector.hpp:401
#define FIMS_WARNING_LOG(MESSAGE)
Definition def.hpp:648
#define FIMS_ERROR_LOG(MESSAGE)
Definition def.hpp:664
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
std::string use_mean
If "yes", expected_mean is used instead of expected_values. The default is "no" leading to the use of...
Definition density_components_base.hpp:72
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
fims::Vector< Type > expected_values
Expected value vector for prior-based pathways.
Definition density_components_base.hpp:44
fims::Vector< Type > expected_mean
The expected mean of the distribution; overrides expected values.
Definition density_components_base.hpp:66
Implements the LogNormalLPDF distribution functor used by FIMS to evaluate observation-level and tota...
Definition lognormal_lpdf.hpp:34
fims::Vector< Type > log_sd
Natural log of the standard deviation of the distribution on the log scale. The argument can be a vec...
Definition lognormal_lpdf.hpp:41
virtual const Type evaluate()
Evaluates the lognormal log probability density function.
Definition lognormal_lpdf.hpp:62
Implements the MultinomialLPMF distribution functor used by FIMS to evaluate the observation-level an...
Definition multinomial_lpmf.hpp:36
virtual const Type evaluate()
Evaluates the multinomial log probability mass function.
Definition multinomial_lpmf.hpp:62
fims::Vector< size_t > dims
Dimensions of the number of rows and columns of the multivariate dataset.
Definition multinomial_lpmf.hpp:41
Implements the NormalLPDF distribution functor used by FIMS to evaluate observation-level and total l...
Definition normal_lpdf.hpp:32
fims::Vector< Type > log_sd
The natural log of the standard deviation of the distribution. The argument can be a vector or scalar...
Definition normal_lpdf.hpp:39
virtual const Type evaluate()
Evaluates the normal log probability density function.
Definition normal_lpdf.hpp:59