BDDHS preliminary data analysis

Getting started

Here we show the pre-requisite code sections. Run these at the outset to avoid errors. First we load the required packages.

easypackages::libraries(
    
    # Data i/o
    "here",                 # relative file path
    "rio",                  # file import-export
    
    # Data manipulation
    "janitor",              # data cleaning fns
    "haven",                # stata, sas, spss data io
    "labelled",             # var labelling
    "readxl",               # excel sheets
    # "scales",               # to change formats and units
    "skimr",                # quick data summary
    "broom",                # view model results
    
    # Data analysis
    "DHS.rates",            # demographic rates for dhs-like surveys
    "GeneralOaxaca",        # BO decomposition for non-linear
    "survey",               # apply survey weights
    "survival",             # base pkg for survival analysis
    
    # Analysis output
    "gt",
    # "modelsummary",          # output summary tables
    "gtsummary",            # output summary tables
    "flextable",            # creating tables from objects
    "officer",              # editing in office docs
    
    # R graph related packages
    "ggstats",              # graph of regression estimates
    "RColorBrewer",         # graph themes
    # "scales",
    "patchwork",            # combining graphs
    
    # Misc packages
    "tidyverse",            # Data manipulation iron man
    "tictoc"                # Code timing
)

Next we turn off scientific notations.

options(scipen = 999)

Next we set the default gtsummary print engine for tables.

theme_gtsummary_printer(print_engine = "flextable")

Now we set the flextable output defaults.

set_flextable_defaults(
  font.size = 11,
  text.align = "left",
  big.mark = "",
  background.color = "white",
  table.layout = "autofit",
  theme_fun = theme_vanilla
)

Document introduction

In this document we do preliminary analysis of examining infant mortality clustering under mothers in the pooled Bangladesh Demographic and Health Survey (BDDHS) datasets. This document has selected code for analysis and the full spectrum of preliminary analysis are available in the “bddhs_datanal1.R” script file.

Data source

Here we use the pooled dataset of 9 existing rounds of Bangladesh Demographic and Health Survey (BDDHS) conducted during 1993, 1996, 1999, 2004, 2007, 2011, 2014, 2017 and 2022. The BDDHS implemented a multi-stage cluster sampling design. Details regarding the sample design, survey instruments, informed consent, training of interviewers and other fieldwork officers, data collection and processing, and response rates are available in the final report of the respective surveys.

We pooled the raw birth histories of ever-married women in the reproductive age group (15-49 years) across all the pre-specified rounds. We manually harmonized all required datasets so that our study variables have consistent categorisation and label codes across the surveys. The pooled dataset harmonization and pooling codes are in “bddhsv2_daprep.R”. Also, we have a variable harmonization documentation called “bddhs_datapl1_pre.html” which shows how the variable labels and label codes vary across the raw BDDHS datasets.

Now, please note that the following Bangladesh DHS surveys were pooled:

# Creating the table of surveys to be used for pooling
bdbr1_tmp_intro |> 
  mutate(n_births = prettyNum(n_births, big.mark = ",")) |> 
  select(c(ctr_name, svy_year, n_births)) |> 
    # Join vars from bdhr_tmp_intro
    left_join(
        bdhr1_tmp_intro |> 
          mutate(n_households = prettyNum(n_households, big.mark = ",")) |> 
          select(svy_year, n_households),
        by = join_by(svy_year)
    ) |> 
    # Join vars from bdpr_tmp_intro
    left_join(
        bdpr1_tmp_intro |> 
          mutate(n_persons = prettyNum(n_persons, big.mark = ",")) |> 
          select(svy_year, n_persons),
        by = join_by(svy_year)
    ) |> 
    # convert nested tibble to simple tibble
    unnest(cols = c()) |> 
    mutate(
        ccode = row_number(), 
        .before = ctr_name
    ) |> 
    # convert to flextable object
    qflextable() |> 
    theme_vanilla() |> 
    align(align = "left", part = "all")
Table 1: Bangladesh DHS datasets and their sample size to be used for pooling

ccode

ctr_name

svy_year

n_births

n_households

n_persons

1

Bangladesh

1993

32,581

9,174

51,631

2

Bangladesh

1996

29,344

8,682

47,432

