Summarise BW and LBW models without controlling for gestational age: growth or gestational age path


In this script we summarise the results of the BW and LBW models without controlling for gestational age. We also include comparisons between different types of profiles. The resulting table can be seen in section Display summary.

Load packages, read data and source custom scripts

rm(list = ls())
library(bamlss)
#> Loading required package: coda
#> Loading required package: colorspace
#> Loading required package: mgcv
#> Loading required package: nlme
#> This is mgcv 1.8-31. For overview type 'help("mgcv-package")'.
#> 
#> Attaching package: 'bamlss'
#> The following object is masked from 'package:mgcv':
#> 
#>     smooth.construct
library(gamlss.dist)
#> Loading required package: MASS
library(ggplot2)
library(patchwork)
#> 
#> Attaching package: 'patchwork'
#> The following object is masked from 'package:MASS':
#> 
#>     area
library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following object is masked from 'package:MASS':
#> 
#>     select
#> The following object is masked from 'package:bamlss':
#> 
#>     n
#> The following object is masked from 'package:nlme':
#> 
#>     collapse
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
path_proj <- day2day::git_path()
path_data <- file.path(path_proj, "data")
path_processed <- file.path(path_data, "processed")
path_modelled <- file.path(path_data, "modelled")
path_summarised <- file.path(path_data, "summarised")

source(file.path(path_proj, "src", "50-summarization.R"))
source(file.path(path_proj, "src", "51-bamlss.R"))

bwdata_file <- file.path(path_processed, "bwdata_41_model.fst")
path_model_bw_full <- file.path(path_modelled, "bw-10-full-re-t-burned.rds")
path_model_lbw_full <- file.path(path_modelled, "lbw-10-full-re-burned.rds")

bwdata_model <- fst::read_fst(bwdata_file)
model_bw <- readRDS(path_model_bw_full)
model_lbw <- readRDS(path_model_lbw_full)

data_points_all <- readRDS(file.path(path_processed, "exposure-reference-points.rds"))
ama <- sf::st_read(file.path(path_processed, "ama_05_62.gpkg")) %>%
    dplyr::select(mun_code, inc_study, mun_name)
#> Reading layer `ama_05_62' from data source `/home/rstudio/Documents/Projects/data-amazonia/70-studies/birthweight/data/processed/ama_05_62.gpkg' using driver `GPKG'
#> Simple feature collection with 62 features and 373 fields
#> geometry type:  MULTIPOLYGON
#> dimension:      XY
#> bbox:           xmin: 1573261 ymin: 8909613 xmax: 3542869 ymax: 10248330
#> projected CRS:  unnamed
data_summary <- tibble::tribble(~description, ~value,
    "number of birth registration (modelled)", as.character(nrow(bwdata_model)),
    "period of study", "2006 - 2017")

# model summary
bamlss_sum <- summary(model_bw)
bamlss_lbw_sum <- summary(model_lbw)

data_summary <- tibble::tribble(~description, ~value,
        "mean birthweight", round(mean(bwdata_model$born_weight), 3),
        "mean birthweight on baseline group", round(bamlss_sum$model.matrix$mu[1, 1], 3),
        "proportion of low birthweight", round(mean(bwdata_model$born_weight < 2500), 3)
        ) %>%
    rbind(data_summary, .)
# disadvantage profiles
profiles <- data.frame(
  age = c(15, 30),
  born_race = factor(c("indigenous", "non-indigenous"),
                     levels = levels(bwdata_model$born_race)),
  study_years = factor(c("no", "4 - 7"),
                          levels = levels(bwdata_model$study_years)),
  marital_status = factor(c("single", "married"),
                          levels = levels(bwdata_model$marital_status)),
  consult_num = factor(c("0", "> 7"),
                          levels = levels(bwdata_model$consult_num)),
  birth_place = factor(c("home", "hospital"),
                          levels = levels(bwdata_model$birth_place))
  )

disadvantage_eff <- predict(model_bw, profiles, "mu",
        c("s(age)", "born_race", "study_years", "marital_status", "consult_num", "birth_place"),
        intercept = FALSE , FUN = function (x) x) %>% as.matrix() %>% diff() %>% as.numeric() %>% c95()

disadvantage_eff_lbw <- predict(model_lbw, profiles, "pi",
        c("s(age)", "born_race", "study_years", "marital_status", "consult_num", "birth_place"),
        intercept = FALSE, FUN = function (x) x)

