Birth Number and Intervals

Birth Number and Intervals preview image

1 collaborator

Default-person Stephen Cranney (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by the author
Model was written in NetLogo 6.0.4 • Viewed 261 times • Downloaded 24 times • Run 0 times
Download the 'Birth Number and Intervals' 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 model simulates the growth of a "natural fertility" (no birth control) population. Agents age, reproduce, and die according to different parameters. Unlike other models that simulate reproduction, this one takes into account precise proximate determinants of fertility such as risk of pregnancy, risk of miscarriage, etc., making the model an accurate microsimulation of human natural fertility populations.

HOW IT WORKS

Every month, a female agent between the years of 15-45 has a certain probability of conceiving of a child if they are above their "marriage age." At five months pregnant (based on Preston, Heuveline, and Guillot 2000), every pregnancy risks a miscarriage. If there is a miscarriage the pregnancy is terminated and the agent is fertile again. If the agent does not miscarry, then at nine months the agent creates an offspring. The offspring is subjected to an "infant mortality" probability of dying at birth, is assigned a gender, and starts to age. Meanwhile, the parent continues to be infertile until a set number of postpartum months, after which they become fertile and are again subject to the possibility of conceiving a child.

HOW TO USE IT

Every tick is worth one month. Consequently, the agent age is considered in terms of months. However, the marriage age, life expectancy, and "run length" of the program, all of which are controlled with sliders, are in years. This program follows the older demographic convention of referring to the age of initiation of sex as "marriage age." This is done as a shorthand way of referring to the age at which the agent is consistently exposed to the risk of pregnancy.

To provide maximum control over the starting population, the ages and genders of the starting agents are initialized in the code itself. All agents have a "monthspreg" ("months pregnant") score of -1 until they become pregnant, at which time it becomes a 0. The infantmortality, percfemaleatbirth, and perc_miscarriage sliders are all percentage probabilities of infants dying, the offspring being female, and the probability of a miscarriage, respectively.

The fertility (.2), miscarriage probability (.2), and the postpartum infertility time period (7.5) are all initialized to values based on Preston, Heuveline, and Guillot (2000). Percentage female at birth is derived from average sex ratios at birth for countries that do not report significant female infanticide. Breastfeeding and other behaviors may alter these parameters and may need to be modified accordingly.

THINGS TO NOTICE

Remember to make sure that agent age is treated in months while the other time parameters are all considered in terms of years.

THINGS TO TRY

This model is particularly useful in concert with BehaviorSpace. Specifically, the model can be run multiple times in order to derive an average total fertility rate, population pyramids, or other measures, and the parameters can be modified in order to examine the effects of different changes on these demographic characteristics.

If the sum total offspring of the founding set of agents is desired, and not just the fertility of the females for the calculation of TFR and other purposes, set the percentage female to 100. This way all members are capable of reproducing.

NETLOGO FEATURES

This code is relatively simple, relying on random functions, hatching, and a series of "if" statements.

RELATED MODELS

This model is comparable to any of the other NetLogo models that simulate reproduction.

CREDITS AND REFERENCES

Preston, Samuel, Patrick Heuveline, and Michel Guillot. "Demography: measuring and modeling population processes." (2000). Wiley-Blackwell.

Comments and Questions

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

Click to Run Model

turtles-own [age female monthspreg miscarriagenum birthnum]

to setup
  clear-all
  create-turtles 11 [ setxy random-xcor random-ycor ]
  set postpartum_infertility 8
  set marriage_age 15
  set perc_female_at_birth 49
  set fertility 20
  set runlength 55
  set perc_miscarriage 20
  set life_expectancy 45
  ask turtle 10 [set age -24 set female 1 set monthspreg -1 set birthnum 0]
  ask turtle 9 [set age 0 set female 1 set monthspreg -1 set birthnum 0]
  ask turtle 8 [set age 264 set female 1 set monthspreg -1 set birthnum 0]
  ask turtle 7 [set age 192 set female 1 set monthspreg -1 set birthnum 0]
  ask turtle 5 [set age 192 set female 1 set monthspreg -1 set birthnum 0]
  ask turtle 6 [set age 168 set female 1 set monthspreg -1 set birthnum 0]
  ask turtle 0 [set age 192 set female 1 set monthspreg -1 set birthnum 0]
  ask turtle 1 [set age 216 set female 1 set monthspreg -1 set birthnum 0]
  ask turtle 2 [set age 240 set female 1 set monthspreg -1 set birthnum 0]
  ask turtle 3 [set age 264 set female 1 set monthspreg -1 set birthnum 0]
  ask turtle 4 [set age 288 set female 1 set monthspreg -1 set birthnum 4]
  reset-ticks
end 

to go
  tick
  if ticks >= (runlength * 12) [ stop ]
  ask turtles [increment-age]
  ask turtles [increment-monthspreg]
  ask turtles [conceive]
  ask turtles [miscarry]
  ask turtles [birth]
  ask turtles [dopostpartum]
  ask turtles [check-death]
                 ;; increase the tick counter by 1 each time through
end 

to increment-age
  set age (1 + age)
end 

to increment-monthspreg
  if monthspreg > -1 [
      set monthspreg (1 + monthspreg)]
end 

to conceive
    if random 100 <= fertility and monthspreg = -1 and female = 1 and age >= (marriage_age * 12 ) and age <= 540 ; 15-45
      [set monthspreg 0  ]
end 

to miscarry
    if random 100 < perc_miscarriage and monthspreg = 5 and female = 1
    [set monthspreg -1 set miscarriagenum (1 + miscarriagenum)]
end 

to birth
  if monthspreg = 9 and female = 1 and random 100 >= infant_mortality [
    hatch 1 [
      set birthnum (1 + birthnum)
      set age 0
      setxy random-xcor random-ycor
      ifelse random 100 < perc_female_at_birth [set female 1] [set female 0]]
    ]
end 

to dopostpartum
  if monthspreg = 9 + postpartum_infertility
  [set monthspreg -1]
end 

to check-death
    if age = (life_expectancy / 12) [ die ] ;; Dies once they hit life expectancy
end 

There is only one version of this model, created almost 7 years ago by Stephen Cranney.

Attached files

File Type Description Last updated
Birth Number and Intervals.png preview Preview for 'Birth Number and Intervals' almost 7 years ago, by Stephen Cranney Download

This model does not have any ancestors.

This model does not have any descendants.