Zika babies and women's life-history

Zika babies and women's life-history preview image

This model is seeking new collaborators — would you please help?

1 collaborator

Default-person John McKeown (Author)

Tags

fertility, birth, demography 

Tagged by John McKeown almost 9 years ago

Visible to everyone | Changeable by the author
Model was written in NetLogo 5.3.1 • Viewed 428 times • Downloaded 29 times • Run 0 times
Download the 'Zika babies and women's life-history' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


WHAT IS IT?

This models reproductive decisions during life history in a context of fear of malformed babies caused by an endemic virus. For topicality the word Zika is used but this does not attempt realistic simulation of the epidemiology of that virus.

Each agent represents one woman.

The agent's reproductive condition is colour-coded: white = susceptible to starting a pregnancy red = pregnant blue = postpartum infecundability (immediately after giving birth a new conception is unlikely) green = contracepting grey = after the menopause

For simplicity, the effect of breastfeeding on lowering the probability of conception is treated as temporary infertility added to the postpartum infecundability time.

All agents in the model cohort are potentially fertile, in a marital relationship, and susceptible to pregancy in any month until menopause unless affected by postpartum infecundability or using contraception.

The only environmental feature is an endemic virus. The agent's patch colour changes to brown when the agent is infected by the virus, and it returns to the background colour if she recovers.

Labels on each agent show five variables in this sequence left to right: age, parity, ideal-family-size, months-pregnant, months-postpartum. Comparing parity (number of offspring) and ideal-family-size lets you see if the agent has yet completed her family at the number she wished.

HOW IT WORKS

SETUP creates agents representing women, the number determined by variable n-agents, arranged in a preferential-attachment social network. For simplicity the cohort of women (perhaps contemporaries from one college) stays constant as they age, and no one dies.

GO simulates one month of reproductive life history. For each woman, if pregnant the months are counted until birth. If fertile but not pregnant a decision is made whether to use contraception in that month. Then viral status is updated with a chance of becoming infected, and also a chance for an infected person to recover. Each agent calculates her fear of a deformed birth, based on awareness of infection and deformed births affecting three categories of people - self, social neighbours, and other people - with personal experience weighted highest and non-neighbours' experiences weighted lowest. Then agents are coloured to indicate condition and labels are rewritten. After a test to stop the simulation, each agents has one month added to her age.

The test stops the simulation if everyone has either completed her family (had as many births as she wants) or become infertile by reaching menopause.

Agent variables