odds <- t(apply(disadvantage_eff_lbw, 1, function (x) c95(exp(x))))

disadvantage_odds_ratio <- disadvantage_eff_lbw[2:1, ] %>% as.matrix() %>% diff() %>% as.numeric() %>% exp() %>% c95()

data_summary <- tibble::tribble(~description, ~value,
    "penalty when born to adolescent, indigenous Amerindian, unmarried mothers that received no formal education, antenatal or obstetric healthcare", ci_character(disadvantage_eff),
    "odds ratio when born to adolescent, indigenous Amerindian, unmarried mothers that received no formal education, antenatal or obstetric healthcare", ci_character(disadvantage_odds_ratio),
    "odds change (with respect to baseline) when born to adolescent, indigenous Amerindian, unmarried mothers that received no formal education, antenatal or obstetric healthcare", ci_character(odds[1, ]),
    "odds change (with respect to baseline) when born to mature, non-indigenous, married mothers that received formal education (4-7), antenatal or obstetric healthcare", ci_character(odds[2, ])
    ) %>%
    rbind(data_summary, .)

profiles_advantage <- data.frame(
  age = rep(30, 2),
  sex = factor(c("male", "female"),
                     levels = levels(bwdata_model$sex)),
  born_race = factor(rep("non-indigenous", 2),
                     levels = levels(bwdata_model$born_race)),
  study_years = factor(rep("4 - 7", 2),
                          levels = levels(bwdata_model$study_years)),
  marital_status = factor(rep("married", 2),
                          levels = levels(bwdata_model$marital_status)),
  consult_num = factor(rep("> 7", 2),
                          levels = levels(bwdata_model$consult_num)),
  birth_place = factor(rep("hospital", 2),
                          levels = levels(bwdata_model$birth_place))
  )

profiles_advantage_mean <- predict(model_bw, profiles_advantage, "mu",
        c("s(age)", "sex", "born_race", "study_years", "marital_status", "consult_num", "birth_place"),
        intercept = TRUE , FUN = function (x) c95(x))
c95_prob <- function(x)  c(c95(x), exceed = mean(x > 0))
c95_exp_prob <- function(x) c(c95(exp(x)), exceed = mean(x > 0))

# extremes bw
data_extremes <- data_points_all[[3]] %>%
    mutate(description = paste0(" extreme effects of ", label, " (", description, ")"))

ext_eff <- predict_effect(model_bw, data_extremes,
                          "mu", "s(neg_ext_mbsi_mean_8wk,pos_ext_mbsi_mean_8wk)")

data_summary  <-
    data_extremes %>%
    dplyr::mutate(value =   ci_character(ext_eff)) %>%
    dplyr::select(description, value) %>%
    rbind(data_summary, .)

data_extremes <- data_points_all[[3]] %>%
    mutate(description = paste0("extreme effects: baseline comparison of ",
                                label, " - A (", description, ")"))

ext_eff_base <- predict_effect_baseline(
    model_bw, data_extremes,
    "mu", "s(neg_ext_mbsi_mean_8wk,pos_ext_mbsi_mean_8wk)", FUN = c95_prob
)

data_summary  <-
    data_extremes %>%
    dplyr::mutate(value =   ci_character_exceed(ext_eff_base)) %>%
    dplyr::select(description, value) %>%
    rbind(data_summary, .)

# extremes lbw
data_extremes_lbw <- data_points_all[[3]] %>%
    mutate(description = paste0("odds of extreme events ", label, " (", description, ")"))
data_extremes_lbw[data_extremes_lbw$label == "E", "y"] <- 0.4

ext_eff_lbw <- predict_effect(model_lbw, data_extremes_lbw, "pi",
                          "s(neg_ext_mbsi_mean_8wk,pos_ext_mbsi_mean_8wk)",
                          FUN = function(x) c95(exp(x)))

data_summary  <- data_extremes_lbw %>%
    dplyr::mutate(value = ci_character(ext_eff_lbw, 3)) %>%
    dplyr::select(description, value) %>%
    rbind(data_summary, .)

data_extremes_lbw <- data_points_all[[3]] %>%
    mutate(description = paste0("extreme effects: odds ratio of ",
                                label, " - A (", description, ")"))
data_extremes_lbw[data_extremes_lbw$label == "E", "y"] <- 0.4

ext_eff_lbw_base <- predict_effect_baseline(
    model_lbw, data_extremes_lbw, "pi",
    "s(neg_ext_mbsi_mean_8wk,pos_ext_mbsi_mean_8wk)",
    FUN = c95_exp_prob)

