Health-GPS  1.2.2.0
Global Health Policy Simulation model (Health-GPS)
hierarchical_model_static.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "interfaces.h"
4 #include "mapping.h"
5 
6 namespace hgps {
7 
9 struct Coefficient {
11  double value{};
12 
14  double pvalue{};
15 
17  double tvalue{};
18 
20  double std_error{};
21 };
22 
24 struct LinearModel {
26  std::unordered_map<core::Identifier, Coefficient> coefficients;
27 
30 
32  double rsquared{};
33 };
34 
37 
39  std::unordered_map<core::Identifier, int> variables;
40 
43 
46 
49 
52 
54  std::vector<double> variances;
55 };
56 
62  public:
66  StaticHierarchicalLinearModel(const std::unordered_map<core::Identifier, LinearModel> &models,
67  const std::map<int, HierarchicalLevel> &levels);
68 
69  HierarchicalModelType type() const noexcept override;
70 
71  std::string name() const noexcept override;
72 
73  void generate_risk_factors(RuntimeContext &context) override;
74 
75  void update_risk_factors(RuntimeContext &context) override;
76 
77  private:
78  const std::unordered_map<core::Identifier, LinearModel> &models_;
79  const std::map<int, HierarchicalLevel> &levels_;
80 
81  void generate_for_entity(RuntimeContext &context, Person &entity, int level,
82  std::vector<MappingEntry> &level_factors);
83 };
84 
87  public:
93  std::unordered_map<core::Identifier, LinearModel> linear_models,
94  std::map<int, HierarchicalLevel> model_levels);
95 
98  std::unique_ptr<HierarchicalLinearModel> create_model() const override;
99 
100  private:
101  std::unordered_map<core::Identifier, LinearModel> models_;
102  std::map<int, HierarchicalLevel> levels_;
103 };
104 
105 } // namespace hgps
Defines the full hierarchical linear model data type.
Definition: hierarchical_model_static.h:86
HierarchicalLinearModelDefinition(std::unordered_map< core::Identifier, LinearModel > linear_models, std::map< int, HierarchicalLevel > model_levels)
Initialises a new instance of the HierarchicalLinearModelDefinition class.
Definition: hierarchical_model_static.cpp:123
std::unique_ptr< HierarchicalLinearModel > create_model() const override
Construct a new StaticHierarchicalLinearModel from this definition.
Definition: hierarchical_model_static.cpp:138
Hierarchical linear model interface.
Definition: interfaces.h:137
Risk factor model definition interface.
Definition: interfaces.h:160
Defines the Simulation runtime context data type.
Definition: runtime_context.h:21
Implements the static hierarchical linear model type.
Definition: hierarchical_model_static.h:61
void update_risk_factors(RuntimeContext &context) override
Update risk factors for population.
Definition: hierarchical_model_static.cpp:44
StaticHierarchicalLinearModel(const std::unordered_map< core::Identifier, LinearModel > &models, const std::map< int, HierarchicalLevel > &levels)
Initialises a new instance of the StaticHierarchicalLinearModel class.
Definition: hierarchical_model_static.cpp:6
std::string name() const noexcept override
Gets the model name.
Definition: hierarchical_model_static.cpp:25
HierarchicalModelType type() const noexcept override
Gets the model type identifier.
Definition: hierarchical_model_static.cpp:21
void generate_risk_factors(RuntimeContext &context) override
Generates the initial risk factors for a population and newborns.
Definition: hierarchical_model_static.cpp:27
Defines a contiguous storage for two-dimensional numerical data in row-major format.
Definition: array2d.h:15
Top-level namespace for Health-GPS C++ API.
Definition: analysis_definition.h:8
HierarchicalModelType
Health GPS risk factor module types enumeration.
Definition: interfaces.h:29
Regression coefficients data type.
Definition: hierarchical_model_static.h:9
double value
The coefficient value.
Definition: hierarchical_model_static.h:11
double std_error
Associated standard error.
Definition: hierarchical_model_static.h:20
double tvalue
Associated t-value.
Definition: hierarchical_model_static.h:17
double pvalue
Associated p-value.
Definition: hierarchical_model_static.h:14
Defines a hierarchical level data type.
Definition: hierarchical_model_static.h:36
core::DoubleArray2D residual_distribution
The residuals distribution.
Definition: hierarchical_model_static.h:48
core::DoubleArray2D inverse_transition
The inverse transition matrix.
Definition: hierarchical_model_static.h:45
core::DoubleArray2D transition
The transition matrix.
Definition: hierarchical_model_static.h:42
core::DoubleArray2D correlation
The correlation matrix.
Definition: hierarchical_model_static.h:51
std::vector< double > variances
The associated variance.
Definition: hierarchical_model_static.h:54
std::unordered_map< core::Identifier, int > variables
The level variables.
Definition: hierarchical_model_static.h:39
Defines a linear regression model data type.
Definition: hierarchical_model_static.h:24
double residuals_standard_deviation
The residuals standard deviation value.
Definition: hierarchical_model_static.h:29
double rsquared
The R squared value.
Definition: hierarchical_model_static.h:32
std::unordered_map< core::Identifier, Coefficient > coefficients
The model coefficients.
Definition: hierarchical_model_static.h:26
Defines a virtual population person data type.
Definition: person.h:40