3

Bangladesh

1999

31,906

9,854

54,627

4

Bangladesh

2004

33,597

10,500

55,883

5

Bangladesh

2007

30,527

10,400

53,413

6

Bangladesh

2011

45,833

17,141

83,731

7

Bangladesh

2014

43,772

17,300

81,624

8

Bangladesh

2017

47,828

19,457

89,819

9

Bangladesh

2022

64,722

30,018

132,463

Note that the information on birth histories was available for 164,761 children. The current study utilised pooled retrospective birth histories of children born between 1970 to 2022 (till the interview date). Therefore, the analytical sample size of this study is 163,544 children.

Study variables

We use the following variables for the pooled data analysis:

  • Dependent variable
    • infantd = Index child died during infancy period (0-11 months)
  • Main Independent variable
    • sibsurv_nmv = Survival status of preceding child (Death scarring)
    • binterval_3c_nmv_opp = Birth interval preceding to index child
  • Independent variables [CHILD LEVEL]
    • cyob10y_opp = Birth cohort of index child
    • bord_c = Birth order of index child
    • sex_fm = Gender of index child
    • season = Season during birth
  • Independent variables [MOTHER/PARENT LEVEL]
    • myob_opp = Birth cohort of mother
    • macb_c_opp = Mother’s age during birth of index child
    • medu_opp = Mother’s Level of education
    • fedu_opp = Father’s level of education
  • Independent variables [HOUSEHOLD LEVEL]
    • religion = Religion
    • nat_lang = Native language of respondent
    • wi_qt_opp = Household wealth quintile
    • hhgen_2c_opp = Generations in household
    • hhstruc_opp = Household structure
    • head_sex_fm = Sex of HH head
  • Independent variables [COMMUNITY LEVEL]
    • por = Place of residence of the household
    • ecoreg = Ecological region

Note: (a) Crossed names indicates variable not included.

Statistical methods

We first conducted descriptive analysis to examine the absolute and percentage distribution of births by background characteristics in the pooled dataset. Next we explored the distribution of infant mortality by birth cohorts and survey periods. Also, we examined the trend in childhood mortality (neonatal, infant and under-five mortality) rates across the Bangladesh DHS survey rounds. Next, we performed bivariate analysis to assess the unadjusted relationship between infant mortality and the main independent variables using the chi-square test for association. To estimate the adjusted associations, we applied multivariable logistic regression models on the pooled dataset covering 1970-2022.

Data import

We will directly import the prepared dataset for analysis here. The code for dataset preparation is in the “bddhsv2_daprep.R” script file.

# Importing the pooled bdbr tibble
bdbr1_pl1 <- read_rds(
    file = here("website_data", "bdbr1_pl1.rds")
)

# Prepare the survey weighted dataset
options(survey.lonely.psu = "adjust")
options(survey.adjust.domain.lonely = T)
svy_bdbr1_pl1 <- svydesign(
    data = bdbr1_pl1,
    ids = ~ as.numeric(svy_psu),
    strata = ~ as.numeric(svy_strata),
    weight = ~ svy_wwgt6,
    probs = NULL,
    nest = T
)

Descriptive analysis

Sample distribution of births

We will check the distribution of births by background characteristics in Bangladesh 1970-2022.

# Now, we merge the unweighted and weighted tables and view it
t1 <- tbl_merge(
    tbls = list(t1_wt, t1_ut),
    tab_spanner = c("**Weighted**", "**Unweighted**")
) |> 
    modify_footnote(
        stat_0_1 ~ "n (%) = Distribution and column percentage (weighted);",
        stat_0_2 ~ "n (%) = Distribution and column percentage (unweighted)"
    ) |> 
  as_flex_table() |> 
  theme_vanilla()
t1
Table 2: Distribution of births by background characteristics in Bangladesh 1970-2022

Weighted

Unweighted

Characteristic

N = 913,346,5561

N = 349,9622

Death scarring

Alive

514,904,887 (56.4%)

195,665 (55.9%)

Dead

97,293,820 (10.7%)

34,379 (9.8%)

First order births

301,147,850 (33.0%)

119,918 (34.3%)

Death scarring

Alive

514,904,887 (56.4%)

195,665 (55.9%)