data_summary  <- data_extremes_lbw %>%
    dplyr::mutate(value = ci_character_exceed(ext_eff_lbw_base, 3)) %>%
    dplyr::select(description, value) %>%
    rbind(data_summary, .)

# non extreme events
data_events <- data_points_all[[2]] %>%
    mutate(description = paste0("non-extreme effects of ", label, " (", description, ")"))

events_eff <- predict_effect(model_bw, data_events,
                          "mu", "s(neg_mckee_mean_8wk,pos_mckee_mean_8wk)")

data_summary  <- data_events %>%
    dplyr::mutate(value = ci_character(events_eff)) %>%
    dplyr::select(description, value) %>%
    rbind(data_summary, .)

data_events <- data_points_all[[2]] %>%
    mutate(description = paste0("non-extreme effects: baseline comparison of ",
                                label, " - A (", description, ")"))

events_eff_base <- predict_effect_baseline(
    model_bw, data_events, "mu",
    "s(neg_mckee_mean_8wk,pos_mckee_mean_8wk)",
    FUN = c95_prob
)

data_summary  <- data_events %>%
    dplyr::mutate(value = ci_character_exceed(events_eff_base)) %>%
    dplyr::select(description, value) %>%
    rbind(data_summary, .)

# non extreme lbw
data_events_lbw <- data_points_all[[2]] %>%
    mutate(description = paste0("odds of non-extreme effects of ",
                                label, " (", description, ")"))

events_eff_lbw <- predict_effect(model_lbw, data_events_lbw,
                          "pi", "s(neg_mckee_mean_8wk,pos_mckee_mean_8wk)",
                          FUN = function(x) c95(exp(x)))

data_summary  <- data_events_lbw %>%
    dplyr::mutate(value = ci_character(events_eff_lbw)) %>%
    dplyr::select(description, value) %>%
    rbind(data_summary, .)

data_events_lbw <- data_points_all[[2]] %>%
    mutate(description = paste0("non-extreme effects: odds ratio of ",
                                label, " - A (", description, ")"))

events_eff_lbw_base <- predict_effect_baseline(
    model_lbw, data_events_lbw, "pi",
    "s(neg_mckee_mean_8wk,pos_mckee_mean_8wk)",
    FUN = c95_exp_prob)

data_summary  <- data_events_lbw %>%
    dplyr::mutate(value = ci_character_exceed(events_eff_lbw_base)) %>%
    dplyr::select(description, value) %>%
    rbind(data_summary, .)

# deviations from seasonality
data_deviations <- data_points_all[[1]] %>%
    mutate(description = paste0("seasonal deviation effects of ", label, " (",
                                description, ")"))

deviations_eff <- predict_effect(model_bw, data_deviations,
                          "mu", "s(neg_mbsi_mean_1wk,pos_mbsi_mean_1wk)")

data_summary  <- data_deviations %>%
    dplyr::mutate(value = ci_character(deviations_eff)) %>%
    dplyr::select(description, value) %>%
    rbind(data_summary, .)

data_deviations <- data_points_all[[1]] %>%
    mutate(description = paste0("seasonal deviation effects: baseline comparison of ",
                                label, " - A (", description, ")"))

deviations_eff <- predict_effect_baseline(
    model_bw, data_deviations, "mu",
    "s(neg_mbsi_mean_1wk,pos_mbsi_mean_1wk)",
    FUN = c95_prob
)

data_summary  <- data_deviations %>%
    dplyr::mutate(value = ci_character_exceed(deviations_eff)) %>%
    dplyr::select(description, value) %>%
    rbind(data_summary, .)

# deviations from seasonality lbw
data_deviations_lbw <- data_points_all[[1]] %>%
    mutate(description = paste0("odds of seasonal deviation effects of ", label, " (",
                                description, ")"))

deviations_eff_lbw <- predict_effect(model_lbw, data_deviations_lbw,
                          "pi", "s(neg_mbsi_mean_1wk,pos_mbsi_mean_1wk)",
                          FUN = function(x) c95(exp(x)))

data_summary  <- data_deviations_lbw %>%
    dplyr::mutate(value = ci_character(deviations_eff_lbw)) %>%
    dplyr::select(description, value) %>%
    rbind(data_summary, .)

data_deviations_lbw <- data_points_all[[1]] %>%
    mutate(description = paste0("seasonal deviation effects: odds ratio of ",
                                label, " - A(", description, ")"))

