Because newborns cannot choose where to be born, human reproduction is in essence unfair. Within Europe, already a high-income part of the world, life expectancy for women ranges from 76 years in Serbia to 83 years in France, which is not expected to decrease [1]. Also within countries such as the Netherlands, life-expectancy at birth for women ranges between 79 and 82 years [2]. A healthy start of life is an important determinant of long-term health outcomes, probably explaining large part of this variation [3].
The relationship between socio-economical status and pregnancy-related outcomes is complex. Preterm birth and intra-uterine growth restriction, both relevant disadvantageous fetal outcomes, occur more frequently in mothers of lower socio-economical status [4,5]: Living in deprived neighbourhoods is associated with 23% higher rates of preterm delivery, and 31% higher rates of small-for-gestational age newborns [6]. However, advanced maternal age -typically the result of higher socio-economic status- also affects a range of pregnancy outcomes, although the effects of age on outcome is again even more unfavourable in women of lower socio-economical status [7]. The relationship between socio-economical status of mother and pregnancy outcomes is complex, partially because the effects play out over both mother and child.
Framework how socio-economic factors influence the reproductory health of women, and the general health of their children.
Microsimulation models have been established methods to study complex health relationships such as these [8]. These models are able to evaluate various policy strategies, and provide policy-makers with necessary information to make the right choices. An illustrative is the MISCAN model [9], which was able to provide the necessary information to design and implement efficient population screening strategies for various cancer types. However, these models might also be used for etiological purposes, to causally infer specific parameters based on structural assumptions.
The following project entails the development and the validation of a microsimulation model for pregnancy outcomes in the Netherlands, allowing for socio-economical dependent outcomes. The main goal is to transparantly evaluate public health or social interventions on obstetric outcomes. Secondly, by the open development of such a model, we might already be able to gain more insight in the complex relationships at play.
Below, I present the model structure for the overall model. The model is based on published code [10].
State-transition model diagram of WomenSim, with cycle length of 1 year. MP = menopausal.
Women start in the pre-menopausal state, at the age of menarche (first menstrual cycle). The model evaluates the life of women per year (cycle length is one year). All bubbles in this figure represent health state, with the exception of the bubble for child. Women can transition between all health states. For example, a pre-menopausal woman gets pregnant (which at maximum, lasts a year, thus 1 cycle), returns to the pre-menopausal state, finally goes through menopause (transitions to the post-menopausal state) and dies (dead state).
During this simulation, the following personal “history” is collected, which affects the model itself:
In the Netherlands, obstetric and reproductive data is collected within a national perinatal registration [11]. Data from this registration will be used for the model.
# Model input
n.i <- 100000 # number of simulated individuals
n.t <- 33 # time horizon, 33 cycles (12-55 years)
v.n <- c("PMP","MPP","P","D")# the model states: Pre-menopausal (PMP), Post-menopausal (MPP), Pregnanat (P), Dead (D)
n.s <- length(v.n) # the number of health states
v.M_1 <- rep("PMP", n.i) # everyone begins in the pre-menopausal state
d.c <- d.e <- 0.03 # equal discounting of costs and QALYs by 3%
v.Trt <- c("No Treatment", "Treatment") # store the strategy names
# Transition probabilities (per cycle)
p.PMP_D <- 0.005 # probability to die when premenopausal
p.MPP_D <- 0.010 # probability to die when postmenopausal
p.PMP_P <- 0.05 # probability to become pregnant when premenopausal
p.MPP_P <- 0 # probability to become pregnant when postmenopausal
p.P_PMP <- 1 # probability to return to premopausal when pregnant
p.PMP_MPP_b40 <- 0.0001 # probability to go through menopause before age 40
p.PMP_MPP_a40 <- 0.2 # probability to go through menopause after age 40
rr.tx <- 2 # relative risk of getting pregnant because of treatment
# Cost and utility inputs
c.PMP <- 2000 # cost of remaining one cycle as premenopausal women
c.P <- 4000 # cost of remaining one cycle pregnant
c.MPP <- 15000 # cost of remaining one cycle as post-menopausal women
c.Trt <- 12000 # cost of treatment (per cycle), can only be given in premenopausal state
u.PMP <- 1 # utility when pre-menopausal
u.P <- 0.8 # utility when pregnant
u.MPP <- 0.9 # utility when post-menopausal
u.Trt <- 0.95 # utility when being treated
This model considers treating the pre-menopausal with a hypothetical drug which increases fertility (increases the probability of transitioning from the pre-menopausal to the pregnant state).
source("R/MicroSim.R")
##################################### Run the simulation ##################################
sim_no_trt <- MicroSim(v.M_1, n.i, n.t, v.n, d.c, d.e, Trt = FALSE) # run for no treatment
sim_trt <- MicroSim(v.M_1, n.i, n.t, v.n, d.c, d.e, Trt = TRUE) # run for treatment
################################# Cost-effectiveness analysis #############################
# store the mean costs (and the MCSE) of each strategy in a new variable C (vector costs)
v.C <- c(sim_no_trt$tc_hat, sim_trt$tc_hat)
sd.C <- c(sd(sim_no_trt$tc), sd(sim_trt$tc)) / sqrt(n.i)
# store the mean QALYs (and the MCSE) of each strategy in a new variable E (vector effects)
v.E <- c(sim_no_trt$te_hat, sim_trt$te_hat)
sd.E <- c(sd(sim_no_trt$te), sd(sim_trt$te)) / sqrt(n.i)
delta.C <- v.C[2] - v.C[1] # calculate incremental costs
delta.E <- v.E[2] - v.E[1] # calculate incremental QALYs
sd.delta.E <- sd(sim_trt$te - sim_no_trt$te) / sqrt(n.i) # Monte Carlo Squared Error (MCSE) of incremental costs
sd.delta.C <- sd(sim_trt$tc - sim_no_trt$tc) / sqrt(n.i) # Monte Carlo Squared Error (MCSE) of incremental QALYs
ICER <- delta.C / delta.E # calculate the ICER
results <- c(delta.C, delta.E, ICER) # store the values in a new variable
# Create full incremental cost-effectiveness analysis table
table_micro <- data.frame(
c(round(v.C, 0), ""), # costs per arm
c(round(sd.C, 0), ""), # MCSE for costs
c(round(v.E, 3), ""), # health outcomes per arm
c(round(sd.E, 3), ""), # MCSE for health outcomes
c("", round(delta.C, 0), ""), # incremental costs
c("", round(sd.delta.C, 0),""), # MCSE for incremental costs
c("", round(delta.E, 3), ""), # incremental QALYs
c("", round(sd.delta.E, 3),""), # MCSE for health outcomes (QALYs) gained
c("", round(ICER, 0), "") # ICER
)
rownames(table_micro) <- c(v.Trt, "* are MCSE values") # name the rows
colnames(table_micro) <- c("Costs", "*", "QALYs", "*", "Incremental Costs", "*", "QALYs Gained", "*", "ICER") # name the columns
kable(table_micro) # print the table
| Costs | * | QALYs | * | Incremental Costs | * | QALYs Gained | * | ICER | |
|---|---|---|---|---|---|---|---|---|---|
| No Treatment | 52683 | 53 | 20.161 | 0.012 | |||||
| Treatment | 270007 | 166 | 19.15 | 0.012 | 217324 | 137 | -1.01 | 0.003 | -215075 |
| * are MCSE values |
## Print obstetric outcomes
df_obsout <- data.frame(fraction = c(sim_no_trt$TR[,"PMP"],
sim_no_trt$TR[,"MPP"],
sim_no_trt$TR[,"P"],
sim_no_trt$TR[,"D"],
sim_trt$TR[,"PMP"],
sim_trt$TR[,"MPP"],
sim_trt$TR[,"P"],
sim_trt$TR[,"D"]),
hs = rep(v.n, each=n.t+1),
Trt = rep(c("no_trt","trt"), each=(n.t+1)*n.s),
t = 0:n.t
)
df_obsout$hs <- factor(df_obsout$hs, levels=v.n)
levels(df_obsout$hs) <- c("Pre-menopausal","Post-menopausal","Pregnant","Dead")
ggplot(df_obsout, aes(x=t+12, y=fraction, lty=Trt, col=hs))+
geom_line()+
labs(lty="Treatment", y="Fraction of population", col="Health state", x="Age")+
scale_colour_brewer(palette = "Set1")+
theme_bw()
# Number of children born
m.notrt <- data.frame(sim_no_trt$m.M)
child_notrt <- apply(m.notrt, 1, function(x){return(sum(x=="P"))})
m.trt <- data.frame(sim_trt$m.M)
child_trt <- apply(m.trt, 1, function(x){return(sum(x=="P"))})
df_children <- data.frame(children=c(child_notrt, child_trt), trt=rep(c("no_trt","trt"), each=n.i))
ggplot(df_children, aes(x=children, fill=trt))+
geom_histogram(position = position_dodge(1), binwidth = 1)+
labs(fill="Treatment", x="Number of children (parity)", y="Fraction of mothers")+
scale_fill_brewer(palette = "Set1")+
theme_bw()
[1] Kontis V, Bennett JE, Mathers CD, Li G, Foreman K, Ezzati M. Future life expectancy in 35 industrialised countries: Projections with a bayesian model ensemble. The Lancet 2017;389:1323–35.
[2] Groenewegen PP, Westert GP, Boshuizen HC. Regional differences in healthy life expectancy in the netherlands. Public Health 2003;117:424–9.
[3] Lawn JE, Blencowe H, Oza S, You D, Lee AC, Waiswa P, et al. Every newborn: Progress, priorities, and potential beyond survival. The Lancet 2014;384:189–205.
[4] Kramer MS, Séguin L, Lydon J, Goulet L. Socio-economic disparities in pregnancy outcome: Why do the poor fare so poorly? Paediatric and Perinatal Epidemiology 2000;14:194–210.
[5] Graaf JP de, Steegers EA, Bonsel GJ. Inequalities in perinatal and maternal health. Current Opinion in Obstetrics and Gynecology 2013;25:98–108.
[6] Vos AA, Posthumus AG, Bonsel GJ, Steegers EA, Denktaş S. Deprived neighborhoods and adverse perinatal outcome: A systematic review and meta-analysis. Acta Obstetricia et Gynecologica Scandinavica 2014;93:727–40.
[7] Kenny LC, Lavender T, McNamee R, O’Neill SM, Mills T, Khashan AS. Advanced maternal age and adverse pregnancy outcome: Evidence from a large contemporary cohort. PloS One 2013;8:e56583.
[8] Rutter CM, Zaslavsky AM, Feuer EJ. Dynamic microsimulation models for health outcomes: A review. Medical Decision Making 2011;31:10–8.
[9] Habbema J, Van Oortmarssen G, Lubbe JTN, Van der Maas P. The miscan simulation program for the evaluation of screening for disease. Computer Methods and Programs in Biomedicine 1985;20:79–93.
[10] Krijkamp EM, Alarid-Escudero F, Enns EA, Jalal HJ, Hunink MM, Pechlivanoglou P. Microsimulation modeling for health decision sciences using r: A tutorial. Medical Decision Making 2018;38:400–22.
[11] Dijs-Elsinga J, Huis AM van, Miranda E de, Tamminga P, Verdonk-Wesenbeek MJH, Winter GA de. 10 jaar Perinatale Registratie Nederland, de grote lijnen. 2011.
Erasmus MC, b.gravesteijn@erasmusmc.nl↩︎