Dead after conception

23,980,882 (2.6%)

8,239 (2.4%)

Dead before conception

73,312,937 (8.0%)

26,140 (7.5%)

First order births

301,147,850 (33.0%)

119,918 (34.3%)

Preceding birth interval (in months)

24 and more months

472,154,835 (51.7%)

177,834 (50.8%)

18-23 months

79,264,465 (8.7%)

29,220 (8.3%)

Less than 18 months

60,779,406 (6.7%)

22,990 (6.6%)

First order births

301,147,850 (33.0%)

119,918 (34.3%)

Birth cohort of index child

2010 and above

107,107,560 (11.7%)

55,742 (15.9%)

2000-2009

214,936,478 (23.5%)

92,065 (26.3%)

1990-1999

287,372,873 (31.5%)

103,624 (29.6%)

1980-1989

220,106,757 (24.1%)

72,189 (20.6%)

1970-1979

83,822,888 (9.2%)

26,342 (7.5%)

Birth order

1-2

536,207,139 (58.7%)

212,503 (60.7%)

3

153,898,955 (16.9%)

58,420 (16.7%)

4

93,841,570 (10.3%)

34,252 (9.8%)

5 and more

129,398,892 (14.2%)

44,787 (12.8%)

Sex of child

Female

445,492,696 (48.8%)

170,525 (48.7%)

Male

467,853,861 (51.2%)

179,437 (51.3%)

Season during birth

Summer/pre-monsoon

272,262,473 (29.8%)

104,399 (29.8%)

Monsoon

208,789,167 (22.9%)

80,232 (22.9%)

Winter/post-monsoon

432,294,917 (47.3%)

165,331 (47.2%)

Mother's age at child birth (in years)

Above 29 years

103,048,119 (11.3%)

39,265 (11.2%)

25-29 years

169,767,336 (18.6%)

66,132 (18.9%)

20-24 years

292,464,253 (32.0%)

113,470 (32.4%)

Below 20 years

348,066,848 (38.1%)

131,095 (37.5%)

Mother's education

Secondary or higher

232,945,635 (25.5%)

102,885 (29.4%)

Upto Primary

278,431,181 (30.5%)

110,140 (31.5%)

No formal schooling

401,969,740 (44.0%)

136,937 (39.1%)

Father's education

Secondary or higher

278,004,208 (30.4%)

110,433 (31.6%)

Upto primary

237,404,080 (26.0%)

90,147 (25.8%)

No formal schooling

397,938,269 (43.6%)

149,382 (42.7%)

Religion of the household

Islam

827,755,878 (90.6%)

315,698 (90.2%)

Others

85,503,455 (9.4%)

34,238 (9.8%)

Unknown

87,223

26

Wealth index quintile

Richest

157,253,196 (17.2%)

68,327 (19.5%)

Richer

177,418,951 (19.4%)

68,309 (19.5%)

Middle

185,811,445 (20.3%)

69,353 (19.8%)

Poorer

195,948,801 (21.5%)

71,723 (20.5%)

Poorest

196,914,163 (21.6%)

72,250 (20.6%)

Household structure

Extended

430,842,462 (47.2%)

167,753 (47.9%)

Nuclear

482,504,094 (52.8%)

182,209 (52.1%)

Sex of household head

Female

96,735,517 (10.6%)

38,193 (10.9%)

Male

816,611,039 (89.4%)

311,769 (89.1%)

Place of residence

Urban

182,944,415 (20.0%)

100,837 (28.8%)

Rural

730,402,142 (80.0%)

249,125 (71.2%)

1n (%) = Distribution and column percentage (weighted);

2n (%) = Distribution and column percentage (unweighted)

Table 2 presents the sample characteristics of all births from the complete birth histories of Bangladesh from 1970 to 2022. The distribution of our two main explanatory variables, shows that there were 11% children whose previous sibling had died before their birth. Most children in Bangladesh had a preceding birth interval of 24 months or more. Among the children considered in the study, the majority were from the 1990-99 birth cohort (35.5%), followed by the 2000-09 cohort (23.1%) and the 1980-89 cohort (22.7%). More than half of the children were male (51.2%) and belonged to the first or second birth order (56.4%).