deviations_eff_lbw <- predict_effect_baseline(
    model_lbw, data_deviations_lbw, "pi",
    "s(neg_mbsi_mean_1wk,pos_mbsi_mean_1wk)",
    FUN = c95_exp_prob)

data_summary  <- data_deviations_lbw %>%
    dplyr::mutate(value = ci_character_exceed(deviations_eff_lbw)) %>%
    dplyr::select(description, value) %>%
    rbind(data_summary, .)
# remoteness municipality level effects (mean and lbw)
data_summary  <-
    effect_summary_prob(model_bw, model_lbw, data.frame(c(0.25, 0.75)),
                   term = "remoteness",
                   label_1 = "low remoteness", label_2 = "high remoteness") %>%
    rbind(data_summary, .)

# sanitation municipality level effects (mean and lbw)
data_summary  <-
    effect_summary_prob(model_bw, model_lbw, data.frame(c(0.45, 0.20)),
                   term = "prop_tap_toilet",
                   label_1 = "high sanitation", label_2 = "low sanitation") %>%
    rbind(data_summary, .)

# municipality profiles
profiles_mun <- tibble::tribble(~x, ~y,
                                0.25, 0.50,
                                0.8, 0.15)
data_summary  <-
    effect_summary_prob(model_bw, model_lbw, profiles_mun,
                   term = c("remoteness",  "prop_tap_toilet"),
                   label_1 = "not remote and high sanitation",
                   label_2 = "remote and low sanitation") %>%
    rbind(data_summary, .)
# age effect (mean and lbw)
data_summary  <-
    effect_summary(model_bw, model_lbw, data.frame(c(30, 15)), term = "s(age)",
                   label_1 = "mature mothers", label_2 = "young mothers") %>%
    rbind(data_summary, .)

# education effect (mean and lbw)
data_study <- data.frame(factor(c("1 - 3", "no"), levels(bwdata_model$study_years)))
data_summary  <-
    effect_summary(model_bw, model_lbw, data_study, term = "study_years",
                   label_1 = "mother with education", label_2 = "mothers with no formal education") %>%
    rbind(data_summary, .)

# education effect (mean and lbw)
data_aux <- data.frame(factor(c("4 - 7", "no"), levels(bwdata_model$study_years)))
data_summary  <-
    effect_summary(model_bw, model_lbw, data_aux, term = "study_years",
                   label_1 = "mother with education", label_2 = "mothers with no formal education") %>%
    rbind(data_summary, .)

# marital status effect (mean and lbw)
data_aux <- data.frame(factor(c("married", "single"), levels(bwdata_model$marital_status)))
data_summary  <-
    effect_summary(model_bw, model_lbw, data_aux, term = "marital_status",
                   label_1 = "married mothers", label_2 = "single mothers") %>%
    rbind(data_summary, .)

# antenatal care effect (mean and lbw)
data_aux <- data.frame(factor(c("> 7", "0"), levels(bwdata_model$consult_num)))
data_summary  <-
    effect_summary(model_bw, model_lbw, data_aux, term = "consult_num",
                   label_1 = "mothers with ante-natal care", label_2 = "mothers with no ante-natal care") %>%
    rbind(data_summary, .)

# birth place effect (mean and lbw)
data_aux <- data.frame(factor(c("hospital", "home"), levels(bwdata_model$birth_place)))
data_summary  <-
    effect_summary(model_bw, model_lbw, data_aux, term = "birth_place",
                   label_1 = "births in medical facility (hospital)", label_2 = "births outside medical facility (home)") %>%
    rbind(data_summary, .)

# indigenous effect (mean and lbw)
data_aux <- data.frame(factor(c("non-indigenous", "indigenous"), levels(bwdata_model$born_race)))
data_summary  <-
    effect_summary(model_bw, model_lbw, data_aux, term = "born_race",
                   label_1 = "non-indigenous", label_2 = "indigenous") %>%
    rbind(data_summary, .)

# river week seasonal effect (mean and lbw)
data_summary  <-
    effect_summary_prob(model_bw, model_lbw, data.frame(c(0, 30)), term = "s(rivwk_conception)",
                   label_1 = "wet season", label_2 = "dry season", digits = 3) %>%
    rbind(data_summary, .)