ideal-family-size (a target number of children) fear (level of perceived risk of a virus-affected birth) foolhardy (tendency to ignore risk

Counters age (in years, incremented at every 12th month tick) months-pregnant (number of months since conception) postpartum (number of months of infecundability after birth) parity (number of times a woman has given birth) bore-zika-baby (virus-affected babies born to this woman)

State contracepting? (using contraception this month) menopause? (menopause has happened) (when either is TRUE the woman will not become pregnant)

Derived variable fertile? (short for: [ postpartum > 0 OR contracepting? OR menopause? ] )

Environment variables culture-breastfeeding-maximum (the number of months beyond which breastfeeding is normally stopped) zika-monthly-recovery-chance (probability % of removing infection from woman agent)

Counters zika-births (the number of virus-affected babies among the cohort)

Agent actions

The decision to contracept first checks if the number of offspring has reached the agent's ideal family size. If so then contraception will be used until menopause.

The level of fear of virus effects is shaped by knowledge of infections and birth effects among close friends and (with a smaller degree of weighting) the wider cohort. If fear exceeds a threshold the agent will defensively contracept.

HOW TO USE IT

Before SETUP: n-agents slider sets the number of women. zika-prevalence slider sets the rate of viral infection. culture-ideal-family-size slider sets a norm, from which using a Poisson distribution each woman has an individualised target.

Try single GO steps initially to see pregnancies beginning, infections, contraceptive use decisions. Also inspect the labels. The numbers immediately left and right of a turtle are the counters for pregnancy and postpartum infecundability. The other numbers, starting leftmost, are age, ideal family size, and parity (number of offspring).

Since the cohort of women is fixed, and the simulation only ends when no agents want to or can give birth, the latter half of most runs will be mostly uneventful and I suggest increasing the Netlogo speed to maximum after around 120 months.

Inputs culture-ideal-family-size = typical aspiration regarding number of offspring. zika-prevalence = the rate at which people become infected by virus.

Outputs Any of the counters can be treated as outputs, but those plotted are total numbers of births and virus-affected births within this cohort of women.

THINGS TO NOTICE

Due to the Poisson distribution some women may have a zero ideal family size (childfree) and any such agents will start contracepting immediately.

THINGS TO TRY

Try adjusting the culture-ideal-family-size while infection chance is zero and see the outcomes.

Try adjusting the infection prevalence and see what effect it has.

EXTENDING THE MODEL

Immunity to the virus could be added. Currently a recovered person is susceptible to re-infection (or relapse) at the same rate as initially.

Age could affect the probability of conception.

The ages could be recorded at which each agent has first birth, second birth, etc. That would allow calculation of spacing (time intervals between births). Also could record the age at which menopause occurs.

The percentage of months spent in each condition (e.g. contracepting, pregnant, etc.) could be recorded for each agent.

The effect of breastfeeding is not guaranteed contraception but a reduced probability of conception, and over time that slowly increases. If realistic gradation were in place then the slider maximum breastfeeding duration could be raised to three years as was normal in some pre-modern cultures.

The minimum age for starting reproduction (21 years in model) could be adjusted.

NETLOGO FEATURES

The social network uses Netlogo's preferential attachment.

Poisson distribution is used for each agent's ideal-family-size.

Credits

Created using NetLogo version 5.3.1

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

extensions [ nw ]

globals [ culture-breastfeeding-maximum zika-monthly-recovery-chance zika-births ]

turtles-own [ age infected? contracepting? menopause? fertile? pregnant? months-pregnant months-postpartum breastfeeding ideal-family-size parity fear foolhardy bore-zika-baby ]

to setup
  clear-all
  set culture-breastfeeding-maximum 7
  set zika-monthly-recovery-chance 10
  set zika-births 0

  nw:generate-preferential-attachment turtles links n-agents [
;; initialise agent counters and Boolean variables
    set parity 0
    set months-pregnant 0
    set months-postpartum 0
    set pregnant? FALSE
    set menopause? FALSE
    set fertile? TRUE
    set contracepting? FALSE
    set infected? FALSE
    set bore-zika-baby 0
    set fear 0
    set foolhardy random 30
;; age of agent in years
    set age 21 + random 10
;; how many offspring agent wants
    set ideal-family-size random-poisson culture-ideal-family-size
    set shape "person"
    set color white
    setxy random-xcor random-ycor
    if show-labels? [
      set label (word age " " parity " " ideal-family-size " " months-pregnant " " months-postpartum)
    ]
  ]
  repeat 300 [ layout-spring turtles links 0.2 7 1.3 ]

  reset-ticks
end 

to go

  ask turtles [

;; pregnant women only
    ifelse pregnant? [
      set months-pregnant months-pregnant + 1
      if months-pregnant > 9 [
        birth
      ]
    ]

;; non-pregnant women
    [
      if months-postpartum > 0 [
        set fertile? FALSE
        set months-postpartum months-postpartum - 1
      ]
      ifelse menopause? [
        set fertile? FALSE
      ] [
        decide-contracept
      ]
      if fertile? [
        if random 100 > 90 [
          conceive
        ]
      ]
    ]

;; all women
    if infected? [
      if random 100 < zika-monthly-recovery-chance [
        set infected? FALSE
        set pcolor black
      ]
    ]
    if random 100 < zika-prevalence * 10 [
      set infected? TRUE
      set pcolor brown
    ]
    calculate-fear

    colour-status
    if show-labels? [
      set label (word age " " parity " " ideal-family-size " " months-pregnant " " months-postpartum)
    ]
  ] ;; end of main ask turtles

  if all? turtles [ menopause? = TRUE OR parity = ideal-family-size ] [
    stop
  ]
  age-increment
  tick
end 

to colour-status
    ifelse pregnant? [
       set color red
    ]
    [ if months-postpartum = 0 [
         set color white
      ]
    ]
    ifelse months-postpartum > 0 [
       set color blue
    ]
;; not postpartum
    [ if contracepting? [
         set color green
      ]
    ]
    if menopause? = TRUE [
       set color grey
    ]
end 

to conceive
  set pregnant? TRUE
  set months-pregnant 1
end 

to birth
  if infected? [
    zika-birth
  ]
;; add 1 to number of offspring ever birthed by this agent
  set parity parity + 1
  set pregnant? FALSE
  set months-pregnant 0
  set breastfeeding random culture-breastfeeding-maximum
;; number of months before agent regains possibility of conceiving
  set months-postpartum 1 + breastfeeding
end 

;; every 12th month, age of all agents is incremented by 1 year

to age-increment
  if ticks mod 12 = 0 [
    ask turtles [
      set age age + 1
;; annual check for menopause starting
      if menopause? = FALSE [
        if age > 40 [
          if random 100 < 10 [
            set menopause? TRUE
          ]
        ]
        if age > 50 [
          if random 100 < 50 [
            set menopause? TRUE
          ]
        ]
        if age > 55 [
          set menopause? TRUE
        ]
      ]
    ]
  ]
end 

to calculate-fear
;; initialise local variables
  let background 0
  let impact-of-self-infected 0
  let impact-of-self-bearing-zika-baby 0
  let n-friends-infected 0
  let impact-of-friend-infected 0
  let n-friends-had-zika-baby 0
  let impact-of-friend-having-zika-baby 0
  let n-others-had-zika-baby 0
  let impact-of-others-having-zika-baby 0

  set background ( zika-prevalence * 10 )

;; self is infected
  if infected? [ set impact-of-self-infected 30 ]

  if bore-zika-baby > 0 [ set impact-of-self-bearing-zika-baby 80 ]

;; friend is infected
  set n-friends-infected ( count link-neighbors with [ infected? ] )
  set impact-of-friend-infected ( n-friends-infected * 10 )

;; friend bore Zika baby
  set n-friends-had-zika-baby round ( sqrt count link-neighbors with [ bore-zika-baby > 0 ] )
  set impact-of-friend-having-zika-baby ( n-friends-had-zika-baby * 40 )

;; other bore Zika baby
  set n-others-had-zika-baby ( zika-births - n-friends-had-zika-baby )
  set impact-of-others-having-zika-baby ( round ( sqrt n-others-had-zika-baby * 10 ) )

  set fear background + impact-of-self-infected + impact-of-self-bearing-zika-baby + impact-of-friend-infected + impact-of-friend-having-zika-baby + impact-of-others-having-zika-baby - foolhardy

;; debugging the components of fear
;;  show ( word background " FI:" impact-of-friend-infected " FB:" impact-of-friend-having-zika-baby " O:" impact-of-others-having-zika-baby " R:-" foolhardy )
end 

to decide-contracept
  set contracepting? FALSE
  set fertile? TRUE
  let contracept? FALSE

;; family incomplete so maybe try for conception if not too risky
  ifelse parity < ideal-family-size [

    if random 100 < fear [
      set contracept? TRUE
    ]
  ]
;; family complete
  [
    set contracept? TRUE
  ]
  if contracept? [
    set contracepting? TRUE
    set fertile? FALSE
  ]
end 

to zika-birth
;; record that agent had a Zika-affected baby
  set bore-zika-baby bore-zika-baby + 1
;; increment cohort total
  set zika-births zika-births + 1
end 

There is only one version of this model, created almost 9 years ago by John McKeown.

Attached files

File Type Description Last updated
Zika babies and women's life-history.png preview Preview for 'Zika babies and women's life-history' almost 9 years ago, by John McKeown Download

This model does not have any ancestors.

This model does not have any descendants.