Almost 38% of children were born when their mothers were aged 20-24 years, followed by 24% whose mothers were less than 20 years old. Nearly 71% of mothers and 36% of fathers had no formal schooling. Most households practised Hinduism (84.8%), and Bangladeshi was the primary language spoken in almost 46% of households. The majority of children lived in rural areas (75.7%) and in the Terai region (52.7%), followed by the Hill region (40%) and the Mountain region (7.3%).

Distribution of infant deaths by birth cohort and survey period

Here we prepare the data of infant mortality by birth cohort and then by survey period. Using the data we prepare the graph of distribution of infant deaths by birth cohort and survey period.

# Let's create the lollipop chart.
fig1_cohort <- f1_cohort_tibble |> 
    ggplot(aes(y = birth_cohort, x = pct_dead)) +
    
    # adding line segment or lollipop stick
    geom_segment(
        aes(x = 0, xend = pct_dead, y = birth_cohort, yend = birth_cohort),
        linewidth = 2,
        colour = "green4"
    ) +
    
    # adding the point or lollipop head
    geom_point(
        shape = 21,
        size = 15,
        fill = "white",
        colour = "green4"
    ) +
    
    # adding the percentage text
    geom_text(
        aes(label = pct_dead),
        fontface = "bold"
    ) +
    
    labs(
        # title = "(A) By Birth cohort",
        x = "Weighted percentage of children",
        y = "Birth cohort",
    ) +
    
    theme(
        plot.title = element_text(size = rel(1.3), face = "bold"),
        # plot.subtitle = element_text(size = rel(1.2)),
        axis.title.x = element_text(size = rel(1.2)),
        axis.text.x = element_blank(),
        axis.ticks.x = element_blank(),
        axis.title.y = element_text(size = rel(1.2)),
        axis.text.y = element_text(size = rel(1.2))
    )
fig1_cohort
Figure 1: Lollipop chart showing the weighted percentage of infant deaths by birth cohort in Bangladesh DHS
fig1_period <- f1_period_tibble |> 
    ggplot(aes(x = pct_dead, y = survey_year)) +
    
    # adding the line
    geom_segment(
        aes(x = 0, xend = pct_dead, y = survey_year, yend = survey_year),
        linewidth = 3,
        colour = "orange3"
    ) +
    
    # adding the point
    geom_point(
        shape = 21,
        size = 18,
        fill = "white",
        colour = "orange3"
    ) +
    
    # adding the percentage label
    geom_text(
        aes(label = pct_dead),
        fontface = "bold"
    ) +
    
    labs(
        # title = "(B) By Survey period",
        x = "Weighted percentage of children",
        y = "Survey period",
    ) +
    
    theme(
        plot.title = element_text(size = rel(1.3), face = "bold"),
        axis.title.x = element_text(size = rel(1.2)),
        axis.text.x = element_blank(),
        axis.ticks.x = element_blank(),
        axis.title.y = element_text(size = rel(1.2)),
        axis.text.y = element_text(size = rel(1.2))
    )
fig1_period
Figure 2: Lollipop chart showing the weighted percentage of infant deaths by survey period in Bangladesh DHS

Figure 1 and Figure 2 further highlights the temporal shifts in infant mortality across different birth cohorts and survey periods. The results indicate a steady decline in infant mortality over time, with higher mortality rates in earlier birth cohorts (1970–1979), which gradually decreased in the subsequent cohorts. The most recent cohorts (2010 and later) exhibit the lowest mortality rates, reflecting improvements in child survival over the decades.

A similar trend can be observed for infant mortality in the survey rounds. Proportion of children who died during infancy were higher during the 1996 round, which continued to decrease in the recent 2022 round.

Childhood mortality rates by survey rounds

Here we calculate mortality rates across the Bangladesh DHS survey rounds using the DHS.Rates R package. First we prepared the dataset of childhood mortality rates and then we drew the graph.

