-
Notifications
You must be signed in to change notification settings - Fork 14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Older age groups (older than equilibrium age object) are not correctl… #301
Conversation
…y initiated. If outside of the age range, they get assigned 1 - the youngest age group. If we limit the max ages during these steps, we get something that is more accurate.
5be4fcf
to
d0854db
Compare
R/variables.R
Outdated
@@ -321,6 +321,8 @@ initial_immunity <- function( | |||
) { | |||
if (!is.null(eq)) { | |||
age <- age / 365 | |||
# older ages must be assigned within the equilibrium age bounds | |||
age[age>=max(eq[[1]][, 'age'])] <- max(eq[[1]][, 'age'])-0.01 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would adding a max_age
parameter to calculate_initial_ages()
and overwriting any initial ages > max_age in that function be a cleaner and clearer application?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That sounds reasonable - Michael's model uses a truncated exponential distribution to draw ages anyway, so it doesn't have the same issue. It probably wouldn't be unreasonable to switch over to that. @giovannic ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hmm, it seems right to sample from a truncated exponential here too. From a quick look at mrc-ide/malariasimulation, it would be consistent.
You could use the maximum age in EQUILIBRIUM_AGES as your upper bound. rtexp
in utils.R could do the sampling for you fyi.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure thing. So if we sample ages from the truncated exponential, there won't be an issue with individuals being outside the eq solution.
My only concern is the way that the initial age distribution would be different to the age distribution at model equilibrium, although maybe this wouldn't be a problem. MW also limits ages to the max equilibrium solution age, so maintains a truncated exp dist throughout, but this might not be consistent with our model...?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It should have very minimal impact as we're changing a very small proportion of the population
…move issues with state and immunity assignment when someone is older than the equilibrium solution.
I noticed that when individuals are older than the max equilbrium solution age group, the human states and immunity assignments doesn't know how to interpret it. It then assigns states and immunity using the youngest age group, which underestimates infection and acquired immunity, while overestimating maternal immunity in this age group (and explains why we often see an initial peak in maternal immunity). I've tried to correct this. Plots show the average over 10 simulations at the first timestep.
State plots (fewer S in age_correction (older)):
Immunity plots (slightly higher in acquired imm, lower in maternal):
And Immunities through time (averaged over 10 repetitions, EIR = 50):