Stride Reference Manual  1.0
HBM.h
Go to the documentation of this file.
1 /*
2  * HBM.h
3  *
4  * Created on: Apr 20, 2017
5  * Author: elise
6  */
7 
8 #pragma once
9 
10 #include "core/Health.h"
11 #include "util/RNG.h"
13 
14 #include <cmath>
15 
16 namespace stride {
17 
18 template<typename BehaviourPolicy, typename BeliefPolicy>
19 class Person;
20 
21 /*
22  * p(behaviour) = OR0 * (OR1^x1 * OR2^x2 * OR3^x3 * OR4^x4)/ (1 + OR0 * (prod ORi^xi))
23  */
24 
25 class HBM {
26 public:
27  using Data = HBMData;
28 
29  static void update(Data& belief_data, Health& health_data) {
30 
31  }
32 
33  template<typename BehaviourPolicy>
34  static void update(Data& belief_data, const Person<BehaviourPolicy, HBM>* p) {
35 
36  }
37 
38  static bool hasAdopted(const Data& belief_data) {
39  int perceived_severity = belief_data.GetPerceivedSeverity();
40  int perceived_susceptibility = belief_data.GetPerceivedSusceptibility();
41  int perceived_benefit = belief_data.GetPerceivedBenefit();
42  int perceived_barriers = belief_data.GetPerceivedBarriers();
43  double odds = m_odds_ratio_0 * std::pow(m_odds_ratio_severity, perceived_severity)
44  * std::pow(m_odds_ratio_susceptibility, perceived_susceptibility)
45  * std::pow(m_odds_ratio_benefit, perceived_benefit)
46  * std::pow(m_odds_ratio_benefit, perceived_barriers);
47  double p_behaviour = odds / (1 + odds);
48  return p_behaviour >= 0.5;
49  }
50 
51 private:
52  static const double m_odds_ratio_0 = -1;
53  static const double m_odds_ratio_severity = 0.626;
54  static const double m_odds_ratio_susceptibility = 1.07;
55  static const double m_odds_ratio_benefit = 0;
56  static const double m_odds_ratio_barriers = -0.4;
57 };
58 
59 }
60 
static const double m_odds_ratio_barriers
Definition: HBM.h:56
static const double m_odds_ratio_susceptibility
Definition: HBM.h:54
static const double m_odds_ratio_benefit
Definition: HBM.h:55
static const double m_odds_ratio_severity
Definition: HBM.h:53
static void update(Data &belief_data, Health &health_data)
Definition: HBM.h:29
Time Dependent Person DataType.
Definition: NoBehaviour.h:17
static void update(Data &belief_data, const Person< BehaviourPolicy, HBM > *p)
Definition: HBM.h:34
Forward declaration of class Person.
Definition: ThresholdData.h:15
static bool hasAdopted(const Data &belief_data)
Definition: HBM.h:38
static const double m_odds_ratio_0
Definition: HBM.h:52