# Now we prepare the connected scatter plots of nnmr, imr and u5mr
fig2_svyround <- bdbrpl1_mortrates |> 
    # filter the mortality rates
    filter(mort_stat %in% c("nnmr", "imr", "u5mr")) |> 
    # prepare the graph
    ggplot(aes(x = year, y = r, colour = mort_stat)) +
    # add line
    geom_path(linewidth = 1, alpha = 0.9) +
    # add point
    geom_point(size = 16, alpha = 0.9) +
    # add label
    geom_text(
        aes(label = round(r, 0)), 
        colour = "white",
        fontface = "bold"
    ) +
    # give breaks according to survey round
    scale_x_continuous(breaks = c(1996, 2001, 2006, 2011, 2016, 2022)) +
    scale_colour_discrete(
        label = c("Neonatal mortality rate", "Infant mortality rate", 
                  "Under-five mortality rate")
    ) +
    
    # add labels
    labs(
        title = "Trends in Childhood mortality rates in Bangladesh DHS survey rounds",
        x = "Survey round",
        y = "Mortality rate (per 1000 live births)",
        # This removes the legend title 
        colour = NULL
    ) +
    # Modify the axis theme elements
    theme(
        plot.title = element_text(size = rel(1.4), face = "bold"),
        axis.title.x = element_text(size = rel(1.2)),
        axis.text.x = element_text(size = rel(1.2)),
        axis.title.y = element_text(size = rel(1.2)),
        axis.text.y = element_blank(),
        axis.ticks.y = element_blank()
    ) +
    # Modify the legend theme elements
    theme(
        # legend.key.size = unit(1, "points"),
        legend.position = "top",
        legend.text = element_text(size = rel(0.9))
    ) +
    guides(color = guide_legend(override.aes = list(size = 8)))
fig2_svyround    
Figure 3: Connected dot plot showing the childhood mortality rates by Bangladesh DHS survey rounds

Figure 3 also shows the childhood mortality rates (per 1000 live births) have decreased across the survey rounds. This pattern stands true for neonatal, infant and under-five mortalities. Additionally, this trend corroborates with the declining infant mortality trend observed in Figure 1 and Figure 2.

Bivariate analysis

Crosstab of infant mortality by background characteristics

Here we will check the crosstab tables of infant mortality with the independent variables using row percentages and check their association with the chi-square test.

# Creating the var list
vlist_t2 <- c("infantd", "sibsurv_3c", "binterval_3c_opp", 
              "cyob10y_opp", "bord_c", "sex_fm", "season", "macb_c_opp", 
              "medu_opp", "pedu_opp", "religion", "wi_qt_opp", 
              "hhstruc_opp", "head_sex_fm", "por")

# Prepare the weighted gtsummary table
t2_wt <- svy_bdbr1_pl1 |> 
  tbl_svysummary(
    include = all_of(vlist_t2),
    by = infantd,
    percent = "row"
  ) |> 
  add_overall(statistic = ~ "{n}") |> 
  add_p() |> 
  
  # hide the alive col
  modify_column_hide(columns = stat_1) |> 
  # Add extra header
  modify_spanning_header(
    c(stat_2, p.value) ~ "**Infant mortality (0-11 months)**"
  ) |> 
  modify_footnote(
    all_stat_cols() ~ "n = Absolute distribution; % = Row percentage; Adjusted for sampling weights"
  ) |> 
  # styling
  bold_labels() |> 
  bold_p(t = 0.05) |> 
  as_flex_table() |> 
  theme_vanilla()
t2_wt                           # view table
Table 3: Distribution of infant deaths by background characteristics among Bangladeshi children from 1970-2022

Infant mortality (0-11 months)

Characteristic

Overall
N = 913,346,5561

Dead
N = 71,865,2861

p-value2

Death scarring

<0.001

Alive

514,904,887

29,689,480 (5.8%)

Dead after conception

23,980,882

2,805,700 (12%)

Dead before conception

73,312,937

10,190,574 (14%)

Unknown

301,147,850

29,179,531

Preceding birth interval (in months)

<0.001

24 and more months

472,154,835

25,846,519 (5.5%)

18-23 months

79,264,465

7,880,063 (9.9%)

Less than 18 months

60,779,406

8,959,173 (15%)

Unknown

301,147,850

29,179,531

Birth cohort of index child

<0.001

2010 and above

107,107,560

3,529,964 (3.3%)

2000-2009

214,936,478

10,378,952 (4.8%)

1990-1999

287,372,873

22,005,146 (7.7%)

1980-1989

220,106,757

