Previously, annual program impacts were considered in analogous format to annual transition probabilities for a parameter.
This led to very counterintuitive behaviour as an annual 'probabilistic' coverage of 90% meant that 90% of people in a program-targeted compartment would transition after one year; people flowing into the compartment over ensuing timesteps would also have a chance of transitioning by the end of the year, leading to effective rates that could be 160% of those in a compartment at a point in time.
This branch reinterprets annual program impacts as 'effective' flow, rather than 'probabilistic', which is what users would usually assume.
Accordingly, the majority of changes have been made to model.py and reconciliation.py in order to down-convert program impacts from effective annual values to effective dt-ly values, and then up-convert them into annual transition probabilities that align with calibration parameter formats.
Previously, annual program impacts were considered in analogous format to annual transition probabilities for a parameter. This led to very counterintuitive behaviour as an annual 'probabilistic' coverage of 90% meant that 90% of people in a program-targeted compartment would transition after one year; people flowing into the compartment over ensuing timesteps would also have a chance of transitioning by the end of the year, leading to effective rates that could be 160% of those in a compartment at a point in time. This branch reinterprets annual program impacts as 'effective' flow, rather than 'probabilistic', which is what users would usually assume. Accordingly, the majority of changes have been made to model.py and reconciliation.py in order to down-convert program impacts from effective annual values to effective dt-ly values, and then up-convert them into annual transition probabilities that align with calibration parameter formats.