# river week seasonal effect (mean and lbw)
data_summary  <-
    effect_summary_prob(model_bw, model_lbw, data.frame(c(5, 39)), term = "s(rivwk_conception)",
                   label_1 = "wet season", label_2 = "rising season", digits = 3) %>%
    rbind(data_summary, .)


# temporal effect (mean and lbw)
data_summary  <-
    effect_summary(model_bw, model_lbw, data.frame(c(167, 700)), term = "s(wk_ini)",
                   label_1 = "2006", label_2 = "2016") %>%
    rbind(data_summary, .)

Municipality comparisons

mun_names <- c("Envira", "Carauari")
mun_codes <- ama$mun_code[match(mun_names, ama$mun_name)]
data_aux <- data.frame(factor(mun_codes, levels(bwdata_model$res_muni)))

data_summary  <-
    effect_summary(model_bw, model_lbw, data_aux, term = "s(res_muni)",
               label_1 = mun_names[1], label_2 = mun_names[2]) %>%
    rbind(data_summary, .)

Display summary

cap <- "Summarise BW and LBW models without controlling for gestational age."
knitr::kable(data_summary, "html", table.attr = "class=\"table\"",
             caption = cap)
Table 1: Summarise BW and LBW models without controlling for gestational age.
description value
number of birth registration (modelled) 291479
period of study 2006 - 2017
mean birthweight 3219.386
mean birthweight on baseline group 3098.171
proportion of low birthweight 0.061
penalty when born to adolescent, indigenous Amerindian, unmarried mothers that received no formal education, antenatal or obstetric healthcare 646.43 (CI: 632.47, 660.11)
odds ratio when born to adolescent, indigenous Amerindian, unmarried mothers that received no formal education, antenatal or obstetric healthcare 10.21 (CI: 8.98, 11.48)
odds change (with respect to baseline) when born to adolescent, indigenous Amerindian, unmarried mothers that received no formal education, antenatal or obstetric healthcare 1.89 (CI: 1.76, 2.02)
odds change (with respect to baseline) when born to mature, non-indigenous, married mothers that received formal education (4-7), antenatal or obstetric healthcare 0.19 (CI: 0.17, 0.21)
extreme effects of A (None) -2.75 (CI: -5.27, -0.16)
extreme effects of B (Intense and deficient) -20.11 (CI: -156.11, 106.56)
extreme effects of C (Intense) -185.65 (CI: -321.9, -59.38)
extreme effects of E (Moderate intense) -62.81 (CI: -112.66, -15.31)
extreme effects of D (Deficient) -56.92 (CI: -195.84, 80.22)
extreme effects: baseline comparison of A - A (None) 0 (CI: 0, 0); P(diff > 0) = 0
extreme effects: baseline comparison of B - A (Intense and deficient) -17.366 (CI: -153.516, 109.127); P(diff > 0) = 0.404
extreme effects: baseline comparison of C - A (Intense) -182.9 (CI: -319.099, -56.525); P(diff > 0) = 0.002
extreme effects: baseline comparison of E - A (Moderate intense) -60.067 (CI: -109.935, -11.403); P(diff > 0) = 0.009
extreme effects: baseline comparison of D - A (Deficient) -54.168 (CI: -193.317, 83.759); P(diff > 0) = 0.248
odds of extreme events A (None) 1.043 (CI: 1.017, 1.071)
odds of extreme events B (Intense and deficient) 2.839 (CI: 0.583, 8.762)
odds of extreme events C (Intense) 1.725 (CI: 0.621, 3.804)
odds of extreme events E (Moderate intense) 1.937 (CI: 1.296, 2.829)
odds of extreme events D (Deficient) 2.722 (CI: 0.738, 7.545)
extreme effects: odds ratio of A - A (None) 1 (CI: 1, 1); P(diff > 0) = 0
extreme effects: odds ratio of B - A (Intense and deficient) 2.724 (CI: 0.553, 8.314); P(diff > 0) = 0.866
extreme effects: odds ratio of C - A (Intense) 1.655 (CI: 0.599, 3.662); P(diff > 0) = 0.798
extreme effects: odds ratio of E - A (Moderate intense) 1.858 (CI: 1.233, 2.725); P(diff > 0) = 0.999
extreme effects: odds ratio of D - A (Deficient) 2.612 (CI: 0.703, 7.183); P(diff > 0) = 0.918
non-extreme effects of A (None) 3.37 (CI: -3.29, 10.03)
non-extreme effects of B (Intense and deficient) -13.49 (CI: -33.82, 6.64)
non-extreme effects of C (Intense) -24.42 (CI: -59.65, 8.83)
non-extreme effects of D (Deficient) -13.15 (CI: -64.52, 44.47)
non-extreme effects: baseline comparison of A - A (None) 0 (CI: 0, 0); P(diff > 0) = 0
non-extreme effects: baseline comparison of B - A (Intense and deficient) -16.858 (CI: -38.417, 4.6); P(diff > 0) = 0.07
non-extreme effects: baseline comparison of C - A (Intense) -27.783 (CI: -64.241, 6.73); P(diff > 0) = 0.061
non-extreme effects: baseline comparison of D - A (Deficient) -16.513 (CI: -69.069, 45.813); P(diff > 0) = 0.278
odds of non-extreme effects of A (None) 0.93 (CI: 0.87, 1)
odds of non-extreme effects of B (Intense and deficient) 1.15 (CI: 0.91, 1.44)
odds of non-extreme effects of C (Intense) 1.31 (CI: 0.96, 1.76)
odds of non-extreme effects of D (Deficient) 0.88 (CI: 0.47, 1.47)
non-extreme effects: odds ratio of A - A (None) 1 (CI: 1, 1); P(diff > 0) = 0
non-extreme effects: odds ratio of B - A (Intense and deficient) 1.23 (CI: 0.973, 1.571); P(diff > 0) = 0.957
non-extreme effects: odds ratio of C - A (Intense) 1.404 (CI: 1.012, 1.906); P(diff > 0) = 0.978
non-extreme effects: odds ratio of D - A (Deficient) 0.942 (CI: 0.499, 1.623); P(diff > 0) = 0.358
seasonal deviation effects of A (None) 1.94 (CI: -2.39, 7.27)
seasonal deviation effects of B (Intense and deficient) -4.81 (CI: -20.97, 9.15)
seasonal deviation effects of C (Intense) -2.24 (CI: -32.05, 22.91)
seasonal deviation effects of D (Deficient) -36.66 (CI: -83.87, -1.56)
seasonal deviation effects: baseline comparison of A - A (None) 0 (CI: 0, 0); P(diff > 0) = 0
seasonal deviation effects: baseline comparison of B - A (Intense and deficient) -6.743 (CI: -24.653, 7.489); P(diff > 0) = 0.222
seasonal deviation effects: baseline comparison of C - A (Intense) -4.176 (CI: -36.279, 22.013); P(diff > 0) = 0.424
seasonal deviation effects: baseline comparison of D - A (Deficient) -38.6 (CI: -89.115, -0.704); P(diff > 0) = 0.025
odds of seasonal deviation effects of A (None) 0.94 (CI: 0.89, 0.99)
odds of seasonal deviation effects of B (Intense and deficient) 1.18 (CI: 0.99, 1.46)
odds of seasonal deviation effects of C (Intense) 1.14 (CI: 0.9, 1.49)
odds of seasonal deviation effects of D (Deficient) 1.25 (CI: 0.86, 1.82)
seasonal deviation effects: odds ratio of A - A(None) 1 (CI: 1, 1); P(diff > 0) = 0
seasonal deviation effects: odds ratio of B - A(Intense and deficient) 1.253 (CI: 1.015, 1.589); P(diff > 0) = 0.984
seasonal deviation effects: odds ratio of C - A(Intense) 1.215 (CI: 0.935, 1.609); P(diff > 0) = 0.92
seasonal deviation effects: odds ratio of D - A(Deficient) 1.325 (CI: 0.89, 1.962); P(diff > 0) = 0.919
bw: difference effect between high remoteness (0.75) and low remoteness (0.25) -6 (CI: -36.32, 24.67); P(diff > 0) = 0.34
bw: effect of low remoteness (0.25) -3 (CI: -18.16, 12.34); P(diff > 0) = 0.34
bw: effect of high remoteness (0.75) -9 (CI: -54.47, 37.01); P(diff > 0) = 0.34
lbw: odds ratio between high remoteness (0.75) and low remoteness (0.25) 1.11 (CI: 0.97, 1.26); P(diff > 0) = 0.94
lbw: odds change of low remoteness (0.25) 1.05 (CI: 0.99, 1.12); P(diff > 0) = 0.94
lbw: odds change of high remoteness (0.75) 1.16 (CI: 0.96, 1.42); P(diff > 0) = 0.94
bw: difference effect between low sanitation (0.2) and high sanitation (0.45) -26.57 (CI: -56.56, 4.17); P(diff > 0) = 0.04
bw: effect of high sanitation (0.45) 47.82 (CI: -7.51, 101.82); P(diff > 0) = 0.96
bw: effect of low sanitation (0.2) 21.25 (CI: -3.34, 45.25); P(diff > 0) = 0.96
lbw: odds ratio between low sanitation (0.2) and high sanitation (0.45) 1 (CI: 0.89, 1.13); P(diff > 0) = 0.52
lbw: odds change of high sanitation (0.45) 1 (CI: 0.8, 1.24); P(diff > 0) = 0.48
lbw: odds change of low sanitation (0.2) 1 (CI: 0.91, 1.1); P(diff > 0) = 0.48
bw: difference effect between remote and low sanitation (0.8, 0.15) and not remote and high sanitation (0.25, 0.5) -43.79 (CI: -81.06, -5.85); P(diff > 0) = 0.01
bw: effect of not remote and high sanitation (0.25, 0.5) 50.13 (CI: -21.7, 119.5); P(diff > 0) = 0.92
bw: effect of remote and low sanitation (0.8, 0.15) 6.34 (CI: -52.76, 70); P(diff > 0) = 0.59
lbw: odds ratio between remote and low sanitation (0.8, 0.15) and not remote and high sanitation (0.25, 0.5) 1.12 (CI: 0.96, 1.3); P(diff > 0) = 0.93
lbw: odds change of not remote and high sanitation (0.25, 0.5) 1.06 (CI: 0.78, 1.39); P(diff > 0) = 0.62
lbw: odds change of remote and low sanitation (0.8, 0.15) 1.18 (CI: 0.91, 1.52); P(diff > 0) = 0.89
bw: difference effect between young mothers (15) and mature mothers (30) -248.17 (CI: -254.4, -242.37)
bw: effect of mature mothers (30) 79 (CI: 75.29, 82.94)
bw: effect of young mothers (15) -169.18 (CI: -173.47, -165.25)
lbw: odds ratio between young mothers (15) and mature mothers (30) 2.09 (CI: 1.99, 2.2)
lbw: odds change of mature mothers (30) 0.83 (CI: 0.8, 0.86)
lbw: odds change of young mothers (15) 1.74 (CI: 1.68, 1.8)
bw: difference effect between mothers with no formal education (no) and mother with education (1 - 3) -63.02 (CI: -71.53, -54.6)
bw: effect of mother with education (1 - 3) 63.02 (CI: 54.6, 71.53)
bw: effect of mothers with no formal education (no) 0 (CI: 0, 0)
lbw: odds ratio between mothers with no formal education (no) and mother with education (1 - 3) 1.28 (CI: 1.19, 1.38)
lbw: odds change of mother with education (1 - 3) 0.78 (CI: 0.73, 0.84)
lbw: odds change of mothers with no formal education (no) 1 (CI: 1, 1)
bw: difference effect between mothers with no formal education (no) and mother with education (4 - 7) -84.3 (CI: -92.51, -76.04)
bw: effect of mother with education (4 - 7) 84.3 (CI: 76.04, 92.51)
bw: effect of mothers with no formal education (no) 0 (CI: 0, 0)
lbw: odds ratio between mothers with no formal education (no) and mother with education (4 - 7) 1.33 (CI: 1.25, 1.43)
lbw: odds change of mother with education (4 - 7) 0.75 (CI: 0.7, 0.8)
lbw: odds change of mothers with no formal education (no) 1 (CI: 1, 1)
bw: difference effect between single mothers (single) and married mothers (married) -31.57 (CI: -37.19, -26.12)
bw: effect of married mothers (married) 31.57 (CI: 26.12, 37.19)
bw: effect of single mothers (single) 0 (CI: 0, 0)
lbw: odds ratio between single mothers (single) and married mothers (married) 1.17 (CI: 1.11, 1.24)
lbw: odds change of married mothers (married) 0.85 (CI: 0.81, 0.9)
lbw: odds change of single mothers (single) 1 (CI: 1, 1)
bw: difference effect between mothers with no ante-natal care (0) and mothers with ante-natal care (> 7) -150.7 (CI: -158.69, -142.88)
bw: effect of mothers with ante-natal care (> 7) 150.7 (CI: 142.88, 158.69)
bw: effect of mothers with no ante-natal care (0) 0 (CI: 0, 0)
lbw: odds ratio between mothers with no ante-natal care (0) and mothers with ante-natal care (> 7) 2.88 (CI: 2.7, 3.08)
lbw: odds change of mothers with ante-natal care (> 7) 0.35 (CI: 0.33, 0.37)
lbw: odds change of mothers with no ante-natal care (0) 1 (CI: 1, 1)
bw: difference effect between births outside medical facility (home) (home) and births in medical facility (hospital) (hospital) -74.15 (CI: -79.35, -69)
bw: effect of births in medical facility (hospital) (hospital) 0 (CI: 0, 0)
bw: effect of births outside medical facility (home) (home) -74.15 (CI: -79.35, -69)
lbw: odds ratio between births outside medical facility (home) (home) and births in medical facility (hospital) (hospital) 1.01 (CI: 0.97, 1.06)
lbw: odds change of births in medical facility (hospital) (hospital) 1 (CI: 1, 1)
lbw: odds change of births outside medical facility (home) (home) 1.01 (CI: 0.97, 1.06)
bw: difference effect between indigenous (indigenous) and non-indigenous (non-indigenous) -57.53 (CI: -62.93, -52.2)
bw: effect of non-indigenous (non-indigenous) 0 (CI: 0, 0)
bw: effect of indigenous (indigenous) -57.53 (CI: -62.93, -52.2)
lbw: odds ratio between indigenous (indigenous) and non-indigenous (non-indigenous) 1.07 (CI: 1.02, 1.12)
lbw: odds change of non-indigenous (non-indigenous) 1 (CI: 1, 1)
lbw: odds change of indigenous (indigenous) 1.07 (CI: 1.02, 1.12)
bw: difference effect between dry season (30) and wet season (0) -6.391 (CI: -11.764, -0.169); P(diff > 0) = 0.013
bw: effect of wet season (0) 3.519 (CI: 0.061, 6.802); P(diff > 0) = 0.984
bw: effect of dry season (30) -2.872 (CI: -5.985, 0.043); P(diff > 0) = 0.03
lbw: odds ratio between dry season (30) and wet season (0) 1.039 (CI: 0.991, 1.09); P(diff > 0) = 0.939
lbw: odds change of wet season (0) 0.98 (CI: 0.951, 1.008); P(diff > 0) = 0.081
lbw: odds change of dry season (30) 1.019 (CI: 0.99, 1.05); P(diff > 0) = 0.896
bw: difference effect between rising season (39) and wet season (5) -4.735 (CI: -10.728, 0.175); P(diff > 0) = 0.039
bw: effect of wet season (5) 3.676 (CI: 0.05, 7.356); P(diff > 0) = 0.98
bw: effect of rising season (39) -1.06 (CI: -4.123, 1.658); P(diff > 0) = 0.226
lbw: odds ratio between rising season (39) and wet season (5) 1.018 (CI: 0.974, 1.068); P(diff > 0) = 0.771
lbw: odds change of wet season (5) 0.984 (CI: 0.958, 1.011); P(diff > 0) = 0.131
lbw: odds change of rising season (39) 1.002 (CI: 0.974, 1.031); P(diff > 0) = 0.546
bw: difference effect between 2016 (700) and 2006 (167) -44.11 (CI: -55.09, -34.18)
bw: effect of 2006 (167) 28.85 (CI: 20.55, 38.34)
bw: effect of 2016 (700) -15.26 (CI: -19.95, -11.14)
lbw: odds ratio between 2016 (700) and 2006 (167) 1.55 (CI: 1.37, 1.77)
lbw: odds change of 2006 (167) 0.71 (CI: 0.62, 0.8)
lbw: odds change of 2016 (700) 1.09 (CI: 1.04, 1.14)
bw: difference effect between Carauari (130100) and Envira (130150) 213.47 (CI: 193.35, 234.08)
bw: effect of Envira (130150) -87.44 (CI: -103.98, -70.54)
bw: effect of Carauari (130100) 126.04 (CI: 108.25, 143.7)
lbw: odds ratio between Carauari (130100) and Envira (130150) 0.61 (CI: 0.52, 0.72)
lbw: odds change of Envira (130150) 1.18 (CI: 1.04, 1.34)
lbw: odds change of Carauari (130100) 0.72 (CI: 0.63, 0.81)

Write summary of the data and model

readr::write_csv(as.data.frame(data_summary),
                 file.path(path_summarised, "summary-full-models.csv"))

Time to execute the task

Only useful when executed with Rscript.

proc.time()
#>    user  system elapsed 
#>  32.868   1.640  34.485