24,084,401 (11%)

1970-1979

83,822,888

11,866,824 (14%)

Birth order

<0.001

1-2

536,207,139

44,958,994 (8.4%)

3

153,898,955

9,723,936 (6.3%)

4

93,841,570

6,421,801 (6.8%)

5 and more

129,398,892

10,760,555 (8.3%)

Sex of child

<0.001

Female

445,492,696

31,850,438 (7.1%)

Male

467,853,861

40,014,848 (8.6%)

Season during birth

0.8

Summer/pre-monsoon

272,262,473

21,276,399 (7.8%)

Monsoon

208,789,167

16,434,022 (7.9%)

Winter/post-monsoon

432,294,917

34,154,865 (7.9%)

Mother's age at child birth (in years)

<0.001

Above 29 years

103,048,119

6,405,025 (6.2%)

25-29 years

169,767,336

10,008,136 (5.9%)

20-24 years

292,464,253

19,700,733 (6.7%)

Below 20 years

348,066,848

35,751,391 (10%)

Mother's education

<0.001

Secondary or higher

232,945,635

10,485,290 (4.5%)

Upto Primary

278,431,181

20,932,286 (7.5%)

No formal schooling

401,969,740

40,447,709 (10%)

Father's education

<0.001

Secondary or higher

278,004,208

16,678,238 (6.0%)

Upto primary

237,404,080

18,740,290 (7.9%)

No formal schooling

397,938,269

36,446,758 (9.2%)

Religion of the household

0.005

Islam

827,755,878

64,613,735 (7.8%)

Others

85,503,455

7,244,384 (8.5%)

Unknown

87,223

7,167

Wealth index quintile

<0.001

Richest

157,253,196

9,097,391 (5.8%)

Richer

177,418,951

12,390,914 (7.0%)

Middle

185,811,445

14,519,184 (7.8%)

Poorer

195,948,801

17,269,594 (8.8%)

Poorest

196,914,163

18,588,204 (9.4%)

Household structure

<0.001

Extended

430,842,462

32,421,621 (7.5%)

Nuclear

482,504,094

39,443,665 (8.2%)

Sex of household head

<0.001

Female

96,735,517

6,848,607 (7.1%)

Male

816,611,039

65,016,679 (8.0%)

Place of residence

<0.001

Urban

182,944,415

11,732,975 (6.4%)

Rural

730,402,142

60,132,311 (8.2%)

1n = Absolute distribution; % = Row percentage; Adjusted for sampling weights

2Pearson's X^2: Rao & Scott adjustment

Table 3 shows that among children whose preceding sibling died before their conception, 15% experienced infant mortality. Mortality was also higher for children whose previous sibling died after their conception. Infant mortality varied significantly across birth intervals, birth cohorts, and parental characteristics. Mortality was highest among children born within 18 months of a previous birth, with 21% experiencing infant mortality. In contrast, children born after between 25-29 years had the lowest mortality rate of 6.8%. Sex differences were minor, with female infant mortality at 7.7% and male mortality at 8.7%.

Multivariable analysis

Regression of infant deaths by background characteristics

Here we will check the multivariable association of infant mortality with the independent variables by estimating logistic regression models. We run the weighted regression models by:

  • Model 1: Without main independent variables.
  • Model 2: With main independent variables.
# We merge the model-1 and model-2 tables
t3_log <- tbl_merge(
    tbls = list(t3_log_mdl1, t3_log_mdl2),
    tab_spanner = c("**Model-1**", "**Model-2**")
) |> 
    # ensure that estimates of sibsurv_3c and binterval_3c_opp are at the top
    modify_table_body(
        ~ .x |> 
            arrange(desc(variable %in% c("sibsurv_3c", "binterval_3c_opp")))
    )
# Now we view the table
t3_log |> 
  as_flex_table() |> 
  fontsize(size = 9, part = "all") |> 
  theme_vanilla()
Table 4: Multivariable association of infant mortality and the independent variables among children in Bangladesh 1970-2022

Model-1

Model-2

Characteristic

OR1

95% CI1

p-value

GVIF1

OR1

95% CI1

p-value

GVIF1

Death scarring

1.2

Alive

Dead after conception

1.32

1.21, 1.44

<0.001

Dead before conception

1.91

1.81, 2.01

<0.001

Preceding birth interval (in months)

1.2

24 and more months

18-23 months

1.58

1.50, 1.67

<0.001

Less than 18 months

2.30

2.18, 2.42

<0.001

Birth cohort of index child

1.6

1.6

2010 and above

2000-2009

1.31

1.22, 1.40

<0.001

1.17

1.07, 1.29

<0.001

1990-1999

1.96

1.84, 2.09

<0.001

1.70

1.56, 1.85

<0.001

1980-1989

2.80

2.62, 2.99

<0.001

2.40

2.20, 2.62

<0.001

1970-1979

3.57

3.31, 3.85

<0.001

3.11

2.82, 3.43

<0.001

Birth order

3.3

2.8

1-2

3

0.86

0.82, 0.90

<0.001

0.95

0.90, 1.01

0.083

4

0.97

0.91, 1.03

0.3

1.00

0.93, 1.07

>0.9

5 and more

1.23

1.14, 1.32

<0.001

1.15

1.07, 1.24

<0.001

Sex of child

1.1

1.1

Female

Male

1.21

1.18, 1.25

<0.001

1.15

1.11, 1.20

<0.001

Season during birth

1.1

1.2

Summer/pre-monsoon

Monsoon

1.02

0.98, 1.06

0.4

1.07

1.01, 1.13

0.019

Winter/post-monsoon

1.01

0.97, 1.04

0.8

1.01

0.97, 1.06

0.7

Mother's age at child birth (in years)

3.4

2.9

Above 29 years

25-29 years

1.01

0.94, 1.08

0.8

0.93

0.87, 1.00

0.049

20-24 years

1.21

1.12, 1.30

<0.001

1.00

0.93, 1.08

>0.9

Below 20 years

1.77

1.63, 1.92

<0.001

1.14

1.05, 1.25

0.003

Mother's education

2.1

2.0

Secondary or higher

Upto Primary

1.25

1.18, 1.32

<0.001

1.26

1.17, 1.36

<0.001

No formal schooling

1.39

1.31, 1.48

<0.001

1.37

1.26, 1.48

<0.001

Father's education

1.6

1.8

Secondary or higher

Upto primary

1.11

1.05, 1.16

<0.001

1.06

0.99, 1.13

0.11

No formal schooling

1.15

1.09, 1.21

<0.001

1.13

1.05, 1.21

<0.001

Religion of the household

1.0

1.1

Islam

Others

1.11

1.04, 1.17

<0.001

1.10

1.02, 1.17

0.008

Wealth index quintile

1.8

1.9

Richest

Richer

1.09

1.03, 1.17

0.005

1.06

0.98, 1.14

0.14

Middle

1.17

1.10, 1.25

<0.001

1.16

1.07, 1.26

<0.001

Poorer

1.30

1.22, 1.38

<0.001

1.25

1.15, 1.35

<0.001

Poorest

1.39

1.30, 1.49

<0.001

1.33

1.22, 1.44

<0.001

Household structure

1.1

1.1

Extended

Nuclear

1.05

1.02, 1.09

0.004

1.03

0.99, 1.08

0.13

Sex of household head

1.0

1.0

Female

Male

1.05

1.00, 1.11

0.074

1.07

1.00, 1.14

0.056

Place of residence

1.2

1.2

Urban

Rural

0.98

0.94, 1.03

0.5

0.98

0.93, 1.04

0.6

No. Obs.

349,936

230,026

AIC

184,928

111,725

BIC

185,180

112,009

1OR = Odds Ratio, CI = Confidence Interval, GVIF = Generalized Variance Inflation Factor

Table 4 presents the results of the logistic regression analysis, showing key factors associated with infant mortality. Bangladeshi children whose preceding sibling had died before their conception had 1.86 times higher odds of experiencing infant mortality. Short birth intervals, particularly those under 18 months, were associated with a significantly higher risk, with mortality odds 2.51 times higher than for births with a preceding interval of 24 months or longer.

START FROM HERE

UPCOMING TASKS:

  • Run survival regression models and check the result.

  • Check if frailty survival regression models can be run.

  • Check and apply the evalue package.

TO BE CONTINUED …

Back to top