1  Exploratory Analysis

1.1 Overview

This report provides an exploratory analysis of the data collected in the study: Does Sleep Regularity Worsen Over the Third Trimester of Pregnancy?.

1.2 Set the Environment

1.2.1 Load Packages

Code
library(actverse) # github.com/danielvartan/actverse
library(askpass)
library(checkmate)
library(cli)
library(dplyr)
library(fs)
library(ggplot2)
library(googlesheets4)
library(grDevices)
library(here)
library(hms)
library(lubridate)
library(lubritime) # github.com/danielvartan/lubritime
library(readr)
library(orbis) # github.com/danielvartan/orbis
library(plotr) # github.com/danielvartan/plotr
library(purrr)
library(rutils) # github.com/danielvartan/rutils
library(scaler) # github.com/danielvartan/scaler
library(scales)
library(sodium)
library(stats)
library(stringr)
library(tidyr)

1.2.2 Load Custom Functions

Code
source(here("R", "anonymize_id.R"))
source(here("R", "ga.R"))
#> 
#> Attaching package: 'prettycheck'
#> The following objects are masked from 'package:checkmate':
#> 
#>     assert_numeric, assert_scalar, check_numeric, check_scalar,
#>     expect_scalar, test_numeric, test_scalar
source(here("R", "summarize_his.R"))

1.2.3 Set Data Directories

Code
data_dir <- here("data")
processed_data_dir <- here(data_dir, "processed")
actigraphy_processed_data_dir <- here(data_dir, "processed", "actigraphy")
sri_data_dir <- here(data_dir, "sri")
sleep_prop_dir <- here(data_dir, "sleep-prop")
lux_data_dir <- here(data_dir, "lux")
Code
for (i in ls(pattern = "_dir$")) {
  if (!dir_exists(get(i))) dir_create(get(i), recurse = TRUE)
}

1.2.4 Set Keys

Code
gs4_auth(
  cache = here(".secrets"),
  email = TRUE,
  use_oob = FALSE
)
Code
salt <- Sys.getenv("PREGNANCY_SALT") # askpass()

1.2.5 Set Initial Variables

Code
Sys.setlocale("LC_TIME", "pt_BR.UTF-8")

Sys.setenv(LC_TIME = "pt_BR.UTF-8")
Sys.setenv(LC_NUMERIC = "pt_BR.UTF-8")
Sys.setenv(LANG = "pt")
Sys.setenv(LANGUAGE = "pt")

1.3 Download Actigraphy Processed Data from OSF

See the osf-routines.qmd Quarto notebook to download and decrypt the actigraphy processed data from OSF.

1.4 Download and Import the Control Form Data

Code
control_form_data <-
  "13wtDr4fRD1wJSM-qdLOdGSchF8oXU1bG0Jtccu24GhY" |>
  read_sheet(
    sheet = "Dataset",
    col_types = "c",
    na = c("", "NA")
  )

1.5 Download and Import the Field Form Data

Code
field_form_data <-
  "1tY_TT0nPXFsErYQS2VED0-hqTzgHudA9BfhRhYG19fw" |>
  read_sheet(
    sheet = "Dataset",
    col_types = "c",
    na = c("", "NA")
  )

1.6 Download and Import the Primary Sleep Data

Code
sheet_names <-
  "18wKHeqbNfrQDzjyOKIX5MCgjVK0WMho6xvdQQpA7ZLE" |>
  sheet_names() %>%
  magrittr::extract(
    !. %in% c(
      c(
        "Documentation",
        "Codebook",
        "Validation",
        "Template",
        "[TEMPLATE]"
      )
    )
  ) |>
  unique()
sheet_names
#>  [1] "9e858cd8" "4b44f0ff" "a053ce64" "02250df5" "0d483b7f" "5f28e20f"
#>  [7] "b0e857dd" "a1050c6f" "1d215e39" "b37bd425" "db850249" "5af4817a"
#> [13] "d3350e10" "7cbf7851" "6f89b17f" "575f0b25" "f1e30a89" "fda5f862"
#> [19] "c826aad6" "b21511da" "18d5bdc1" "a027a958" "f46f88c5" "6ff93997"
#> [25] "1c559275" "36566db2" "5024b37e" "2dec1b47" "b5b1d89e" "225f2a39"
#> [31] "3c2a132a" "a4899cae" "f207fd6b" "3196960f" "4c84ce02" "4cda994c"
#> [37] "ff8105e4" "619b1d43" "e06521cc" "16791cc5" "9e43829a" "aeab920e"
#> [43] "8369d5e8" "a8194247" "b1c46113" "1193992a"
Code
primary_sleep_data <- tibble()

for (i in sheet_names) {
  i_data <-
    "18wKHeqbNfrQDzjyOKIX5MCgjVK0WMho6xvdQQpA7ZLE" |>
    read_sheet(
      sheet = i,
      col_types = "c",
      na = c("", "NA")
    ) |>
      drop_na(date)

  if (nrow(i_data) == 0) next

  i_data <-
    i_data |>
    mutate(id = i) |>
    relocate(id)

  primary_sleep_data <-
    primary_sleep_data |>
    bind_rows(i_data)
}

1.7 Download and Import the Secondary Sleep Data

Code
sheet_names <-
  "12xFtuHk3dBB6KqU8qhLS17ZcrZqs0AjGWaQtnUE82Uk" |>
  sheet_names() %>%
  magrittr::extract(
    !. %in% c(
      c(
        "Documentation",
        "Codebook",
        "Validation",
        "Template",
        "[TEMPLATE]"
      )
    )
  ) |>
  unique()
sheet_names
#>  [1] "9e858cd8" "4b44f0ff" "a053ce64" "02250df5" "0d483b7f" "5f28e20f"
#>  [7] "b0e857dd" "a1050c6f" "1d215e39" "b37bd425" "db850249" "5af4817a"
#> [13] "d3350e10" "7cbf7851" "6f89b17f" "575f0b25" "f1e30a89" "fda5f862"
#> [19] "c826aad6" "b21511da" "18d5bdc1" "a027a958" "f46f88c5" "6ff93997"
#> [25] "1c559275" "36566db2" "5024b37e" "2dec1b47" "b5b1d89e" "225f2a39"
#> [31] "3c2a132a" "a4899cae" "f207fd6b" "3196960f" "4c84ce02" "4cda994c"
#> [37] "ff8105e4" "619b1d43" "e06521cc" "16791cc5" "9e43829a" "aeab920e"
#> [43] "8369d5e8" "a8194247" "b1c46113" "1193992a"
Code
secondary_sleep_data <- tibble()

for (i in sheet_names) {
  i_data <-
    "12xFtuHk3dBB6KqU8qhLS17ZcrZqs0AjGWaQtnUE82Uk" |>
    read_sheet(
      sheet = i,
      col_types = "c",
      na = c("", "NA")
    ) |>
      drop_na(date)

  if (nrow(i_data) == 0) next

  i_data <-
    i_data |>
    mutate(id = i) |>
    relocate(id)

  secondary_sleep_data <-
    secondary_sleep_data |>
    bind_rows(i_data)
}

1.8 Download and Import the Medical Records Data

Code
medical_record_data <-
  "10yvvTOCjZsRKPO8A4yn0NCvWe4Jn_Kq-Zu_CV4miGJI" |>
  read_sheet(
    sheet = "Dataset",
    col_types = "c",
    na = c("", "NA")
  )

1.9 Filter and Tidy the Control Form Data

Code
control_form_data <-
  control_form_data |>
  `names<-`(paste0("X", seq_along(control_form_data))) |>
  dplyr::select(X5, X6, X12, X39, X40) |>
  rename(
    cpf = X5,
    id = X6,
    birth_center_delivery = X12,
    ultrasound_ga = X39,
    ultrasound_date = X40
  ) |>
  mutate(
    birth_center_delivery = case_when(
      tolower(trimws(birth_center_delivery)) == "sim" ~ TRUE,
      tolower(trimws(birth_center_delivery)) == "não" ~ FALSE,
      TRUE ~ NA
    ),
    ultrasound_date = ymd(ultrasound_date),
    ga_start = if_else(
      is.na(ultrasound_ga),
      as.Date(NA),
      ga_start(
        ultrasound = ultrasound_date,
        ga =
          str_extract(ultrasound_ga, "^\\d{1,2}") |>
          as.integer() |>
          weeks() |>
          add(
            str_extract(ultrasound_ga, "\\d(?= di)") |>
            as.integer() |>
            days()
          )
      )
    )
  ) |>
  dplyr::select(-starts_with("cpf")) |>
  dplyr::select(
    id, birth_center_delivery, ga_start
  )
control_form_data |> glimpse()
#> Rows: 54
#> Columns: 3
#> $ id                    <chr> "9e858cd8", "4b44f0ff", "a053ce64", "02250df5…
#> $ birth_center_delivery <lgl> FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, NA, T…
#> $ ga_start              <date> 2022-09-03, 2022-08-16, 2022-09-03, 2022-10-…

1.10 Filter and Tidy the Field Form Data

Code
field_form_data <-
  field_form_data |>
  `names<-`(paste0("X", seq_along(field_form_data))) |>
  dplyr::select(
    X1, X4, X5, X11, X91, X92, X95, X96, X97, X99, X101, X102, X106, X119,
    X118, X125, X126
  ) |>
  rename(
    timestamp = X1,
    birth_date = X4,
    cpf = X5,
    weight_before = X96,
    weight_current = X95,
    height = X97,
    ethnicity = X106,
    education = X118,
    family_income = X99,
    health_plan = X101,
    solo = X102,
    exercise = X119,
    work = X92,
    study = X91,
    gestations = X11,
    deliveries = X125,
    abortions = X126
  ) |>
  mutate(
    id = anonymize_id(cpf, salt),
    timestamp = mdy_hms(timestamp, tz = "America/Sao_Paulo"),
    birth_date = dmy(birth_date),
    age = scaler:::age(birth_date, timestamp),
    ethnicity = factor(
      ethnicity,
      levels = c(
        "Indígena",
        "Preta",
        "Parda",
        "Amarela",
        "Branca"
      ),
      ordered = TRUE
    ),
    education = factor(
      education,
      levels = c(
        "Não frequentou a escola",
        "Fundamental incompleto",
        "Fundamental completo",
        "Ensino médio incompleto",
        "Ensino médio completo",
        "Ensino superior incompleto",
        "Ensino superior completo",
        "Mestrado incompleto",
        "Mestrado completo",
        "Doutorado incompleto",
        "Doutorado completo",
        "Pós-doutorado incompleto",
        "Pós-doutorado completo"
      ),
      ordered = TRUE
    ),
    gestations = case_match(
      gestations,
      c("Sim", "0") ~ "1",
      "Não" ~ "0",
      .default = gestations
    ),
    deliveries = case_when(
      is.na(deliveries) ~ "0",
      TRUE ~ deliveries
    ),
    abortions = case_when(
      is.na(abortions) ~ "0",
      TRUE ~ abortions
    )
  ) |>
  mutate(
    across(
      .cols = all_of(
        c(
          "weight_before", "weight_current", "height",
          "family_income", "gestations", "deliveries",
          "abortions"
        )
      ),
      .fns = as.numeric
    )
  ) |>
  mutate(
    across(
      .cols = all_of(
        c("health_plan", "solo", "exercise", "work", "study")
      ),
      .fns = function(x) {
        case_match(
          x,
          "Sim" ~ TRUE,
          "Não" ~ FALSE
        )
      }
    )
  ) |>
  mutate(
    gestations = case_when(
      id == "ae5fc5cd" ~ 3,
      TRUE ~ gestations
    ),
  ) |>
  mutate(
    bmi_before = weight_before / ((height / 100)^2),
    bmi_current = weight_current / ((height / 100)^2)
  ) |>
  dplyr::select(-cpf) |>
  relocate(
    id, timestamp, birth_date, age, weight_before, weight_current, height, bmi_before, bmi_current, family_income
  )
field_form_data |> glimpse()
#> Rows: 74
#> Columns: 20
#> $ id             <chr> "9e858cd8", "a053ce64", "b37bd425", "db850249", "022…
#> $ timestamp      <dttm> 2023-05-21 11:18:49, 2023-05-26 17:55:52, 2023-06-3…
#> $ birth_date     <date> 1991-03-22, 2001-07-25, 1989-02-23, 1998-01-12, 199…
#> $ age            <dbl> 32.16388889, 21.83611111, 34.35277778, 25.47222222, …
#> $ weight_before  <dbl> 70, 50, 87, 70, 64, 84, 49, 60, 75, 66, 64, 72, 92, …
#> $ weight_current <dbl> 86, 75, 94, 76, 78, 87, 58, 91, 89, 79, 76, 89, 110,…
#> $ height         <dbl> 160, 156, 174, 169, 153, 168, 157, 164, 164, 159, 16…
#> $ bmi_before     <dbl> 27.34375000, 20.54569362, 28.73563218, 24.50894577, …
#> $ bmi_current    <dbl> 33.59375000, 30.81854043, 31.04769454, 26.60971255, …
#> $ family_income  <dbl> 4000, 2800, 6000, 5000, 3000, 4000, 3000, 9000, 6000…
#> $ gestations     <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1…
#> $ study          <lgl> FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALS…
#> $ work           <lgl> TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TR…
#> $ health_plan    <lgl> FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE…
#> $ solo           <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FAL…
#> $ ethnicity      <ord> Branca, Parda, Branca, Branca, Parda, Parda, Branca,…
#> $ exercise       <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ education      <ord> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ deliveries     <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0…
#> $ abortions      <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0…

1.11 Filter and Tidy the Primary Sleep Data

Code
primary_sleep_data <-
  primary_sleep_data |>
  mutate(
    date = as.Date(date),
    crossover = as.logical(crossover),
    across(
      .cols = all_of(c("his", "hfs", "fps", "tts", "waso")),
      .fns = hms::parse_hms
    ),
    awakenings = as.numeric(awakenings),
    tts_fps = as.numeric(tts) / as.numeric(fps)
  ) |>
  relocate(tts_fps, .after = waso)
primary_sleep_data |> glimpse()
#> Rows: 905
#> Columns: 10
#> $ id         <chr> "9e858cd8", "9e858cd8", "9e858cd8", "9e858cd8", "9e858cd…
#> $ date       <date> 2023-05-21, 2023-05-22, 2023-05-23, 2023-05-24, 2023-05…
#> $ crossover  <lgl> TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TR…
#> $ his        <time> 22:17:04, 23:24:04, 22:19:04, 23:24:04, 22:43:04, 23:52…
#> $ hfs        <time> 07:36:04, 07:10:04, 07:15:04, 07:43:04, 06:17:04, 05:45…
#> $ fps        <time> 09:19:00, 07:46:00, 08:56:00, 08:19:00, 07:34:00, 05:53…
#> $ tts        <time> 08:01:00, 05:18:00, 06:29:00, 04:15:00, 05:30:00, 05:04…
#> $ waso       <time> 01:18:00, 02:28:00, 02:27:00, 04:04:00, 02:04:00, 00:49…
#> $ tts_fps    <dbl> 0.8604651163, 0.6824034335, 0.7257462687, 0.5110220441, …
#> $ awakenings <dbl> 11, 9, 13, 9, 9, 5, 6, 4, 6, 8, 10, 11, 17, 16, 13, 7, 2…

1.12 Filter and Tidy the Secondary Sleep Data

Code
secondary_sleep_data <-
  secondary_sleep_data |>
  mutate(
    date = as.Date(date),
    crossover = as.logical(crossover),
    across(
      .cols = all_of(c("his", "hfs", "fps", "tts", "waso")),
      .fns = hms::parse_hms
    ),
    awakenings = as.numeric(awakenings),
    tts_fps = as.numeric(tts) / as.numeric(fps)
  ) |>
  relocate(tts_fps, .after = waso)
secondary_sleep_data |> glimpse()
#> Rows: 496
#> Columns: 10
#> $ id         <chr> "9e858cd8", "9e858cd8", "9e858cd8", "9e858cd8", "9e858cd…
#> $ date       <date> 2023-05-22, 2023-05-24, 2023-05-24, 2023-05-24, 2023-05…
#> $ crossover  <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, …
#> $ his        <time> 10:36:04, 11:07:04, 13:17:04, 17:42:04, 09:45:04, 17:31…
#> $ hfs        <time> 11:32:04, 11:30:04, 13:54:04, 18:10:04, 10:44:04, 17:45…
#> $ fps        <time> 00:56:00, 00:23:00, 00:37:00, 00:28:00, 00:59:00, 00:14…
#> $ tts        <time> 00:54:00, 00:20:00, 00:37:00, 00:28:00, 00:54:00, 00:14…
#> $ waso       <time> 00:02:00, 00:03:00, 00:00:00, 00:00:00, 00:05:00, 00:00…
#> $ tts_fps    <dbl> 0.9642857143, 0.8695652174, 1.0000000000, 1.0000000000, …
#> $ awakenings <dbl> 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 3, 0, 1, 2, 2, 0, 2, 1,…

1.13 Filter and Tidy the Medical Record Data

Code
medical_record_data <-
  medical_record_data |>
  mutate(
    across(
      .cols = all_of(c("partograph_begin", "baby_birth")),
      .fns = ~ ymd_hms(.x, tz = "America/Sao_Paulo")
    ),
    across(
      .cols = -all_of(c("id", "partograph_begin", "baby_birth")),
      .fns = as.numeric
    ),
    across(
      .cols = matches("^begin_dilation$|^apgar_"),
      .fns = as.integer
    )
  ) |>
  mutate(
    partograph_duration =
      interval(
        start = partograph_begin,
        end = baby_birth
      ) |>
        int_duration()
  )
medical_record_data |> glimpse()
#> Rows: 8
#> Columns: 12
#> $ id                       <chr> "a053ce64", "b37bd425", "db850249", "b0e85…
#> $ partograph_begin         <dttm> 2023-06-08 11:40:00, 2023-07-23 06:10:00,…
#> $ begin_dilation           <int> 7, 6, 5, 7, 7, 7, 10, 7
#> $ baby_birth               <dttm> 2023-06-08 14:54:00, 2023-07-23 10:17:00, …
#> $ baby_weight              <dbl> 2995, 3340, 3010, 2785, 3730, 3080, 3215,…
#> $ baby_length              <dbl> 46.0, 49.5, 45.5, 46.0, 51.0, 49.0, 47.5, …
#> $ baby_head_perimeter      <dbl> 32.5, 35.0, 33.0, 33.0, 34.0, 31.2, 34.0, …
#> $ baby_thoracic_perimeter  <dbl> 31.0, 33.5, 32.0, 32.0, 34.5, 32.0, 33.5, …
#> $ baby_abdominal_perimeter <dbl> 30.0, 32.5, 33.5, 30.0, 31.5, 30.0, 32.0, …
#> $ apgar_score_1_minute     <int> 9, 9, 9, 9, 9, 9, 9, 9
#> $ apgar_score_5_minute     <int> 10, 10, 10, 10, 10, 10, 10, 10
#> $ partograph_duration      <Duration> 11640s (~3.23 hours), 14820s (~4.12 hours)…

1.14 Import, Tidy and Transform the Processed Actigraphy Data

1.14.1 Get Paths to Processed Actigraphy Data Files

Code
files <-
  dir_ls(
    path = actigraphy_processed_data_dir,
    type = "file",
    regexp = ".txt$"
  )

1.14.2 Import, Tidy, Transform, and Write Data Files

Code
cli_progress_bar(total = length(files), clear = FALSE)

for (i in files) {
  i_id <- str_remove(basename(i), "_actigraphy-processed-data.txt")

  i_ga_start <-
    control_form_data |>
    filter(id == i_id) |>
    pull(ga_start)

  i_data <-
    i |>
    read_acttrust(tz = "America/Sao_Paulo") |>
    mutate(
      ga =
        i_ga_start |>
        ga_point(timestamp) |>
        as.numeric() |>
        as.duration() |>
        add(
          as_hms(timestamp) |>
            as.numeric() |>
            as.duration()
        ),
      ga_week =
        ga |>
        as.numeric() |>
        divide_by(
          ddays(7) |>
            as.numeric()
        ) |>
        as.integer()
    ) |>
    suppressMessages() |>
    suppressWarnings()

  i_data |>
    write_rds(
      path(
        actigraphy_processed_data_dir,
        paste0(i_id, "_actigraphy-processed-data.rds")
      )
    )

  cli_progress_update()
}

cli_progress_done()

1.15 Import and Group the Validated Actigraphy Data

1.15.1 Get Paths to the Data Files

Code
files <-
  dir_ls(
    path = actigraphy_processed_data_dir,
    type = "file",
    regexp = "_actigraphy-processed-data.rds$"
  )

1.15.2 Import and Group the Data

Code
actigraphy_data <-
  files |>
  map_dfr(read_rds)

1.16 Group Primary Sleep Data

Code
primary_sleep_data_stats <-
  primary_sleep_data |>
  summarize(
    n = n(),
    his_mean = summarize_his(his, mean, na.rm = TRUE),
    his_sd = summarize_his(his, sd, na.rm = TRUE),
    his_min = summarize_his(his, min, na.rm = TRUE),
    his_max = summarize_his(his, max, na.rm = TRUE),
    hfs_mean = summarize_hfs(hfs, mean, na.rm = TRUE),
    hfs_sd = summarize_hfs(hfs, sd, na.rm = TRUE),
    hfs_min = summarize_hfs(hfs, min, na.rm = TRUE),
    hfs_max = summarize_hfs(hfs, max, na.rm = TRUE),
    across(
      .cols = c(fps, tts, waso),
      .fns = list(
        mean = \(x) x |> mean(na.rm = TRUE) |> as_hms(),
        sd = \(x) x |> sd(na.rm = TRUE) |> as_hms(),
        min = \(x) x |> min(na.rm = TRUE) |> as_hms(),
        max = \(x) x |> max(na.rm = TRUE) |> as_hms()
      ),
      .names = "{.col}_{.fn}"
    ),
    across(
      .cols = c(tts_fps, awakenings),
      .fns = list(
        mean = \(x) x |> mean(na.rm = TRUE),
        sd = \(x) x |> sd(na.rm = TRUE),
        min = \(x) x |> min(na.rm = TRUE),
        max = \(x) x |> max(na.rm = TRUE)
      ),
      .names = "{.col}_{.fn}"
    ),
    .by = id
  )
primary_sleep_data_stats |> glimpse()
#> Rows: 45
#> Columns: 30
#> $ id              <chr> "9e858cd8", "4b44f0ff", "a053ce64", "02250df5", "0d…
#> $ n               <int> 25, 9, 13, 3, 18, 16, 15, 6, 22, 14, 7, 23, 13, 17,…
#> $ his_mean        <time> 23:48:01.600000, 24:33:47.000000, 02:24:28.846154,…
#> $ his_sd          <time> 01:06:59.308896, 01:20:13.855004, 01:26:16.088514,…
#> $ his_min         <time> 21:58:04, 23:03:27, 00:04:15, 23:20:19, 22:14:28, …
#> $ his_max         <time> 26:42:04, 26:36:27, 05:58:15, 25:52:19, 26:25:28, …
#> $ hfs_mean        <time> 06:55:47.200000, 07:05:20.333333, 10:53:47.307692,…
#> $ hfs_sd          <time> 01:45:15.303318, 02:08:15.654618, 02:30:46.599871,…
#> $ hfs_min         <time> 03:27:04, 05:21:27, 07:38:15, 08:05:19, 04:33:28, …
#> $ hfs_max         <time> 10:32:04, 12:13:27, 15:37:15, 09:24:19, 10:02:28, …
#> $ fps_mean        <time> 07:07:45.600000, 06:31:33.333333, 08:29:18.461538,…
#> $ fps_sd          <time> 02:00:10.727009, 01:48:40.230057, 02:48:00.011447,…
#> $ fps_min         <time> 03:07:00, 04:19:00, 04:22:00, 06:38:00, 05:23:00, …
#> $ fps_max         <time> 10:41:00, 09:37:00, 13:40:00, 10:04:00, 11:01:00, …
#> $ tts_mean        <time> 05:26:28.800000, 04:11:46.666667, 06:54:23.076923,…
#> $ tts_sd          <time> 01:29:47.934298, 01:13:24.361475, 02:08:15.357242,…
#> $ tts_min         <time> 02:47:00, 02:44:00, 03:59:00, 04:04:00, 04:33:00, …
#> $ tts_max         <time> 08:07:00, 06:12:00, 10:00:00, 08:26:00, 10:06:00, …
#> $ waso_mean       <time> 01:41:16.800000, 02:19:46.666667, 01:34:55.384615,…
#> $ waso_sd         <time> 01:01:08.086149, 00:46:08.754233, 00:56:56.617761,…
#> $ waso_min        <time> 00:14:00, 00:58:00, 00:23:00, 01:12:00, 00:17:00, …
#> $ waso_max        <time> 04:04:00, 03:25:00, 03:40:00, 02:34:00, 01:36:00, …
#> $ tts_fps_mean    <dbl> 0.7758617755, 0.6446745607, 0.8202364594, 0.7686481…
#> $ tts_fps_sd      <dbl> 0.11565879087, 0.07459272919, 0.06542581849, 0.1350…
#> $ tts_fps_min     <dbl> 0.5000000000, 0.5028571429, 0.7317073171, 0.6130653…
#> $ tts_fps_max     <dbl> 0.9482758621, 0.7843866171, 0.9238095238, 0.8551307…
#> $ awakenings_mean <dbl> 8.440000000, 14.222222222, 17.230769231, 10.0000000…
#> $ awakenings_sd   <dbl> 3.937850513, 5.804691589, 7.350213672, 2.645751311,…
#> $ awakenings_min  <dbl> 2, 5, 6, 7, 1, 10, 4, 3, 10, 2, 3, 8, 4, 7, 0, 4, 2…
#> $ awakenings_max  <dbl> 17, 24, 34, 12, 14, 29, 16, 14, 27, 10, 15, 23, 20,…

1.17 Group Secondary Sleep Data

Code
secondary_sleep_data_stats <-
  secondary_sleep_data |>
  summarize(
    n = n(),
    his_mean = summarize_his(his, mean, na.rm = TRUE),
    his_sd = summarize_his(his, sd, na.rm = TRUE),
    his_min = summarize_his(his, min, na.rm = TRUE),
    his_max = summarize_his(his, max, na.rm = TRUE),
    hfs_mean = summarize_hfs(hfs, mean, na.rm = TRUE),
    hfs_sd = summarize_hfs(hfs, sd, na.rm = TRUE),
    hfs_min = summarize_hfs(hfs, min, na.rm = TRUE),
    hfs_max = summarize_hfs(hfs, max, na.rm = TRUE),
    across(
      .cols = c(fps, tts, waso),
      .fns = list(
        mean = \(x) x |> mean(na.rm = TRUE) |> as_hms(),
        sd = \(x) x |> sd(na.rm = TRUE) |> as_hms(),
        min = \(x) x |> min(na.rm = TRUE) |> as_hms(),
        max = \(x) x |> max(na.rm = TRUE) |> as_hms()
      ),
      .names = "{.col}_{.fn}"
    ),
    across(
      .cols = c(tts_fps, awakenings),
      .fns = list(
        mean = \(x) x |> mean(na.rm = TRUE),
        sd = \(x) x |> sd(na.rm = TRUE),
        min = \(x) x |> min(na.rm = TRUE),
        max = \(x) x |> max(na.rm = TRUE)
      ),
      .names = "{.col}_{.fn}"
    ),
    .by = id
  )
secondary_sleep_data_stats |> glimpse()
#> Rows: 41
#> Columns: 30
#> $ id              <chr> "9e858cd8", "4b44f0ff", "a053ce64", "0d483b7f", "5f…
#> $ n               <int> 35, 11, 10, 8, 9, 1, 1, 18, 4, 5, 1, 5, 2, 12, 4, 1…
#> $ his_mean        <time> 24:56:58.857143, 22:23:16.090909, 15:33:03.000000,…
#> $ his_sd          <time> 08:57:33.700323, 07:42:30.785738, 02:37:02.687515,…
#> $ his_min         <time> 12:01:04, 12:24:27, 12:00:15, 13:47:28, 13:58:41, …
#> $ his_max         <time> 35:07:04, 34:35:27, 21:21:15, 15:30:28, 21:34:41, …
#> $ hfs_mean        <time> 35:11:04.000000, 31:05:16.090909, 35:48:15.000000,…
#> $ hfs_sd          <time> 05:37:54.966309, 08:30:19.050754, 08:01:22.049789,…
#> $ hfs_min         <time> 18:10:04, 20:46:27, 19:15:15, 15:02:28, 18:15:41, …
#> $ hfs_max         <time> 41:45:04, 41:51:27, 41:45:15, 16:40:28, 41:50:41, …
#> $ fps_mean        <time> 01:19:13.714286, 02:09:16.363636, 01:03:12.000000,…
#> $ fps_sd          <time> 01:00:34.950510, 00:57:38.633466, 00:55:11.048172,…
#> $ fps_min         <time> 00:14:00, 00:49:00, 00:09:00, 00:21:00, 00:36:00, …
#> $ fps_max         <time> 03:35:00, 04:05:00, 02:57:00, 02:06:00, 01:59:00, …
#> $ tts_mean        <time> 01:14:56.571429, 01:48:54.545455, 00:55:42.000000,…
#> $ tts_sd          <time> 00:57:47.501171, 00:42:45.230452, 00:45:55.220499,…
#> $ tts_min         <time> 00:14:00, 00:45:00, 00:09:00, 00:21:00, 00:36:00, …
#> $ tts_max         <time> 03:32:00, 03:08:00, 02:24:00, 01:55:00, 01:49:00, …
#> $ waso_mean       <time> 00:04:17.142857, 00:20:21.818182, 00:07:30.000000,…
#> $ waso_sd         <time> 00:05:45.462788, 00:18:16.957777, 00:10:29.444199,…
#> $ waso_min        <time> 00:00:00, 00:00:00, 00:00:00, 00:00:00, 00:00:00, …
#> $ waso_max        <time> 00:25:00, 00:57:00, 00:33:00, 00:20:00, 00:54:00, …
#> $ tts_fps_mean    <dbl> 0.9555844698, 0.8627676966, 0.9118161628, 0.9453073…
#> $ tts_fps_sd      <dbl> 0.05273858710, 0.08169042138, 0.07690741832, 0.0808…
#> $ tts_fps_min     <dbl> 0.8000000000, 0.6942675159, 0.7916666667, 0.7674418…
#> $ tts_fps_max     <dbl> 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000…
#> $ awakenings_mean <dbl> 0.9714285714, 3.1818181818, 1.6000000000, 0.8750000…
#> $ awakenings_sd   <dbl> 1.0706159383, 2.3587361793, 1.6465452047, 1.1259916…
#> $ awakenings_min  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, …
#> $ awakenings_max  <dbl> 4, 8, 5, 3, 7, 0, 0, 4, 2, 4, 2, 5, 1, 1, 0, 5, 3, …

1.18 Import, Group and Transform SRI Data

See the SRI Analysis Report Quarto notebook report to process and write the Sleep Irregularity Index (SRI) data.

1.18.1 SRI by Gestational Age Week

1.18.1.1 Get Paths to the Data Files

Code
files <-
  dir_ls(
    path = sri_data_dir,
    type = "file",
    regexp = "_sri-data.rds$"
  )

1.18.1.2 Import, Group and Transform the Data

Code
sri_data <- tibble()

cli_progress_bar(total = length(files), clear = FALSE)

for (i in files) {
  sri_data <-
    i |>
    read_rds() |>
    mutate(
      time =
        time |>
        as.numeric() |>
        divide_by(60) |>
        as.integer() |>
        dminutes() |>
        as.numeric() |>
        as_hms()
    ) |>
    bind_rows(sri_data)

  cli_progress_update()
}

cli_progress_done()
Code
sri_data <-
  sri_data |>
  mutate(ga_week = as.factor(ga_week)) |>
  arrange(ga_week)
sri_data |> glimpse()
#> Rows: 161,181
#> Columns: 8
#> $ time           <time> 00:00:00, 00:01:00, 00:02:00, 00:03:00, 00:04:00, 0…
#> $ state          <list> <Sleeping, Awake, Sleeping, Awake, Sleeping, Sleepi…
#> $ previous_state <list> <NA, Sleeping, Awake, Sleeping, Awake, Sleeping, Sl…
#> $ agreement      <list> <NA, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE>, <NA,…
#> $ sri            <dbl> -66.66666667, -66.66666667, -66.66666667, -66.666666…
#> $ valid_data     <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
#> $ id             <chr> "e06521cc", "e06521cc", "e06521cc", "e06521cc", "e06…
#> $ ga_week        <fct> 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, …

1.18.2 SRI Mean Data by Gestational Age Week and ID

1.18.2.1 Get Paths to Data Files

Code
files <-
  dir_ls(
    path = sri_data_dir,
    type = "file",
    regexp = "_sri-mean-data.rds$"
  )

1.18.2.2 Import and Group Data

Code
sri_mean_data <- tibble()

cli_progress_bar(total = length(files), clear = FALSE)

for (i in files) {
  sri_mean_data <-
    i |>
    read_rds(i) |>
    bind_rows(sri_mean_data)

  cli_progress_update()
}

cli_progress_done()

1.18.2.3 Transform SRI Mean Data

Code
sri_mean_data <-
  sri_mean_data |>
  mutate(ga_week = as.factor(ga_week)) |>
  arrange(ga_week)
sri_mean_data |> glimpse()
#> Rows: 118
#> Columns: 3
#> $ id      <chr> "e06521cc", "4cda994c", "e06521cc", "a8194247", "9e43829a",…
#> $ ga_week <fct> 33, 33, 34, 34, 34, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35,…
#> $ sri     <dbl> 73.75293015, 50.77314815, 68.65350746, 75.85648148, 53.3755…

1.18.3 SRI Mean Data by Gestational Age Week (Only)

Code
sri_mean_data_by_ga_week <-
  sri_data |>
  summarize(
    sri_mean = mean(sri, na.rm = TRUE),
    sri_sd = sd(sri, na.rm = TRUE),
    sri_min = min(sri, na.rm = TRUE),
    sri_max = max(sri, na.rm = TRUE),
    .by = ga_week
  )

1.19 Get SRI Data Unique IDs

Code
sri_data_ids <- sri_data |> pull(id) |> unique()
sri_data_ids
#>  [1] "e06521cc" "4cda994c" "a8194247" "9e43829a" "5f28e20f" "5024b37e"
#>  [7] "3c2a132a" "ff8105e4" "f207fd6b" "b1c46113" "6ff93997" "1193992a"
#> [13] "f46f88c5" "b5b1d89e" "aeab920e" "a4899cae" "a027a958" "8369d5e8"
#> [19] "619b1d43" "2dec1b47" "1c559275" "d3350e10" "c826aad6" "b21511da"
#> [25] "9e858cd8" "6f89b17f" "5af4817a" "4c84ce02" "36566db2" "3196960f"
#> [31] "1d215e39" "18d5bdc1" "16791cc5" "f1e30a89" "db850249" "a053ce64"
#> [37] "7cbf7851" "4b44f0ff" "225f2a39" "0d483b7f"

1.20 Categorize Participantes by SRI Levels

Code
sri_data_by_id <-
  sri_data |>
  summarize(
    sri = mean(sri, na.rm = TRUE),
    .by = id
  )
Code
sri_quintiles <-
  sri_data_by_id |>
  pull(sri) |>
  quantile(probs = c(0, 0.2, 0.4, 0.6, 0.8, 1))
sri_quintiles
#>          0%         20%         40%         60%         80%        100% 
#> 44.07514451 53.52458860 61.75108230 69.86563612 74.73463204 83.22344322
Code
sri_top_quintile <- sri_quintiles[5]
Code
sri_bottom_quintile <- sri_quintiles[2]
Code
regular_sri_ids <-
  sri_data_by_id |>
  filter(sri >= sri_top_quintile) |>
  pull(id)
regular_sri_ids
#> [1] "3c2a132a" "6ff93997" "aeab920e" "2dec1b47" "c826aad6" "b21511da"
#> [7] "5af4817a" "3196960f"
Code
others_sri_ids <-
  sri_data_by_id |>
  filter(
    sri > sri_bottom_quintile &
    sri < sri_top_quintile
  ) |>
  pull(id)
others_sri_ids
#>  [1] "e06521cc" "4cda994c" "a8194247" "9e43829a" "5f28e20f" "5024b37e"
#>  [7] "ff8105e4" "f207fd6b" "b1c46113" "f46f88c5" "b5b1d89e" "a4899cae"
#> [13] "a027a958" "8369d5e8" "1c559275" "d3350e10" "9e858cd8" "6f89b17f"
#> [19] "36566db2" "1d215e39" "18d5bdc1" "7cbf7851" "225f2a39" "0d483b7f"
Code
irregular_sri_ids <-
  sri_data_by_id |>
  filter(sri <= sri_bottom_quintile) |>
  pull(id)
irregular_sri_ids
#> [1] "1193992a" "619b1d43" "4c84ce02" "16791cc5" "f1e30a89" "db850249"
#> [7] "a053ce64" "4b44f0ff"

1.21 Import, Group and Transform Sleep Proportions Data

See the SRI Analysis Report Quarto notebook report to process and write the Sleep Proportions Index data.

1.21.1 Sleep Proportions by Gestational Age Week

1.21.1.1 Get Paths to Data Files

Code
files <-
  dir_ls(
    path = sleep_prop_dir,
    type = "file",
    regexp = "_sleep-prop-data.rds$"
  )

1.21.1.2 Group and Transform Data

Code
sleep_prop_data <- tibble()

cli_progress_bar(total = length(files), clear = FALSE)

for (i in files) {
  sleep_prop_data <-
    i |>
    read_rds() |>
    mutate(
      time =
        time |>
        as.numeric() |>
        divide_by(60) |>
        as.integer() |>
        dminutes() |>
        as.numeric() |>
        as_hms()
    ) |>
    bind_rows(sleep_prop_data)

  cli_progress_update()
}

cli_progress_done()
Code
sleep_prop_data <-
  sleep_prop_data |>
  mutate(ga_week = as.factor(ga_week)) |>
  arrange(ga_week)
sleep_prop_data |> glimpse()
#> Rows: 185,760
#> Columns: 5
#> $ time    <time> 00:00:00, 00:01:00, 00:02:00, 00:03:00, 00:04:00, 00:05:00…
#> $ state   <list> <Other, Other, State, Other, State, State, Other>, <Other,…
#> $ prop    <dbl> 0.4285714286, 0.4285714286, 0.4285714286, 0.4285714286, 0.5…
#> $ id      <chr> "e06521cc", "e06521cc", "e06521cc", "e06521cc", "e06521cc",…
#> $ ga_week <fct> 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,…

1.21.2 Sleep Proportions Mean Data by Gestational Age Week and IDs

1.21.2.1 Get Paths to Mean Data Files

Code
files <-
  dir_ls(
    path = sleep_prop_dir,
    type = "file",
    regexp = "_sleep-prop-mean-data.rds$"
  )

1.21.2.2 Import and Group Mean Data

Code
sleep_prop_mean_data <- tibble()

cli_progress_bar(total = length(files), clear = FALSE)

for (i in files) {
  sleep_prop_mean_data <-
    i |>
    read_rds(i) |>
    bind_rows(sleep_prop_mean_data)

  cli_progress_update()
}

cli_progress_done()

1.21.2.3 Transform Mean Data

Code
sleep_prop_mean_data <-
  sleep_prop_mean_data |>
  mutate(ga_week = as.factor(ga_week)) |>
  arrange(ga_week)
sleep_prop_mean_data |> glimpse()
#> Rows: 129
#> Columns: 3
#> $ id      <chr> "e06521cc", "4cda994c", "e06521cc", "a8194247", "9e43829a",…
#> $ ga_week <fct> 33, 33, 34, 34, 34, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35,…
#> $ prop    <dbl> 0.3103174603, 0.2721891534, 0.3164682540, 0.2696428571, 0.3…

1.21.3 Sleep Proportions Mean Data by Gestational Age Week (Only)

Code
sleep_prop_mean_data_by_ga_week <-
  sleep_prop_data |>
  summarize(
    sleep_prop_mean = mean(prop, na.rm = TRUE),
    sleep_prop_sd = sd(prop, na.rm = TRUE),
    sleep_prop_min = min(prop, na.rm = TRUE),
    sleep_prop_max = max(prop, na.rm = TRUE),
    .by = ga_week
  )

1.22 Import, Group and Transform Illuminance Levels Data

See the SRI Analysis Report Quarto notebook report to process and write the Illuminance Data data.

1.22.1 Illuminance Levels by Gestational Age Week

1.22.1.1 Get Paths to Data Files

Code
files <-
  dir_ls(
    path = lux_data_dir,
    type = "file",
    regexp = "_lux-data.rds$"
  )

1.22.1.2 Group and Transform Data

Code
lux_data <- tibble()

cli_progress_bar(total = length(files), clear = FALSE)

for (i in files) {
  lux_data <-
    i |>
    read_rds() |>
    mutate(
      time =
        time |>
        as.numeric() |>
        divide_by(60) |>
        as.integer() |>
        dminutes() |>
        as.numeric() |>
        as_hms()
    ) |>
    bind_rows(lux_data)

  cli_progress_update()
}

cli_progress_done()
Code
lux_data <-
  lux_data |>
  mutate(ga_week = as.factor(ga_week)) |>
  arrange(ga_week)
lux_data |> glimpse()
#> Rows: 237,329
#> Columns: 4
#> $ time    <time> 00:00:00, 00:01:00, 00:02:00, 00:03:00, 00:04:00, 00:05:00…
#> $ lux     <dbl> 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01,…
#> $ id      <chr> "e06521cc", "e06521cc", "e06521cc", "e06521cc", "e06521cc",…
#> $ ga_week <fct> 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,…

1.22.2 Illuminance Levels Mean Data by Gestational Age Week and IDs

1.22.2.1 Get Paths to Data Files

Code
files <-
  dir_ls(
    path = lux_data_dir,
    type = "file",
    regexp = "_lux-mean-data.rds$"
  )

1.22.2.2 Import and Group Mean Data

Code
lux_mean_data <- tibble()

cli_progress_bar(total = length(files), clear = FALSE)

for (i in files) {
  lux_mean_data <-
    i |>
    read_rds(i) |>
    bind_rows(lux_mean_data)

  cli_progress_update()
}

cli_progress_done()

1.22.2.3 Transform Mean Data

Code
lux_mean_data <-
  lux_mean_data |>
  mutate(ga_week = as.factor(ga_week)) |>
  arrange(ga_week)
lux_mean_data |> glimpse()
#> Rows: 170
#> Columns: 3
#> $ id      <chr> "e06521cc", "e06521cc", "a8194247", "5024b37e", "4cda994c",…
#> $ ga_week <fct> 32, 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 34, 34, 34, 34,…
#> $ lux     <dbl> 381.44080671, 211.18389400, 145.59865162, 54.87876126, 123.…

1.22.3 Illuminance Levels Mean Data by Gestational Age Week (Only)

Code
lux_mean_data_by_ga_week <-
  lux_data |>
  summarize(
    lux_mean = mean(lux, na.rm = TRUE),
    lux_sd = sd(lux, na.rm = TRUE),
    lux_min = min(lux, na.rm = TRUE),
    lux_max = max(lux, na.rm = TRUE),
    .by = ga_week
  )

1.23 Create Main Dataset

Code
data <-
  field_form_data |>
  left_join(control_form_data, by = "id") |>
  left_join(medical_record_data, by = "id") |>
  left_join(
    primary_sleep_data_stats,
    by = "id",
    suffix = c("", "_primary")
  ) |>
  left_join(
    secondary_sleep_data_stats,
    by = "id",
    suffix = c("", "_secondary")
  ) |>
  filter(id %in% sri_data_ids) |>
  rename(n_primary_sleep = n, n_secondary_sleep = n_secondary) |>
  mutate(
    ga_duration =
      interval(
        start = ga_start,
        end = baby_birth
      ) |>
      int_length(),
    ga_duration = ifelse(sign(ga_duration) == -1, NA, ga_duration),
    ga_duration = as.duration(ga_duration)
  ) |>
  dplyr::select(-starts_with("cpf"))
Code
data |> glimpse()
#> Rows: 39
#> Columns: 92
#> $ id                        <chr> "9e858cd8", "a053ce64", "db850249", "5af4…
#> $ timestamp                 <dttm> 2023-05-21 11:18:49, 2023-05-26 17:55:52…
#> $ birth_date                <date> 1991-03-22, 2001-07-25, 1998-01-12, 2001…
#> $ age                       <dbl> 32.16388889, 21.83611111, 25.47222222, 22…
#> $ weight_before             <dbl> 70, 50, 70, 84, 49, 60, 66, 73, 52, 68, 6…
#> $ weight_current            <dbl> 86, 75, 76, 87, 58, 91, 79, 90, 62, 80, 7…
#> $ height                    <dbl> 160, 156, 169, 168, 157, 164, 159, 159, 1…
#> $ bmi_before                <dbl> 27.34375000, 20.54569362, 24.50894577, 29…
#> $ bmi_current               <dbl> 33.59375000, 30.81854043, 26.60971255, 30…
#> $ family_income             <dbl> 4000, 2800, 5000, 4000, 3000, 9000, 2500,…
#> $ gestations                <dbl> 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 4, 1, 1,…
#> $ study                     <lgl> FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, …
#> $ work                      <lgl> TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALS…
#> $ health_plan               <lgl> FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, …
#> $ solo                      <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,…
#> $ ethnicity                 <ord> Branca, Parda, Branca, Parda, Branca, Par…
#> $ exercise                  <lgl> NA, NA, NA, NA, NA, NA, NA, FALSE, FALSE,…
#> $ education                 <ord> NA, NA, NA, NA, NA, NA, NA, Ensino superi…
#> $ deliveries                <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0,…
#> $ abortions                 <dbl> 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0,…
#> $ birth_center_delivery     <lgl> FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, T…
#> $ ga_start                  <date> 2022-09-03, 2022-09-03, 2022-10-13, 2022…
#> $ partograph_begin          <dttm> NA, 2023-06-08 11:40:00, 2023-07-11 15:0…
#> $ begin_dilation            <int> NA, 7, 5, NA, NA, NA, 7, 7, 7, NA, 10, NA…
#> $ baby_birth                <dttm> NA, 2023-06-08 14:54:00, 2023-07-11 18:0…
#> $ baby_weight               <dbl> NA, 2995, 3010, NA, NA, NA, 3730, 2740, 3…
#> $ baby_length               <dbl> NA, 46.0, 45.5, NA, NA, NA, 51.0, 47.0, 4…
#> $ baby_head_perimeter       <dbl> NA, 32.5, 33.0, NA, NA, NA, 34.0, 32.0, 3…
#> $ baby_thoracic_perimeter   <dbl> NA, 31.0, 32.0, NA, NA, NA, 34.5, 31.0, 3…
#> $ baby_abdominal_perimeter  <dbl> NA, 30.0, 33.5, NA, NA, NA, 31.5, 28.0, 3…
#> $ apgar_score_1_minute      <int> NA, 9, 9, NA, NA, NA, 9, 9, 9, NA, 9, NA,…
#> $ apgar_score_5_minute      <int> NA, 10, 10, NA, NA, NA, 10, 10, 10, NA, 1…
#> $ partograph_duration       <Duration> NA, 11640s (~3.23 hours), 10920s (~3…
#> $ n_primary_sleep           <int> 25, 13, 7, 23, 18, 16, 22, 13, 17, 20, 17…
#> $ his_mean                  <time> 23:48:01.600000, 02:24:28.846154, 01:28:…
#> $ his_sd                    <time> 01:06:59.308896, 01:26:16.088514, 01:06:…
#> $ his_min                   <time> 21:58:04, 00:04:15, 00:05:52, 22:47:31, …
#> $ his_max                   <time> 26:42:04, 05:58:15, 03:41:52, 28:21:31, …
#> $ hfs_mean                  <time> 06:55:47.200000, 10:53:47.307692, 09:30:…
#> $ hfs_sd                    <time> 01:45:15.303318, 02:30:46.599871, 00:59:…
#> $ hfs_min                   <time> 03:27:04, 07:38:15, 08:02:52, 06:57:31, …
#> $ hfs_max                   <time> 10:32:04, 15:37:15, 10:24:52, 13:54:31, …
#> $ fps_mean                  <time> 07:07:45.600000, 08:29:18.461538, 08:01:…
#> $ fps_sd                    <time> 02:00:10.727009, 02:48:00.011447, 01:15:…
#> $ fps_min                   <time> 03:07:00, 04:22:00, 06:34:00, 06:14:00, …
#> $ fps_max                   <time> 10:41:00, 13:40:00, 09:54:00, 12:14:00, …
#> $ tts_mean                  <time> 05:26:28.800000, 06:54:23.076923, 06:50:…
#> $ tts_sd                    <time> 01:29:47.934298, 02:08:15.357242, 01:07:…
#> $ tts_min                   <time> 02:47:00, 03:59:00, 05:47:00, 05:37:00, …
#> $ tts_max                   <time> 08:07:00, 10:00:00, 08:35:00, 09:34:00, …
#> $ waso_mean                 <time> 01:41:16.800000, 01:34:55.384615, 01:11:…
#> $ waso_sd                   <time> 01:01:08.086149, 00:56:56.617761, 00:41:…
#> $ waso_min                  <time> 00:14:00, 00:23:00, 00:28:00, 00:28:00, …
#> $ waso_max                  <time> 04:04:00, 03:40:00, 02:34:00, 04:03:00, …
#> $ tts_fps_mean              <dbl> 0.7758617755, 0.8202364594, 0.8544758095,…
#> $ tts_fps_sd                <dbl> 0.11565879087, 0.06542581849, 0.076444496…
#> $ tts_fps_min               <dbl> 0.5000000000, 0.7317073171, 0.6986301370,…
#> $ tts_fps_max               <dbl> 0.9482758621, 0.9238095238, 0.9289340102,…
#> $ awakenings_mean           <dbl> 8.440000000, 17.230769231, 10.285714286, …
#> $ awakenings_sd             <dbl> 3.937850513, 7.350213672, 3.903600292, 3.…
#> $ awakenings_min            <dbl> 2, 6, 3, 8, 1, 10, 10, 4, 7, 0, 4, 8, 4, …
#> $ awakenings_max            <dbl> 17, 34, 15, 23, 14, 29, 27, 20, 23, 7, 14…
#> $ n_secondary_sleep         <int> 35, 10, 5, 1, 8, 9, 18, 5, 2, 12, 19, NA,…
#> $ his_mean_secondary        <time> 24:56:58.857143, 15:33:03.000000, 20:21:…
#> $ his_sd_secondary          <time> 08:57:33.700323, 02:37:02.687515, 08:22:…
#> $ his_min_secondary         <time> 12:01:04, 12:00:15, 13:22:52, 14:15:31, …
#> $ his_max_secondary         <time> 35:07:04, 21:21:15, 34:11:52, 14:15:31, …
#> $ hfs_mean_secondary        <time> 35:11:04.000000, 35:48:15.000000, 35:54:…
#> $ hfs_sd_secondary          <time> 05:37:54.966309, 08:01:22.049789, 07:46:…
#> $ hfs_min_secondary         <time> 18:10:04, 19:15:15, 22:29:52, 15:43:31, …
#> $ hfs_max_secondary         <time> 41:45:04, 41:45:15, 41:11:52, 15:43:31, …
#> $ fps_mean_secondary        <time> 01:19:13.714286, 01:03:12.000000, 01:09:…
#> $ fps_sd_secondary          <time> 01:00:34.950510, 00:55:11.048172, 01:12:…
#> $ fps_min_secondary         <time> 00:14:00, 00:09:00, 00:11:00, 01:28:00, …
#> $ fps_max_secondary         <time> 03:35:00, 02:57:00, 03:03:00, 01:28:00, …
#> $ tts_mean_secondary        <time> 01:14:56.571429, 00:55:42.000000, 01:04:…
#> $ tts_sd_secondary          <time> 00:57:47.501171, 00:45:55.220499, 01:04:…
#> $ tts_min_secondary         <time> 00:14:00, 00:09:00, 00:11:00, 01:16:00, …
#> $ tts_max_secondary         <time> 03:32:00, 02:24:00, 02:41:00, 01:16:00, …
#> $ waso_mean_secondary       <time> 00:04:17.142857, 00:07:30.000000, 00:05:…
#> $ waso_sd_secondary         <time> 00:05:45.462788, 00:10:29.444199, 00:09:…
#> $ waso_min_secondary        <time> 00:00:00, 00:00:00, 00:00:00, 00:12:00, …
#> $ waso_max_secondary        <time> 00:25:00, 00:33:00, 00:22:00, 00:12:00, …
#> $ tts_fps_mean_secondary    <dbl> 0.9555844698, 0.9118161628, 0.9546406611,…
#> $ tts_fps_sd_secondary      <dbl> 0.05273858710, 0.07690741832, 0.058366343…
#> $ tts_fps_min_secondary     <dbl> 0.8000000000, 0.7916666667, 0.8797814208,…
#> $ tts_fps_max_secondary     <dbl> 1.0000000000, 1.0000000000, 1.0000000000,…
#> $ awakenings_mean_secondary <dbl> 0.9714285714, 1.6000000000, 1.2000000000,…
#> $ awakenings_sd_secondary   <dbl> 1.0706159383, 1.6465452047, 1.6431676725,…
#> $ awakenings_min_secondary  <dbl> 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, NA, NA, …
#> $ awakenings_max_secondary  <dbl> 4, 5, 4, 2, 3, 7, 4, 5, 1, 1, 5, NA, NA, …
#> $ ga_duration               <Duration> NA, 24083640s (~39.82 weeks), 234901…

1.24 Get Frequency and Descriptive Statistics (General)

Code
variables <-
  data |>
  select(!starts_with(c("his_", "hfs_"))) |>
  names()
for (i in variables) {
  cli_h1(i)
  cat_line()

  data |>
    stats_summary(
      col = i,
      name = i,
      threshold = NULL
    ) |>
    print(n = Inf)

  cat_line()
}
#> 
#> ── id ───────────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 46 × 2
#>    name       value    
#>    <chr>      <chr>    
#>  1 name       id       
#>  2 class      character
#>  3 n          39       
#>  4 n_rm_na    39       
#>  5 n_na       0        
#>  6 n_unique   39       
#>  7 mode       <NA>     
#>  8 '0d483b7f' 1        
#>  9 '1193992a' 1        
#> 10 '16791cc5' 1        
#> 11 '18d5bdc1' 1        
#> 12 '1c559275' 1        
#> 13 '1d215e39' 1        
#> 14 '225f2a39' 1        
#> 15 '2dec1b47' 1        
#> 16 '3196960f' 1        
#> 17 '36566db2' 1        
#> 18 '3c2a132a' 1        
#> 19 '4c84ce02' 1        
#> 20 '4cda994c' 1        
#> 21 '5024b37e' 1        
#> 22 '5af4817a' 1        
#> 23 '5f28e20f' 1        
#> 24 '619b1d43' 1        
#> 25 '6f89b17f' 1        
#> 26 '6ff93997' 1        
#> 27 '7cbf7851' 1        
#> 28 '8369d5e8' 1        
#> 29 '9e43829a' 1        
#> 30 '9e858cd8' 1        
#> 31 'a027a958' 1        
#> 32 'a053ce64' 1        
#> 33 'a4899cae' 1        
#> 34 'a8194247' 1        
#> 35 'aeab920e' 1        
#> 36 'b1c46113' 1        
#> 37 'b21511da' 1        
#> 38 'b5b1d89e' 1        
#> 39 'c826aad6' 1        
#> 40 'd3350e10' 1        
#> 41 'db850249' 1        
#> 42 'e06521cc' 1        
#> 43 'f1e30a89' 1        
#> 44 'f207fd6b' 1        
#> 45 'f46f88c5' 1        
#> 46 'ff8105e4' 1
#> 
#> ── timestamp ────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value                                
#>    <chr>    <chr>                                
#>  1 name     timestamp                            
#>  2 class    POSIXct                              
#>  3 n        39                                   
#>  4 n_rm_na  39                                   
#>  5 n_na     0                                    
#>  6 mean     2024-10-24 16:07:01.179487           
#>  7 var      428254166638391s (~13570555.64 years)
#>  8 sd       20694302.7579668s (~34.22 weeks)     
#>  9 min      2023-05-21 14:18:49                  
#> 10 q_1      2024-10-30 11:43:57.5                
#> 11 median   2025-01-29 18:58:50                  
#> 12 q_3      2025-04-06 06:11:05.5                
#> 13 max      2025-04-30 19:17:49                  
#> 14 iqr      13631228s (~22.54 weeks)             
#> 15 range    61361940s (~1.94 years)              
#> 16 skewness -1.41007165799547                    
#> 17 kurtosis 3.36584154988078
#> 
#> ── birth_date ───────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value                              
#>    <chr>    <chr>                              
#>  1 name     birth_date                         
#>  2 class    Date                               
#>  3 n        39                                 
#>  4 n_rm_na  39                                 
#>  5 n_na     0                                  
#>  6 mean     1996-03-24                         
#>  7 var      386328752336.842s (~12242.02 years)
#>  8 sd       182698670.498455s (~5.79 years)    
#>  9 min      1983-07-14                         
#> 10 q_1      1991-11-06                         
#> 11 median   1996-08-16                         
#> 12 q_3      2001-02-19                         
#> 13 max      2005-06-01                         
#> 14 iqr      293155200s (~9.29 years)           
#> 15 range    690595200s (~21.88 years)          
#> 16 skewness -0.289358384860012                 
#> 17 kurtosis 2.11569825381741
#> 
#> ── age ──────────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     age              
#>  2 class    numeric          
#>  3 n        39               
#>  4 n_rm_na  39               
#>  5 n_na     0                
#>  6 mean     28.5842592592593 
#>  7 var      35.1160893166558 
#>  8 sd       5.92588299890032 
#>  9 min      18.7611111111111 
#> 10 q_1      23.725           
#> 11 median   28.3222222222222 
#> 12 q_3      32.7222222222222 
#> 13 max      41.7944444444444 
#> 14 iqr      8.99722222222223 
#> 15 range    23.0333333333333 
#> 16 skewness 0.329207759544717
#> 17 kurtosis 2.18731469978017
#> 
#> ── weight_before ────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     weight_before    
#>  2 class    numeric          
#>  3 n        39               
#>  4 n_rm_na  38               
#>  5 n_na     1                
#>  6 mean     66.5263157894737 
#>  7 var      137.120910384068 
#>  8 sd       11.7098638072382 
#>  9 min      49               
#> 10 q_1      59.25            
#> 11 median   64.5             
#> 12 q_3      72.25            
#> 13 max      98               
#> 14 iqr      13               
#> 15 range    49               
#> 16 skewness 0.695185733996486
#> 17 kurtosis 2.99275359882011
#> 
#> ── weight_current ───────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     weight_current   
#>  2 class    numeric          
#>  3 n        39               
#>  4 n_rm_na  38               
#>  5 n_na     1                
#>  6 mean     78.2552631578947 
#>  7 var      125.384160739687 
#>  8 sd       11.1975068983987 
#>  9 min      58               
#> 10 q_1      71.25            
#> 11 median   78               
#> 12 q_3      85.75            
#> 13 max      104              
#> 14 iqr      14.5             
#> 15 range    46               
#> 16 skewness 0.175135354236171
#> 17 kurtosis 2.66212887985443
#> 
#> ── height ───────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     height           
#>  2 class    numeric          
#>  3 n        39               
#>  4 n_rm_na  38               
#>  5 n_na     1                
#>  6 mean     162.815789473684 
#>  7 var      49.8840682788051 
#>  8 sd       7.06286544391192 
#>  9 min      148              
#> 10 q_1      158.25           
#> 11 median   161.5            
#> 12 q_3      168              
#> 13 max      180              
#> 14 iqr      9.75             
#> 15 range    32               
#> 16 skewness 0.224765616591508
#> 17 kurtosis 2.77846515801159
#> 
#> ── bmi_before ───────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     bmi_before       
#>  2 class    numeric          
#>  3 n        39               
#>  4 n_rm_na  38               
#>  5 n_na     1                
#>  6 mean     25.0779103837828 
#>  7 var      15.2290699408858 
#>  8 sd       3.90244409836782 
#>  9 min      17.708576965485  
#> 10 q_1      22.3539498033178 
#> 11 median   24.8726430476398 
#> 12 q_3      28.4334703242117 
#> 13 max      33.2986472424558 
#> 14 iqr      6.07952052089398 
#> 15 range    15.5900702769708 
#> 16 skewness 0.153264722433076
#> 17 kurtosis 2.20142994779705
#> 
#> ── bmi_current ──────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value             
#>    <chr>    <chr>             
#>  1 name     bmi_current       
#>  2 class    numeric           
#>  3 n        39                
#>  4 n_rm_na  38                
#>  5 n_na     1                 
#>  6 mean     29.551091175781   
#>  7 var      15.8107337615539  
#>  8 sd       3.97627133902528  
#>  9 min      21.0498179023689  
#> 10 q_1      27.4266526401769  
#> 11 median   30.2738226783593  
#> 12 q_3      31.6340414937765  
#> 13 max      38.7096774193548  
#> 14 iqr      4.20738885359958  
#> 15 range    17.6598595169859  
#> 16 skewness -0.288514474909075
#> 17 kurtosis 2.87432248554299
#> 
#> ── family_income ────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value           
#>    <chr>    <chr>           
#>  1 name     family_income   
#>  2 class    numeric         
#>  3 n        39              
#>  4 n_rm_na  35              
#>  5 n_na     4               
#>  6 mean     5316.25142857143
#>  7 var      11989169.6008067
#>  8 sd       3462.53802878852
#>  9 min      6.8             
#> 10 q_1      3000            
#> 11 median   5000            
#> 12 q_3      6581            
#> 13 max      15000           
#> 14 iqr      3581            
#> 15 range    14993.2         
#> 16 skewness 1.14071351302025
#> 17 kurtosis 3.89654272598932
#> 
#> ── gestations ───────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     gestations       
#>  2 class    numeric          
#>  3 n        39               
#>  4 n_rm_na  39               
#>  5 n_na     0                
#>  6 mean     1.43589743589744 
#>  7 var      0.673414304993252
#>  8 sd       0.820618245588807
#>  9 min      1                
#> 10 q_1      1                
#> 11 median   1                
#> 12 q_3      2                
#> 13 max      4                
#> 14 iqr      1                
#> 15 range    3                
#> 16 skewness 1.94449651416758 
#> 17 kurtosis 5.96409050566062
#> 
#> ── study ────────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 10 × 2
#>    name     value  
#>    <chr>    <chr>  
#>  1 name     study  
#>  2 class    logical
#>  3 n        39     
#>  4 n_rm_na  38     
#>  5 n_na     1      
#>  6 n_unique 3      
#>  7 mode     FALSE  
#>  8 'FALSE'  28     
#>  9 'TRUE'   10     
#> 10 'NA'     1
#> 
#> ── work ─────────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 10 × 2
#>    name     value  
#>    <chr>    <chr>  
#>  1 name     work   
#>  2 class    logical
#>  3 n        39     
#>  4 n_rm_na  38     
#>  5 n_na     1      
#>  6 n_unique 3      
#>  7 mode     TRUE   
#>  8 'FALSE'  10     
#>  9 'TRUE'   28     
#> 10 'NA'     1
#> 
#> ── health_plan ──────────────────────────────────────────────────────────────
#> 
#> # A tibble: 10 × 2
#>    name     value      
#>    <chr>    <chr>      
#>  1 name     health_plan
#>  2 class    logical    
#>  3 n        39         
#>  4 n_rm_na  38         
#>  5 n_na     1          
#>  6 n_unique 3          
#>  7 mode     FALSE      
#>  8 'FALSE'  36         
#>  9 'TRUE'   2          
#> 10 'NA'     1
#> 
#> ── solo ─────────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 10 × 2
#>    name     value  
#>    <chr>    <chr>  
#>  1 name     solo   
#>  2 class    logical
#>  3 n        39     
#>  4 n_rm_na  38     
#>  5 n_na     1      
#>  6 n_unique 3      
#>  7 mode     FALSE  
#>  8 'FALSE'  34     
#>  9 'TRUE'   4      
#> 10 'NA'     1
#> 
#> ── ethnicity ────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 11 × 2
#>    name     value    
#>    <chr>    <chr>    
#>  1 name     ethnicity
#>  2 class    character
#>  3 n        39       
#>  4 n_rm_na  38       
#>  5 n_na     1        
#>  6 n_unique 4        
#>  7 mode     Parda    
#>  8 'Branca' 13       
#>  9 'Parda'  20       
#> 10 'Preta'  5        
#> 11 'NA'     1
#> 
#> ── exercise ─────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 10 × 2
#>    name     value   
#>    <chr>    <chr>   
#>  1 name     exercise
#>  2 class    logical 
#>  3 n        39      
#>  4 n_rm_na  31      
#>  5 n_na     8       
#>  6 n_unique 3       
#>  7 mode     FALSE   
#>  8 'FALSE'  18      
#>  9 'TRUE'   13      
#> 10 'NA'     8
#> 
#> ── education ────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 13 × 2
#>    name                         value                   
#>    <chr>                        <chr>                   
#>  1 name                         education               
#>  2 class                        character               
#>  3 n                            39                      
#>  4 n_rm_na                      31                      
#>  5 n_na                         8                       
#>  6 n_unique                     6                       
#>  7 mode                         Ensino superior completo
#>  8 'Ensino médio completo'      4                       
#>  9 'Ensino superior completo'   15                      
#> 10 'Ensino superior incompleto' 9                       
#> 11 'Mestrado completo'          1                       
#> 12 'Mestrado incompleto'        2                       
#> 13 'NA'                         8
#> 
#> ── deliveries ───────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     deliveries       
#>  2 class    numeric          
#>  3 n        39               
#>  4 n_rm_na  39               
#>  5 n_na     0                
#>  6 mean     0.282051282051282
#>  7 var      0.470985155195682
#>  8 sd       0.686283582198847
#>  9 min      0                
#> 10 q_1      0                
#> 11 median   0                
#> 12 q_3      0                
#> 13 max      3                
#> 14 iqr      0                
#> 15 range    3                
#> 16 skewness 2.55529226897784 
#> 17 kurtosis 8.91939721348758
#> 
#> ── abortions ────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     abortions        
#>  2 class    numeric          
#>  3 n        39               
#>  4 n_rm_na  39               
#>  5 n_na     0                
#>  6 mean     0.179487179487179
#>  7 var      0.203778677462888
#>  8 sd       0.451418516969439
#>  9 min      0                
#> 10 q_1      0                
#> 11 median   0                
#> 12 q_3      0                
#> 13 max      2                
#> 14 iqr      0                
#> 15 range    2                
#> 16 skewness 2.4938071851466  
#> 17 kurtosis 8.64047629489935
#> 
#> ── birth_center_delivery ────────────────────────────────────────────────────
#> 
#> # A tibble: 10 × 2
#>    name     value                
#>    <chr>    <chr>                
#>  1 name     birth_center_delivery
#>  2 class    logical              
#>  3 n        39                   
#>  4 n_rm_na  38                   
#>  5 n_na     1                    
#>  6 n_unique 3                    
#>  7 mode     FALSE                
#>  8 'FALSE'  21                   
#>  9 'TRUE'   17                   
#> 10 'NA'     1
#> 
#> ── ga_start ─────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value                            
#>    <chr>    <chr>                            
#>  1 name     ga_start                         
#>  2 class    Date                             
#>  3 n        39                               
#>  4 n_rm_na  39                               
#>  5 n_na     0                                
#>  6 mean     2024-02-16                       
#>  7 var      5178408485.82996s (~164.09 years)
#>  8 sd       21152174.6677666s (~34.97 weeks) 
#>  9 min      2022-09-03                       
#> 10 q_1      2024-02-09                       
#> 11 median   2024-05-22                       
#> 12 q_3      2024-07-25                       
#> 13 max      2024-09-14                       
#> 14 iqr      14472000s (~23.93 weeks)         
#> 15 range    64108800s (~2.03 years)          
#> 16 skewness -1.37665905511964                
#> 17 kurtosis 3.31474765602735
#> 
#> ── partograph_begin ─────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value                                
#>    <chr>    <chr>                                
#>  1 name     partograph_begin                     
#>  2 class    POSIXct                              
#>  3 n        39                                   
#>  4 n_rm_na  6                                    
#>  5 n_na     33                                   
#>  6 mean     2023-12-26 09:41:40                  
#>  7 var      476339055720000s (~15094273.83 years)
#>  8 sd       21825193.142788s (~36.09 weeks)      
#>  9 min      2023-06-08 14:40:00                  
#> 10 q_1      2023-07-15 20:03:45                  
#> 11 median   2023-08-07 22:07:30                  
#> 12 q_3      2024-07-20 16:30:00                  
#> 13 max      2024-11-20 05:15:00                  
#> 14 iqr      32041575s (~1.02 years)              
#> 15 range    45844500s (~1.45 years)              
#> 16 skewness 0.680544165730453                    
#> 17 kurtosis 1.5023359622644
#> 
#> ── begin_dilation ───────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     begin_dilation   
#>  2 class    integer          
#>  3 n        39               
#>  4 n_rm_na  6                
#>  5 n_na     33               
#>  6 mean     7.16666666666667 
#>  7 var      2.56666666666667 
#>  8 sd       1.60208197875972 
#>  9 min      5                
#> 10 q_1      7                
#> 11 median   7                
#> 12 q_3      7                
#> 13 max      10               
#> 14 iqr      0                
#> 15 range    5                
#> 16 skewness 0.668963383892939
#> 17 kurtosis 3.15078428065441
#> 
#> ── baby_birth ───────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value                                
#>    <chr>    <chr>                                
#>  1 name     baby_birth                           
#>  2 class    POSIXct                              
#>  3 n        39                                   
#>  4 n_rm_na  6                                    
#>  5 n_na     33                                   
#>  6 mean     2023-12-26 12:09:10                  
#>  7 var      476261445064920s (~15091814.49 years)
#>  8 sd       21823415.064213s (~36.08 weeks)      
#>  9 min      2023-06-08 17:54:00                  
#> 10 q_1      2023-07-15 22:45:30                  
#> 11 median   2023-08-08 00:31:00                  
#> 12 q_3      2024-07-20 19:27:45                  
#> 13 max      2024-11-20 06:02:00                  
#> 14 iqr      32042535s (~1.02 years)              
#> 15 range    45835680s (~1.45 years)              
#> 16 skewness 0.680549232124316                    
#> 17 kurtosis 1.50230671994313
#> 
#> ── baby_weight ──────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     baby_weight      
#>  2 class    numeric          
#>  3 n        39               
#>  4 n_rm_na  6                
#>  5 n_na     33               
#>  6 mean     3128.33333333333 
#>  7 var      110886.666666667 
#>  8 sd       332.996496478066 
#>  9 min      2740             
#> 10 q_1      2998.75          
#> 11 median   3045             
#> 12 q_3      3181.25          
#> 13 max      3730             
#> 14 iqr      182.5            
#> 15 range    990              
#> 16 skewness 0.924146195373634
#> 17 kurtosis 3.01294738440248
#> 
#> ── baby_length ──────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     baby_length      
#>  2 class    numeric          
#>  3 n        39               
#>  4 n_rm_na  6                
#>  5 n_na     33               
#>  6 mean     47.6666666666667 
#>  7 var      4.16666666666667 
#>  8 sd       2.04124145231932 
#>  9 min      45.5             
#> 10 q_1      46.25            
#> 11 median   47.25            
#> 12 q_3      48.625           
#> 13 max      51               
#> 14 iqr      2.375            
#> 15 range    5.5              
#> 16 skewness 0.626099033699945
#> 17 kurtosis 2.164416
#> 
#> ── baby_head_perimeter ──────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value              
#>    <chr>    <chr>              
#>  1 name     baby_head_perimeter
#>  2 class    numeric            
#>  3 n        39                 
#>  4 n_rm_na  6                  
#>  5 n_na     33                 
#>  6 mean     32.7833333333333   
#>  7 var      1.24166666666667   
#>  8 sd       1.11430097669645   
#>  9 min      31.2               
#> 10 q_1      32.125             
#> 11 median   32.75              
#> 12 q_3      33.75              
#> 13 max      34                 
#> 14 iqr      1.625              
#> 15 range    2.8                
#> 16 skewness -0.136267408846599 
#> 17 kurtosis 1.7205095265979
#> 
#> ── baby_thoracic_perimeter ──────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value                  
#>    <chr>    <chr>                  
#>  1 name     baby_thoracic_perimeter
#>  2 class    numeric                
#>  3 n        39                     
#>  4 n_rm_na  6                      
#>  5 n_na     33                     
#>  6 mean     32.3333333333333       
#>  7 var      1.96666666666667       
#>  8 sd       1.40237893119751       
#>  9 min      31                     
#> 10 q_1      31.25                  
#> 11 median   32                     
#> 12 q_3      33.125                 
#> 13 max      34.5                   
#> 14 iqr      1.875                  
#> 15 range    3.5                    
#> 16 skewness 0.551647927884841      
#> 17 kurtosis 1.8761850043091
#> 
#> ── baby_abdominal_perimeter ─────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value                   
#>    <chr>    <chr>                   
#>  1 name     baby_abdominal_perimeter
#>  2 class    numeric                 
#>  3 n        39                      
#>  4 n_rm_na  6                       
#>  5 n_na     33                      
#>  6 mean     30.8333333333333        
#>  7 var      3.66666666666667        
#>  8 sd       1.91485421551268        
#>  9 min      28                      
#> 10 q_1      30                      
#> 11 median   30.75                   
#> 12 q_3      31.875                  
#> 13 max      33.5                    
#> 14 iqr      1.875                   
#> 15 range    5.5                     
#> 16 skewness -0.0953462589245572     
#> 17 kurtosis 2.10694214876033
#> 
#> ── apgar_score_1_minute ─────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value               
#>    <chr>    <chr>               
#>  1 name     apgar_score_1_minute
#>  2 class    integer             
#>  3 n        39                  
#>  4 n_rm_na  6                   
#>  5 n_na     33                  
#>  6 mean     9                   
#>  7 var      0                   
#>  8 sd       0                   
#>  9 min      9                   
#> 10 q_1      9                   
#> 11 median   9                   
#> 12 q_3      9                   
#> 13 max      9                   
#> 14 iqr      0                   
#> 15 range    0                   
#> 16 skewness NaN                 
#> 17 kurtosis NaN
#> 
#> ── apgar_score_5_minute ─────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value               
#>    <chr>    <chr>               
#>  1 name     apgar_score_5_minute
#>  2 class    integer             
#>  3 n        39                  
#>  4 n_rm_na  6                   
#>  5 n_na     33                  
#>  6 mean     10                  
#>  7 var      0                   
#>  8 sd       0                   
#>  9 min      10                  
#> 10 q_1      10                  
#> 11 median   10                  
#> 12 q_3      10                  
#> 13 max      10                  
#> 14 iqr      0                   
#> 15 range    0                   
#> 16 skewness NaN                 
#> 17 kurtosis NaN
#> 
#> ── partograph_duration ──────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value              
#>    <chr>    <chr>              
#>  1 name     partograph_duration
#>  2 class    Duration           
#>  3 n        39                 
#>  4 n_rm_na  6                  
#>  5 n_na     33                 
#>  6 mean     02:27:30           
#>  7 var      3570:42:00         
#>  8 sd       00:59:45.320069    
#>  9 min      00:47:00           
#> 10 q_1      01:59:30           
#> 11 median   02:58:30           
#> 12 q_3      03:05:00           
#> 13 max      03:14:00           
#> 14 iqr      01:05:30           
#> 15 range    02:27:00           
#> 16 skewness -0.920174752943521 
#> 17 kurtosis 2.17510201134158
#> 
#> ── n_primary_sleep ──────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value           
#>    <chr>    <chr>           
#>  1 name     n_primary_sleep 
#>  2 class    integer         
#>  3 n        39              
#>  4 n_rm_na  39              
#>  5 n_na     0               
#>  6 mean     21.9487179487179
#>  7 var      93.7867746288799
#>  8 sd       9.68435721299457
#>  9 min      4               
#> 10 q_1      15.5            
#> 11 median   22              
#> 12 q_3      27              
#> 13 max      51              
#> 14 iqr      11.5            
#> 15 range    47              
#> 16 skewness 0.61218363261683
#> 17 kurtosis 3.72479977124911
#> 
#> ── fps_mean ─────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value              
#>    <chr>    <chr>              
#>  1 name     fps_mean           
#>  2 class    hms                
#>  3 n        39                 
#>  4 n_rm_na  39                 
#>  5 n_na     0                  
#>  6 mean     07:41:41.98162     
#>  7 var      2476:06:43.55538   
#>  8 sd       00:49:45.632857    
#>  9 min      05:45:56.842105    
#> 10 q_1      07:16:08.8         
#> 11 median   07:39:10.909091    
#> 12 q_3      08:17:19.288889    
#> 13 max      09:23:30           
#> 14 iqr      01:01:10.488889    
#> 15 range    03:37:33.157895    
#> 16 skewness -0.0838427647660118
#> 17 kurtosis 2.71537310835398
#> 
#> ── fps_sd ───────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     fps_sd           
#>  2 class    hms              
#>  3 n        39               
#>  4 n_rm_na  39               
#>  5 n_na     0                
#>  6 mean     01:44:37.523927  
#>  7 var      1099:47:35.63419 
#>  8 sd       00:33:09.787836  
#>  9 min      00:47:02.143212  
#> 10 q_1      01:24:15.013616  
#> 11 median   01:33:30.00617   
#> 12 q_3      01:58:42.359505  
#> 13 max      03:14:53.564305  
#> 14 iqr      00:34:27.345888  
#> 15 range    02:27:51.421093  
#> 16 skewness 0.911770510079653
#> 17 kurtosis 3.69137824896099
#> 
#> ── fps_min ──────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value             
#>    <chr>    <chr>             
#>  1 name     fps_min           
#>  2 class    hms               
#>  3 n        39                
#>  4 n_rm_na  39                
#>  5 n_na     0                 
#>  6 mean     04:33:04.615385   
#>  7 var      6730:20:09.716599 
#>  8 sd       01:22:02.317515   
#>  9 min      00:53:00          
#> 10 q_1      03:38:00          
#> 11 median   04:27:00          
#> 12 q_3      05:20:30          
#> 13 max      07:25:00          
#> 14 iqr      01:42:30          
#> 15 range    06:32:00          
#> 16 skewness -0.110398335085311
#> 17 kurtosis 3.18384987344753
#> 
#> ── fps_max ──────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     fps_max          
#>  2 class    hms              
#>  3 n        39               
#>  4 n_rm_na  39               
#>  5 n_na     0                
#>  6 mean     10:57:23.076923  
#>  7 var      7371:11:25.020243
#>  8 sd       01:25:51.338178  
#>  9 min      08:18:00         
#> 10 q_1      09:55:00         
#> 11 median   10:49:00         
#> 12 q_3      11:56:00         
#> 13 max      13:57:00         
#> 14 iqr      02:01:00         
#> 15 range    05:39:00         
#> 16 skewness 0.3438069327061  
#> 17 kurtosis 2.43917461368897
#> 
#> ── tts_mean ─────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     tts_mean         
#>  2 class    hms              
#>  3 n        39               
#>  4 n_rm_na  39               
#>  5 n_na     0                
#>  6 mean     06:41:40.758117  
#>  7 var      2397:36:56.949686
#>  8 sd       00:48:57.927322  
#>  9 min      05:17:47.368421  
#> 10 q_1      06:13:08.428571  
#> 11 median   06:40:13.846154  
#> 12 q_3      07:21:18.817204  
#> 13 max      08:29:30         
#> 14 iqr      01:08:10.388633  
#> 15 range    03:11:42.631579  
#> 16 skewness 0.139373849061532
#> 17 kurtosis 2.40229855787472
#> 
#> ── tts_sd ───────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     tts_sd           
#>  2 class    hms              
#>  3 n        39               
#>  4 n_rm_na  39               
#>  5 n_na     0                
#>  6 mean     01:27:59.552894  
#>  7 var      880:36:22.599242 
#>  8 sd       00:29:40.50066   
#>  9 min      00:42:43.651242  
#> 10 q_1      01:09:08.770262  
#> 11 median   01:22:53.619248  
#> 12 q_3      01:38:18.859221  
#> 13 max      02:46:59.017167  
#> 14 iqr      00:29:10.088959  
#> 15 range    02:04:15.365925  
#> 16 skewness 0.820632463644499
#> 17 kurtosis 3.35257131111213
#> 
#> ── tts_min ──────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value             
#>    <chr>    <chr>             
#>  1 name     tts_min           
#>  2 class    hms               
#>  3 n        39                
#>  4 n_rm_na  39                
#>  5 n_na     0                 
#>  6 mean     03:59:16.923077   
#>  7 var      4314:59:50.283401 
#>  8 sd       01:05:41.318343   
#>  9 min      00:53:00          
#> 10 q_1      03:21:00          
#> 11 median   03:59:00          
#> 12 q_3      04:47:30          
#> 13 max      05:57:00          
#> 14 iqr      01:26:30          
#> 15 range    05:04:00          
#> 16 skewness -0.310012214148682
#> 17 kurtosis 3.14016488153926
#> 
#> ── tts_max ──────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     tts_max          
#>  2 class    hms              
#>  3 n        39               
#>  4 n_rm_na  39               
#>  5 n_na     0                
#>  6 mean     09:18:15.384615  
#>  7 var      5957:40:09.716599
#>  8 sd       01:17:11.156412  
#>  9 min      06:54:00         
#> 10 q_1      08:27:30         
#> 11 median   09:15:00         
#> 12 q_3      10:02:00         
#> 13 max      11:53:00         
#> 14 iqr      01:34:30         
#> 15 range    04:59:00         
#> 16 skewness 0.217180930089016
#> 17 kurtosis 2.27756441157494
#> 
#> ── waso_mean ────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     waso_mean        
#>  2 class    hms              
#>  3 n        39               
#>  4 n_rm_na  39               
#>  5 n_na     0                
#>  6 mean     01:00:46.80878   
#>  7 var      1181:25:41.794436
#>  8 sd       00:34:22.314669  
#>  9 min      00:16:32.727273  
#> 10 q_1      00:36:06.727273  
#> 11 median   00:52:31.2       
#> 12 q_3      01:12:58.571429  
#> 13 max      02:55:40.909091  
#> 14 iqr      00:36:51.844156  
#> 15 range    02:39:08.181818  
#> 16 skewness 1.4806267854062  
#> 17 kurtosis 5.44109528215503
#> 
#> ── waso_sd ──────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     waso_sd          
#>  2 class    hms              
#>  3 n        39               
#>  4 n_rm_na  39               
#>  5 n_na     0                
#>  6 mean     00:34:19.829862  
#>  7 var      256:04:00.442457 
#>  8 sd       00:16:00.125222  
#>  9 min      00:11:30.217357  
#> 10 q_1      00:21:48.476437  
#> 11 median   00:30:10.288874  
#> 12 q_3      00:46:55.157491  
#> 13 max      01:10:00.027472  
#> 14 iqr      00:25:06.681054  
#> 15 range    00:58:29.810115  
#> 16 skewness 0.612492641403654
#> 17 kurtosis 2.31508773539846
#> 
#> ── waso_min ─────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value           
#>    <chr>    <chr>           
#>  1 name     waso_min        
#>  2 class    hms             
#>  3 n        39              
#>  4 n_rm_na  39              
#>  5 n_na     0               
#>  6 mean     00:17:03.076923 
#>  7 var      472:06:09.230769
#>  8 sd       00:21:43.675278 
#>  9 min      00:00:00        
#> 10 q_1      00:01:30        
#> 11 median   00:12:00        
#> 12 q_3      00:21:30        
#> 13 max      01:39:00        
#> 14 iqr      00:20:00        
#> 15 range    01:39:00        
#> 16 skewness 2.18869698565749
#> 17 kurtosis 7.82686263371588
#> 
#> ── waso_max ─────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     waso_max         
#>  2 class    hms              
#>  3 n        39               
#>  4 n_rm_na  39               
#>  5 n_na     0                
#>  6 mean     02:24:13.846154  
#>  7 var      4027:29:52.712551
#>  8 sd       01:03:27.754287  
#>  9 min      00:33:00         
#> 10 q_1      01:33:00         
#> 11 median   02:10:00         
#> 12 q_3      03:05:30         
#> 13 max      05:13:00         
#> 14 iqr      01:32:30         
#> 15 range    04:40:00         
#> 16 skewness 0.469436517370851
#> 17 kurtosis 2.74545763786367
#> 
#> ── tts_fps_mean ─────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value             
#>    <chr>    <chr>             
#>  1 name     tts_fps_mean      
#>  2 class    numeric           
#>  3 n        39                
#>  4 n_rm_na  39                
#>  5 n_na     0                 
#>  6 mean     0.875735076353252 
#>  7 var      0.0046582865714935
#>  8 sd       0.0682516415296621
#>  9 min      0.671377293892964 
#> 10 q_1      0.850441130615911 
#> 11 median   0.890597689453898 
#> 12 q_3      0.921445525512424 
#> 13 max      0.975859731847697 
#> 14 iqr      0.0710043948965134
#> 15 range    0.304482437954733 
#> 16 skewness -1.07178331431871 
#> 17 kurtosis 4.02421829321165
#> 
#> ── tts_fps_sd ───────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value               
#>    <chr>    <chr>               
#>  1 name     tts_fps_sd          
#>  2 class    numeric             
#>  3 n        39                  
#>  4 n_rm_na  39                  
#>  5 n_na     0                   
#>  6 mean     0.0617681488282023  
#>  7 var      0.000543225526466095
#>  8 sd       0.0233071990266118  
#>  9 min      0.0182140080661143  
#> 10 q_1      0.0472216166189454  
#> 11 median   0.0603475641809454  
#> 12 q_3      0.0814914366495169  
#> 13 max      0.119092918705453   
#> 14 iqr      0.0342698200305716  
#> 15 range    0.100878910639339   
#> 16 skewness 0.363801136347063   
#> 17 kurtosis 2.89639205377339
#> 
#> ── tts_fps_min ──────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value             
#>    <chr>    <chr>             
#>  1 name     tts_fps_min       
#>  2 class    numeric           
#>  3 n        39                
#>  4 n_rm_na  39                
#>  5 n_na     0                 
#>  6 mean     0.730704910978093 
#>  7 var      0.0128039280719578
#>  8 sd       0.113154443447696 
#>  9 min      0.490238611713666 
#> 10 q_1      0.667266536964981 
#> 11 median   0.733333333333333 
#> 12 q_3      0.813721250387412 
#> 13 max      0.928416485900217 
#> 14 iqr      0.146454713422432 
#> 15 range    0.438177874186551 
#> 16 skewness -0.250176404949563
#> 17 kurtosis 2.33622892600171
#> 
#> ── tts_fps_max ──────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value              
#>    <chr>    <chr>              
#>  1 name     tts_fps_max        
#>  2 class    numeric            
#>  3 n        39                 
#>  4 n_rm_na  39                 
#>  5 n_na     0                  
#>  6 mean     0.96363086321072   
#>  7 var      0.00338884271514574
#>  8 sd       0.0582137674020995 
#>  9 min      0.812933025404157  
#> 10 q_1      0.948518096323739  
#> 11 median   0.966139954853273  
#> 12 q_3      0.995729524432572  
#> 13 max      1.10766045548654   
#> 14 iqr      0.0472114281088329 
#> 15 range    0.294727430082385  
#> 16 skewness -0.409215762190573 
#> 17 kurtosis 4.94327313561869
#> 
#> ── awakenings_mean ──────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     awakenings_mean  
#>  2 class    numeric          
#>  3 n        39               
#>  4 n_rm_na  39               
#>  5 n_na     0                
#>  6 mean     9.3967066184107  
#>  7 var      16.1676407060799 
#>  8 sd       4.02090048447856 
#>  9 min      2.72727272727273 
#> 10 q_1      6.73684210526316 
#> 11 median   8.69230769230769 
#> 12 q_3      12.1484848484848 
#> 13 max      19.375           
#> 14 iqr      5.41164274322169 
#> 15 range    16.6477272727273 
#> 16 skewness 0.650378350973569
#> 17 kurtosis 2.97039491738021
#> 
#> ── awakenings_sd ────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     awakenings_sd    
#>  2 class    numeric          
#>  3 n        39               
#>  4 n_rm_na  39               
#>  5 n_na     0                
#>  6 mean     3.98397195668071 
#>  7 var      1.77922749259881 
#>  8 sd       1.33387686560597 
#>  9 min      1.91485421551268 
#> 10 q_1      3.06778767889909 
#> 11 median   3.7764937126791  
#> 12 q_3      4.57274496146143 
#> 13 max      7.35021367210784 
#> 14 iqr      1.50495728256234 
#> 15 range    5.43535945659516 
#> 16 skewness 0.874468893697829
#> 17 kurtosis 3.48974298871343
#> 
#> ── awakenings_min ───────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value           
#>    <chr>    <chr>           
#>  1 name     awakenings_min  
#>  2 class    numeric         
#>  3 n        39              
#>  4 n_rm_na  39              
#>  5 n_na     0               
#>  6 mean     3.1025641025641 
#>  7 var      8.2523616734143 
#>  8 sd       2.87269240842355
#>  9 min      0               
#> 10 q_1      1               
#> 11 median   2               
#> 12 q_3      4               
#> 13 max      10              
#> 14 iqr      3               
#> 15 range    10              
#> 16 skewness 1.01602097507093
#> 17 kurtosis 3.16777591395233
#> 
#> ── awakenings_max ───────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     awakenings_max   
#>  2 class    numeric          
#>  3 n        39               
#>  4 n_rm_na  39               
#>  5 n_na     0                
#>  6 mean     18.5384615384615 
#>  7 var      47.412955465587  
#>  8 sd       6.88570660612163 
#>  9 min      7                
#> 10 q_1      14.5             
#> 11 median   18               
#> 12 q_3      22               
#> 13 max      36               
#> 14 iqr      7.5              
#> 15 range    29               
#> 16 skewness 0.576888507285819
#> 17 kurtosis 3.16858623715116
#> 
#> ── n_secondary_sleep ────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     n_secondary_sleep
#>  2 class    integer          
#>  3 n        39               
#>  4 n_rm_na  35               
#>  5 n_na     4                
#>  6 mean     13.5142857142857 
#>  7 var      132.668907563025 
#>  8 sd       11.5181989721929 
#>  9 min      1                
#> 10 q_1      5                
#> 11 median   9                
#> 12 q_3      17               
#> 13 max      43               
#> 14 iqr      12               
#> 15 range    42               
#> 16 skewness 1.1799283306467  
#> 17 kurtosis 3.25426116022202
#> 
#> ── fps_mean_secondary ───────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value             
#>    <chr>    <chr>             
#>  1 name     fps_mean_secondary
#>  2 class    hms               
#>  3 n        39                
#>  4 n_rm_na  35                
#>  5 n_na     4                 
#>  6 mean     01:25:48.531422   
#>  7 var      889:10:55.648413  
#>  8 sd       00:29:49.14942    
#>  9 min      00:24:16.666667   
#> 10 q_1      01:04:49.824561   
#> 11 median   01:19:13.714286   
#> 12 q_3      01:49:21          
#> 13 max      02:56:00          
#> 14 iqr      00:44:31.175439   
#> 15 range    02:31:43.333333   
#> 16 skewness 0.697691232526463 
#> 17 kurtosis 3.8417514919125
#> 
#> ── fps_sd_secondary ─────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     fps_sd_secondary 
#>  2 class    hms              
#>  3 n        39               
#>  4 n_rm_na  34               
#>  5 n_na     5                
#>  6 mean     00:49:24.138765  
#>  7 var      659:46:26.355638 
#>  8 sd       00:25:41.163961  
#>  9 min      00:04:56.984848  
#> 10 q_1      00:31:39.111939  
#> 11 median   00:44:42.081807  
#> 12 q_3      01:01:06.022783  
#> 13 max      01:56:33.196694  
#> 14 iqr      00:29:26.910844  
#> 15 range    01:51:36.211846  
#> 16 skewness 0.971984539808824
#> 17 kurtosis 3.71409017130616
#> 
#> ── fps_min_secondary ────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     fps_min_secondary
#>  2 class    hms              
#>  3 n        39               
#>  4 n_rm_na  35               
#>  5 n_na     4                
#>  6 mean     00:32:48         
#>  7 var      855:34:35.294118 
#>  8 sd       00:29:15.014329  
#>  9 min      00:02:00         
#> 10 q_1      00:11:30         
#> 11 median   00:22:00         
#> 12 q_3      00:47:00         
#> 13 max      01:41:00         
#> 14 iqr      00:35:30         
#> 15 range    01:39:00         
#> 16 skewness 1.16940015789832 
#> 17 kurtosis 3.13145606753613
#> 
#> ── fps_max_secondary ────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     fps_max_secondary
#>  2 class    hms              
#>  3 n        39               
#>  4 n_rm_na  35               
#>  5 n_na     4                
#>  6 mean     02:56:00         
#>  7 var      5914:21:10.588235
#>  8 sd       01:16:54.289825  
#>  9 min      01:02:00         
#> 10 q_1      01:59:00         
#> 11 median   02:43:00         
#> 12 q_3      03:30:00         
#> 13 max      06:23:00         
#> 14 iqr      01:31:00         
#> 15 range    05:21:00         
#> 16 skewness 0.936419308844277
#> 17 kurtosis 3.33411175127659
#> 
#> ── tts_mean_secondary ───────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value             
#>    <chr>    <chr>             
#>  1 name     tts_mean_secondary
#>  2 class    hms               
#>  3 n        39                
#>  4 n_rm_na  35                
#>  5 n_na     4                 
#>  6 mean     01:19:20.752179   
#>  7 var      802:32:39.124748  
#>  8 sd       00:28:19.752666   
#>  9 min      00:23:05          
#> 10 q_1      00:59:45          
#> 11 median   01:14:56.571429   
#> 12 q_3      01:37:57.125      
#> 13 max      02:45:15          
#> 14 iqr      00:38:12.125      
#> 15 range    02:22:10          
#> 16 skewness 0.81803889381163  
#> 17 kurtosis 3.89623506909983
#> 
#> ── tts_sd_secondary ─────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value           
#>    <chr>    <chr>           
#>  1 name     tts_sd_secondary
#>  2 class    hms             
#>  3 n        39              
#>  4 n_rm_na  34              
#>  5 n_na     5               
#>  6 mean     00:45:07.641229 
#>  7 var      537:35:08.412565
#>  8 sd       00:23:11.153627 
#>  9 min      00:09:53.969696 
#> 10 q_1      00:28:52.070044 
#> 11 median   00:43:05.124236 
#> 12 q_3      00:55:54.305634 
#> 13 max      01:49:19.475589 
#> 14 iqr      00:27:02.23559  
#> 15 range    01:39:25.505893 
#> 16 skewness 1.07081516318792
#> 17 kurtosis 3.92738049591127
#> 
#> ── tts_min_secondary ────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     tts_min_secondary
#>  2 class    hms              
#>  3 n        39               
#>  4 n_rm_na  35               
#>  5 n_na     4                
#>  6 mean     00:31:36         
#>  7 var      754:14:49.411765 
#>  8 sd       00:27:27.813525  
#>  9 min      00:00:00         
#> 10 q_1      00:11:00         
#> 11 median   00:22:00         
#> 12 q_3      00:45:30         
#> 13 max      01:41:00         
#> 14 iqr      00:34:30         
#> 15 range    01:41:00         
#> 16 skewness 1.08824169793662 
#> 17 kurtosis 3.04869845674144
#> 
#> ── tts_max_secondary ────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     tts_max_secondary
#>  2 class    hms              
#>  3 n        39               
#>  4 n_rm_na  35               
#>  5 n_na     4                
#>  6 mean     02:42:34.285714  
#>  7 var      4837:46:53.445378
#>  8 sd       01:09:33.249746  
#>  9 min      00:59:00         
#> 10 q_1      01:51:30         
#> 11 median   02:32:00         
#> 12 q_3      03:17:30         
#> 13 max      05:45:00         
#> 14 iqr      01:26:00         
#> 15 range    04:46:00         
#> 16 skewness 0.931347842578456
#> 17 kurtosis 3.37929864762528
#> 
#> ── waso_mean_secondary ──────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value              
#>    <chr>    <chr>              
#>  1 name     waso_mean_secondary
#>  2 class    hms                
#>  3 n        39                 
#>  4 n_rm_na  35                 
#>  5 n_na     4                  
#>  6 mean     00:06:25.807929    
#>  7 var      17:15:21.850646    
#>  8 sd       00:04:09.242554    
#>  9 min      00:00:55           
#> 10 q_1      00:03:33.947368    
#> 11 median   00:04:48           
#> 12 q_3      00:09:25.452632    
#> 13 max      00:17:46.666667    
#> 14 iqr      00:05:51.505263    
#> 15 range    00:16:51.666667    
#> 16 skewness 0.917781096509429  
#> 17 kurtosis 3.20015269865733
#> 
#> ── waso_sd_secondary ────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     waso_sd_secondary
#>  2 class    hms              
#>  3 n        39               
#>  4 n_rm_na  34               
#>  5 n_na     5                
#>  6 mean     00:07:48.371484  
#>  7 var      21:54:30.19796   
#>  8 sd       00:04:40.838384  
#>  9 min      00:00:42.426407  
#> 10 q_1      00:04:25.1731    
#> 11 median   00:07:19.151297  
#> 12 q_3      00:09:37.226149  
#> 13 max      00:23:20.963954  
#> 14 iqr      00:05:12.05305   
#> 15 range    00:22:38.537547  
#> 16 skewness 1.13890840891001 
#> 17 kurtosis 4.83995169681882
#> 
#> ── waso_min_secondary ───────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value             
#>    <chr>    <chr>             
#>  1 name     waso_min_secondary
#>  2 class    hms               
#>  3 n        39                
#>  4 n_rm_na  35                
#>  5 n_na     4                 
#>  6 mean     00:00:32.571429   
#>  7 var      04:47:05.546218   
#>  8 sd       00:02:11.246128   
#>  9 min      00:00:00          
#> 10 q_1      00:00:00          
#> 11 median   00:00:00          
#> 12 q_3      00:00:00          
#> 13 max      00:12:00          
#> 14 iqr      00:00:00          
#> 15 range    00:12:00          
#> 16 skewness 4.53452102156859  
#> 17 kurtosis 23.3178838353499
#> 
#> ── waso_max_secondary ───────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value             
#>    <chr>    <chr>             
#>  1 name     waso_max_secondary
#>  2 class    hms               
#>  3 n        39                
#>  4 n_rm_na  35                
#>  5 n_na     4                 
#>  6 mean     00:22:10.285714   
#>  7 var      172:47:35.798319  
#>  8 sd       00:13:08.70514    
#>  9 min      00:03:00          
#> 10 q_1      00:11:00          
#> 11 median   00:22:00          
#> 12 q_3      00:27:00          
#> 13 max      00:54:00          
#> 14 iqr      00:16:00          
#> 15 range    00:51:00          
#> 16 skewness 0.745264924531345 
#> 17 kurtosis 2.93298854603295
#> 
#> ── tts_fps_mean_secondary ───────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value                 
#>    <chr>    <chr>                 
#>  1 name     tts_fps_mean_secondary
#>  2 class    numeric               
#>  3 n        39                    
#>  4 n_rm_na  35                    
#>  5 n_na     4                     
#>  6 mean     0.934510335209915     
#>  7 var      0.00154512498907056   
#>  8 sd       0.0393080779111694    
#>  9 min      0.829624537934391     
#> 10 q_1      0.913687463353274     
#> 11 median   0.94661453470277      
#> 12 q_3      0.958031891028577     
#> 13 max      0.994765219983181     
#> 14 iqr      0.044344427675303     
#> 15 range    0.16514068204879      
#> 16 skewness -0.997241506935041    
#> 17 kurtosis 3.35080839686762
#> 
#> ── tts_fps_sd_secondary ─────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value               
#>    <chr>    <chr>               
#>  1 name     tts_fps_sd_secondary
#>  2 class    numeric             
#>  3 n        39                  
#>  4 n_rm_na  34                  
#>  5 n_na     5                   
#>  6 mean     0.0769575724034908  
#>  7 var      0.00207707724144446 
#>  8 sd       0.0455749628792439  
#>  9 min      0.0137651603256379  
#> 10 q_1      0.0476333421853622  
#> 11 median   0.0748437390408882  
#> 12 q_3      0.0866532563768559  
#> 13 max      0.207672483335457   
#> 14 iqr      0.0390199141914937  
#> 15 range    0.193907323009819   
#> 16 skewness 1.19447174367566    
#> 17 kurtosis 4.22042797198144
#> 
#> ── tts_fps_min_secondary ────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value                
#>    <chr>    <chr>                
#>  1 name     tts_fps_min_secondary
#>  2 class    numeric              
#>  3 n        39                   
#>  4 n_rm_na  35                   
#>  5 n_na     4                    
#>  6 mean     0.756440906467983    
#>  7 var      0.0474500229478623   
#>  8 sd       0.21783026178165     
#>  9 min      0                    
#> 10 q_1      0.734024064171123    
#> 11 median   0.787878787878788    
#> 12 q_3      0.891463414634146    
#> 13 max      0.957142857142857    
#> 14 iqr      0.157439350463023    
#> 15 range    0.957142857142857    
#> 16 skewness -2.43215488547049    
#> 17 kurtosis 9.02070816306455
#> 
#> ── tts_fps_max_secondary ────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value                
#>    <chr>    <chr>                
#>  1 name     tts_fps_max_secondary
#>  2 class    numeric              
#>  3 n        39                   
#>  4 n_rm_na  35                   
#>  5 n_na     4                    
#>  6 mean     0.994109553812524    
#>  7 var      0.000596257419765076 
#>  8 sd       0.0244183828245254   
#>  9 min      0.863636363636364    
#> 10 q_1      1                    
#> 11 median   1                    
#> 12 q_3      1                    
#> 13 max      1                    
#> 14 iqr      0                    
#> 15 range    0.136363636363636    
#> 16 skewness -4.72029037220014    
#> 17 kurtosis 25.0078648500818
#> 
#> ── awakenings_mean_secondary ────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value                    
#>    <chr>    <chr>                    
#>  1 name     awakenings_mean_secondary
#>  2 class    numeric                  
#>  3 n        39                       
#>  4 n_rm_na  35                       
#>  5 n_na     4                        
#>  6 mean     1.3994316958614          
#>  7 var      0.607017485847562        
#>  8 sd       0.779113268945897        
#>  9 min      0.166666666666667        
#> 10 q_1      0.986842105263158        
#> 11 median   1.2                      
#> 12 q_3      1.90625                  
#> 13 max      4                        
#> 14 iqr      0.919407894736842        
#> 15 range    3.83333333333333         
#> 16 skewness 1.20457182908427         
#> 17 kurtosis 5.14173726717506
#> 
#> ── awakenings_sd_secondary ──────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value                  
#>    <chr>    <chr>                  
#>  1 name     awakenings_sd_secondary
#>  2 class    numeric                
#>  3 n        39                     
#>  4 n_rm_na  34                     
#>  5 n_na     5                      
#>  6 mean     1.4913059689058        
#>  7 var      0.914191981167935      
#>  8 sd       0.956133871990703      
#>  9 min      0                      
#> 10 q_1      1.08445986035845       
#> 11 median   1.40090801941763       
#> 12 q_3      1.64570082165172       
#> 13 max      5.65685424949238       
#> 14 iqr      0.561240961293268      
#> 15 range    5.65685424949238       
#> 16 skewness 2.32205632037255       
#> 17 kurtosis 11.8582094752337
#> 
#> ── awakenings_min_secondary ─────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value                   
#>    <chr>    <chr>                   
#>  1 name     awakenings_min_secondary
#>  2 class    numeric                 
#>  3 n        39                      
#>  4 n_rm_na  35                      
#>  5 n_na     4                       
#>  6 mean     0.142857142857143       
#>  7 var      0.243697478991597       
#>  8 sd       0.493657248494942       
#>  9 min      0                       
#> 10 q_1      0                       
#> 11 median   0                       
#> 12 q_3      0                       
#> 13 max      2                       
#> 14 iqr      0                       
#> 15 range    2                       
#> 16 skewness 3.31070709967772        
#> 17 kurtosis 12.410820451843
#> 
#> ── awakenings_max_secondary ─────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value                   
#>    <chr>    <chr>                   
#>  1 name     awakenings_max_secondary
#>  2 class    numeric                 
#>  3 n        39                      
#>  4 n_rm_na  35                      
#>  5 n_na     4                       
#>  6 mean     4.37142857142857        
#>  7 var      6.00504201680672        
#>  8 sd       2.45051872402696        
#>  9 min      1                       
#> 10 q_1      3                       
#> 11 median   4                       
#> 12 q_3      5                       
#> 13 max      12                      
#> 14 iqr      2                       
#> 15 range    11                      
#> 16 skewness 1.09444760270069        
#> 17 kurtosis 4.43775383667458
#> 
#> ── ga_duration ──────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     ga_duration      
#>  2 class    Duration         
#>  3 n        39               
#>  4 n_rm_na  5                
#>  5 n_na     34               
#>  6 mean     6752:59:48       
#>  7 var      77110046:12:00   
#>  8 sd       146:21:13.956768 
#>  9 min      6525:02:00       
#> 10 q_1      6689:54:00       
#> 11 median   6818:55:00       
#> 12 q_3      6861:06:00       
#> 13 max      6870:02:00       
#> 14 iqr      171:12:00        
#> 15 range    345:00:00        
#> 16 skewness -0.79755266026079
#> 17 kurtosis 2.08394918974184

1.25 Get Frequency and Descriptive Statistics (Circular Temporal Variables)

Code
variables <-
  data |>
  select(starts_with(c("his_", "hfs_"))) |>
  names()
for (i in variables) {
  cli_h1(i)
  cat_line()

  if (str_detect(i, "^hfs_")) {
    threshold <- hms::parse_hms("18:00:00")
  } else {
    threshold <- hms::parse_hms("12:00:00")
  }

  data |>
    stats_summary(
      col = i,
      name = i,
      threshold = threshold
    ) |>
    print(n = Inf)

  cat_line()
}
#> 
#> ── his_mean ─────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value           
#>    <chr>    <chr>           
#>  1 name     his_mean        
#>  2 class    hms             
#>  3 n        39              
#>  4 n_rm_na  39              
#>  5 n_na     0               
#>  6 mean     00:26:55.744487 
#>  7 var      18:30:52.643159 
#>  8 sd       01:02:30.127017 
#>  9 min      22:46:38.923077 
#> 10 q_1      23:45:14.573529 
#> 11 median   00:15:30.857143 
#> 12 q_3      01:10:53.651106 
#> 13 max      02:55:26        
#> 14 iqr      01:25:39.077576 
#> 15 range    04:08:47.076923 
#> 16 skewness 0.38638501929826
#> 17 kurtosis 2.4614753082394
#> 
#> ── his_sd ───────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value           
#>    <chr>    <chr>           
#>  1 name     his_sd          
#>  2 class    hms             
#>  3 n        39              
#>  4 n_rm_na  39              
#>  5 n_na     0               
#>  6 mean     01:11:24.296784 
#>  7 var      523:48:19.460632
#>  8 sd       00:22:53.207727 
#>  9 min      00:43:53.532287 
#> 10 q_1      00:53:38.951709 
#> 11 median   01:09:18.055258 
#> 12 q_3      01:21:15.633562 
#> 13 max      02:23:48.796155 
#> 14 iqr      00:27:36.681853 
#> 15 range    01:39:55.263867 
#> 16 skewness 1.16503736370116
#> 17 kurtosis 4.24597576951837
#> 
#> ── his_min ──────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     his_min          
#>  2 class    hms              
#>  3 n        39               
#>  4 n_rm_na  39               
#>  5 n_na     0                
#>  6 mean     22:16:37.25641   
#>  7 var      10:18:20.564103  
#>  8 sd       01:32:52.674453  
#>  9 min      16:42:06         
#> 10 q_1      21:41:31.5       
#> 11 median   22:31:51         
#> 12 q_3      23:29:14         
#> 13 max      00:37:05         
#> 14 iqr      01:47:42.5       
#> 15 range    07:54:59         
#> 16 skewness -1.30232447535416
#> 17 kurtosis 5.71032285526925
#> 
#> ── his_max ──────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     his_max          
#>  2 class    hms              
#>  3 n        39               
#>  4 n_rm_na  39               
#>  5 n_na     0                
#>  6 mean     02:53:24.948718  
#>  7 var      8254:09:01.049933
#>  8 sd       01:30:51.141261  
#>  9 min      00:11:02         
#> 10 q_1      01:46:37.5       
#> 11 median   02:42:05         
#> 12 q_3      04:12:48         
#> 13 max      05:58:15         
#> 14 iqr      02:26:10.5       
#> 15 range    05:47:13         
#> 16 skewness 0.197732855825805
#> 17 kurtosis 2.10290494100102
#> 
#> ── his_mean_secondary ───────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value             
#>    <chr>    <chr>             
#>  1 name     his_mean_secondary
#>  2 class    hms               
#>  3 n        39                
#>  4 n_rm_na  35                
#>  5 n_na     4                 
#>  6 mean     21:37:13.50791    
#>  7 var      12:45:58.198378   
#>  8 sd       04:13:49.693306   
#>  9 min      14:15:31          
#> 10 q_1      19:13:52.928571   
#> 11 median   21:57:03          
#> 12 q_3      00:05:29          
#> 13 max      11:11:46          
#> 14 iqr      04:51:36.071429   
#> 15 range    20:56:15          
#> 16 skewness 0.593516652714613 
#> 17 kurtosis 4.46957675327197
#> 
#> ── his_sd_secondary ─────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value             
#>    <chr>    <chr>             
#>  1 name     his_sd_secondary  
#>  2 class    hms               
#>  3 n        39                
#>  4 n_rm_na  34                
#>  5 n_na     5                 
#>  6 mean     06:57:57.783218   
#>  7 var      28831:45:55.954607
#>  8 sd       02:49:47.951509   
#>  9 min      00:27:34.629868   
#> 10 q_1      05:25:20.29599    
#> 11 median   08:02:26.449587   
#> 12 q_3      08:53:10.77584    
#> 13 max      10:20:07.958826   
#> 14 iqr      03:27:50.479851   
#> 15 range    09:52:33.328958   
#> 16 skewness -1.10161599127853 
#> 17 kurtosis 2.95035408835674
#> 
#> ── his_min_secondary ────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     his_min_secondary
#>  2 class    hms              
#>  3 n        39               
#>  4 n_rm_na  35               
#>  5 n_na     4                
#>  6 mean     14:43:10.828571  
#>  7 var      12:59:58.322689  
#>  8 sd       03:53:04.634365  
#>  9 min      12:00:02         
#> 10 q_1      13:03:39         
#> 11 median   13:58:06         
#> 12 q_3      15:01:03.5       
#> 13 max      10:52:16         
#> 14 iqr      01:57:24.5       
#> 15 range    22:52:14         
#> 16 skewness 4.14795471755198 
#> 17 kurtosis 22.031704091574
#> 
#> ── his_max_secondary ────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     his_max_secondary
#>  2 class    hms              
#>  3 n        39               
#>  4 n_rm_na  35               
#>  5 n_na     4                
#>  6 mean     07:49:24.542857  
#>  7 var      14:14:31.902521  
#>  8 sd       06:19:50.385515  
#>  9 min      14:15:31         
#> 10 q_1      08:37:19.5       
#> 11 median   10:12:17         
#> 12 q_3      11:33:11         
#> 13 max      11:53:41         
#> 14 iqr      02:55:51.5       
#> 15 range    21:38:10         
#> 16 skewness -1.79498621792956
#> 17 kurtosis 4.67985942102013
#> 
#> ── hfs_mean ─────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     hfs_mean         
#>  2 class    hms              
#>  3 n        39               
#>  4 n_rm_na  39               
#>  5 n_na     0                
#>  6 mean     08:09:00.67829   
#>  7 var      4601:56:39.491126
#>  8 sd       01:07:50.257915  
#>  9 min      06:14:34.461538  
#> 10 q_1      07:10:04.176471  
#> 11 median   08:05:56.2       
#> 12 q_3      08:47:45.954545  
#> 13 max      10:53:47.307692  
#> 14 iqr      01:37:41.778075  
#> 15 range    04:39:12.846154  
#> 16 skewness 0.619318541337054
#> 17 kurtosis 2.79655259132182
#> 
#> ── hfs_sd ───────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     hfs_sd           
#>  2 class    hms              
#>  3 n        39               
#>  4 n_rm_na  39               
#>  5 n_na     0                
#>  6 mean     01:42:15.863825  
#>  7 var      1894:27:46.828291
#>  8 sd       00:43:31.525766  
#>  9 min      00:33:16.978487  
#> 10 q_1      01:18:51.91477   
#> 11 median   01:35:04.275756  
#> 12 q_3      01:52:25.135953  
#> 13 max      04:55:27.022397  
#> 14 iqr      00:33:33.221183  
#> 15 range    04:22:10.043911  
#> 16 skewness 2.31074443688731 
#> 17 kurtosis 11.1885132073477
#> 
#> ── hfs_min ──────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     hfs_min          
#>  2 class    hms              
#>  3 n        39               
#>  4 n_rm_na  39               
#>  5 n_na     0                
#>  6 mean     04:57:52.641026  
#>  7 var      02:35:53.762483  
#>  8 sd       02:05:46.320545  
#>  9 min      18:05:06         
#> 10 q_1      04:27:17         
#> 11 median   04:58:32         
#> 12 q_3      05:45:54.5       
#> 13 max      08:02:52         
#> 14 iqr      01:18:37.5       
#> 15 range    13:57:46         
#> 16 skewness -3.51077080923963
#> 17 kurtosis 19.9245587835204
#> 
#> ── hfs_max ──────────────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value            
#>    <chr>    <chr>            
#>  1 name     hfs_max          
#>  2 class    hms              
#>  3 n        39               
#>  4 n_rm_na  39               
#>  5 n_na     0                
#>  6 mean     10:57:18.794872  
#>  7 var      9387:31:24.693657
#>  8 sd       01:36:53.353997  
#>  9 min      07:30:02         
#> 10 q_1      09:58:09         
#> 11 median   10:46:06         
#> 12 q_3      11:45:10         
#> 13 max      15:37:15         
#> 14 iqr      01:47:01         
#> 15 range    08:07:13         
#> 16 skewness 0.699991815741293
#> 17 kurtosis 3.7875545632129
#> 
#> ── hfs_mean_secondary ───────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value              
#>    <chr>    <chr>              
#>  1 name     hfs_mean_secondary 
#>  2 class    hms                
#>  3 n        39                 
#>  4 n_rm_na  35                 
#>  5 n_na     4                  
#>  6 mean     32:15:24.311808    
#>  7 var      60441:09:57.361687 
#>  8 sd       04:05:50.871071    
#>  9 min      22:25:09           
#> 10 q_1      29:46:31           
#> 11 median   32:29:19           
#> 12 q_3      34:50:50.333333    
#> 13 max      39:58:01           
#> 14 iqr      05:04:19.333333    
#> 15 range    17:32:52           
#> 16 skewness -0.0811181498402134
#> 17 kurtosis 2.83492599014304
#> 
#> ── hfs_sd_secondary ─────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value             
#>    <chr>    <chr>             
#>  1 name     hfs_sd_secondary  
#>  2 class    hms               
#>  3 n        39                
#>  4 n_rm_na  34                
#>  5 n_na     5                 
#>  6 mean     07:47:22.150607   
#>  7 var      28882:21:10.411737
#>  8 sd       02:49:56.885329   
#>  9 min      00:40:24.676709   
#> 10 q_1      07:33:25.201606   
#> 11 median   08:16:21.234214   
#> 12 q_3      09:29:16.885593   
#> 13 max      11:37:45.005912   
#> 14 iqr      01:55:51.683987   
#> 15 range    10:57:20.329203   
#> 16 skewness -1.25635007797069 
#> 17 kurtosis 4.02164442795339
#> 
#> ── hfs_min_secondary ────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value              
#>    <chr>    <chr>              
#>  1 name     hfs_min_secondary  
#>  2 class    hms                
#>  3 n        39                 
#>  4 n_rm_na  35                 
#>  5 n_na     4                  
#>  6 mean     21:19:34.828571    
#>  7 var      168044:55:27.969748
#>  8 sd       06:49:55.969751    
#>  9 min      18:00:11           
#> 10 q_1      18:10:18           
#> 11 median   18:21:51           
#> 12 q_3      19:04:46.5         
#> 13 max      39:43:31           
#> 14 iqr      00:54:28.5         
#> 15 range    21:43:20           
#> 16 skewness 2.04224621800448   
#> 17 kurtosis 5.37231910977285
#> 
#> ── hfs_max_secondary ────────────────────────────────────────────────────────
#> 
#> # A tibble: 17 × 2
#>    name     value             
#>    <chr>    <chr>             
#>  1 name     hfs_max_secondary 
#>  2 class    hms               
#>  3 n        39                
#>  4 n_rm_na  35                
#>  5 n_na     4                 
#>  6 mean     16:25:21.114286   
#>  7 var      12821:29:05.986555
#>  8 sd       01:53:13.919781   
#>  9 min      11:23:15          
#> 10 q_1      15:40:41          
#> 11 median   17:12:14          
#> 12 q_3      17:45:38.5        
#> 13 max      17:58:41          
#> 14 iqr      02:04:57.5        
#> 15 range    06:35:26          
#> 16 skewness -1.34126991203935 
#> 17 kurtosis 3.5788095133212

1.26 Group Data by Gestational Age Week

The sleep statistics (e.g., his, hfs) by gestational age week are not included.

Code
ga_group_data <-
  sri_mean_data_by_ga_week |>
  left_join(sleep_prop_mean_data_by_ga_week, by = "ga_week") |>
  left_join(lux_mean_data_by_ga_week, by = "ga_week") |>
  arrange(ga_week)
ga_group_data |> glimpse()
#> Rows: 8
#> Columns: 13
#> $ ga_week         <fct> 33, 34, 35, 36, 37, 38, 39, 40
#> $ sri_mean        <dbl> 62.19077568, 67.62457362, 65.19058348, 71.28105402,…
#> $ sri_sd          <dbl> 47.88058247, 47.50755110, 44.54498278, 41.04441166,…
#> $ sri_min         <dbl> -66.66666667, -100.00000000, -100.00000000, -100.00…
#> $ sri_max         <dbl> 100, 100, 100, 100, 100, 100, 100, 100
#> $ sleep_prop_mean <dbl> 0.2912533069, 0.3084070295, 0.2853780864, 0.2843099…
#> $ sleep_prop_sd   <dbl> 0.3481987412, 0.3556493104, 0.3397628547, 0.3482634…
#> $ sleep_prop_min  <dbl> 0, 0, 0, 0, 0, 0, 0, 0
#> $ sleep_prop_max  <dbl> 1, 1, 1, 1, 1, 1, 1, 1
#> $ lux_mean        <dbl> 152.6508367, 140.3343357, 154.6147757, 142.2119350,…
#> $ lux_sd          <dbl> 410.7719572, 548.6164072, 532.2632305, 462.3633361,…
#> $ lux_min         <dbl> 0, 0, 0, 0, 0, 0, 0, 0
#> $ lux_max         <dbl> 6790.1200, 19008.2200, 23364.5700, 10536.9500, 1042…
Code
ga_group_data

1.27 Group Data by SRI Group

Code
sri_mean_data_by_sri_group <-
  sri_data |>
  filter(id %in% sri_data_ids) |>
  mutate(
    group = case_when(
      id %in% regular_sri_ids ~ "regular",
      id %in% others_sri_ids ~ "others",
      id %in% irregular_sri_ids ~ "irregular"
    )
  ) |>
  summarize(
    sri_mean = mean(sri, na.rm = TRUE),
    sri_sd = sd(sri, na.rm = TRUE),
    sri_min = min(sri, na.rm = TRUE),
    sri_max = max(sri, na.rm = TRUE),
    .by = group
  ) |>
  arrange(desc(group))
Code
sleep_prop_mean_data_by_sri_group <-
  sleep_prop_data |>
  filter(id %in% sri_data_ids) |>
  mutate(
    group = case_when(
      id %in% regular_sri_ids ~ "regular",
      id %in% others_sri_ids ~ "others",
      id %in% irregular_sri_ids ~ "irregular"
    )
  ) |>
  summarize(
    sleep_prop_mean = mean(prop, na.rm = TRUE),
    sleep_prop_sd = sd(prop, na.rm = TRUE),
    sleep_prop_min = min(prop, na.rm = TRUE),
    sleep_prop_max = max(prop, na.rm = TRUE),
    .by = group
  ) |>
  arrange(desc(group))
Code
lux_mean_data_by_sri_group <-
  lux_data |>
  filter(id %in% sri_data_ids) |>
  mutate(
    group = case_when(
      id %in% regular_sri_ids ~ "regular",
      id %in% others_sri_ids ~ "others",
      id %in% irregular_sri_ids ~ "irregular"
    )
  ) |>
  summarize(
    lux_mean = mean(lux, na.rm = TRUE),
    lux_sd = sd(lux, na.rm = TRUE),
    lux_min = min(lux, na.rm = TRUE),
    lux_max = max(lux, na.rm = TRUE),
    .by = group
  ) |>
  arrange(desc(group))
Code
primary_sleep_data_by_sri_group <-
  primary_sleep_data |>
  filter(id %in% sri_data_ids) |>
  mutate(
    group = case_when(
      id %in% regular_sri_ids ~ "regular",
      id %in% others_sri_ids ~ "others",
      id %in% irregular_sri_ids ~ "irregular"
    )
  ) |>
  summarize(
    his_mean = summarize_his(his, mean, na.rm = TRUE),
    his_sd = summarize_his(his, sd, na.rm = TRUE),
    his_min = summarize_his(his, min, na.rm = TRUE),
    his_max = summarize_his(his, max, na.rm = TRUE),
    hfs_mean = summarize_hfs(hfs, mean, na.rm = TRUE),
    hfs_sd = summarize_hfs(hfs, sd, na.rm = TRUE),
    hfs_min = summarize_hfs(hfs, min, na.rm = TRUE),
    hfs_max = summarize_hfs(hfs, max, na.rm = TRUE),
    across(
      .cols = c(fps, tts, waso),
      .fns = list(
        mean = \(x) x |> mean(na.rm = TRUE) |> as_hms(),
        sd = \(x) x |> sd(na.rm = TRUE) |> as_hms(),
        min = \(x) x |> min(na.rm = TRUE) |> as_hms(),
        max = \(x) x |> max(na.rm = TRUE) |> as_hms()
      ),
      .names = "{.col}_{.fn}"
    ),
    across(
      .cols = c(tts_fps, awakenings),
      .fns = list(
        mean = \(x) x |> mean(na.rm = TRUE),
        sd = \(x) x |> sd(na.rm = TRUE),
        min = \(x) x |> min(na.rm = TRUE),
        max = \(x) x |> max(na.rm = TRUE)
      ),
      .names = "{.col}_{.fn}"
    ),
    .by = group
  ) |>
  arrange(desc(group))
Code
sri_group_data <-
  sri_mean_data_by_sri_group |>
  left_join(sleep_prop_mean_data_by_sri_group, by = "group") |>
  left_join(lux_mean_data_by_sri_group, by = "group") |>
  left_join(primary_sleep_data_by_sri_group, by = "group") |>
  arrange(desc(group))
sri_group_data |> glimpse()
#> Rows: 3
#> Columns: 41
#> $ group           <chr> "regular", "others", "irregular"
#> $ sri_mean        <dbl> 79.13209763, 65.46293385, 49.24676742
#> $ sri_sd          <dbl> 36.55377013, 46.30205056, 50.46517194
#> $ sri_min         <dbl> -71.42857143, -100.00000000, -100.00000000
#> $ sri_max         <dbl> 100, 100, 100
#> $ sleep_prop_mean <dbl> 0.2783081184, 0.2851708041, 0.3095869883
#> $ sleep_prop_sd   <dbl> 0.3589299262, 0.3383241796, 0.3139787257
#> $ sleep_prop_min  <dbl> 0, 0, 0
#> $ sleep_prop_max  <dbl> 1, 1, 1
#> $ lux_mean        <dbl> 151.1166214, 148.0345357, 117.0884358
#> $ lux_sd          <dbl> 536.1684376, 523.4710512, 357.4588051
#> $ lux_min         <dbl> 0, 0, 0
#> $ lux_max         <dbl> 23364.57, 21558.71, 10621.30
#> $ his_mean        <time> 24:01:52.927711, 24:20:02.907826, 24:40:24.862903
#> $ his_sd          <time> 01:20:19.217976, 01:31:58.918015, 01:48:58.087973
#> $ his_min         <time> 19:14:15, 16:42:06, 20:08:41
#> $ his_max         <time> 28:21:31, 29:44:35, 29:58:15
#> $ hfs_mean        <time> 07:57:13.530120, 31:54:48.090435, 08:18:54.379032
#> $ hfs_sd          <time> 01:46:55.345867, 02:05:36.540838, 02:26:47.807364
#> $ hfs_min         <time> 03:58:16, 18:05:06, 04:44:02
#> $ hfs_max         <time> 13:54:31, 38:21:32, 15:37:15
#> $ fps_mean        <time> 07:54:28.192771, 07:34:45.182609, 07:36:59.032258
#> $ fps_sd          <time> 01:36:44.455999, 01:55:58.484576, 02:08:42.041878
#> $ fps_min         <time> 04:23:00, 00:53:00, 03:07:00
#> $ fps_max         <time> 12:14:00, 13:40:00, 13:57:00
#> $ tts_mean        <time> 07:02:45.542169, 06:35:43.408696, 06:32:19.354839
#> $ tts_sd          <time> 01:23:22.528149, 01:39:58.888242, 01:55:31.233861
#> $ tts_min         <time> 03:51:00, 00:53:00, 02:44:00
#> $ tts_max         <time> 10:41:00, 11:41:00, 11:53:00
#> $ waso_mean       <time> 00:53:27.469880, 00:59:01.565217, 01:07:39.677419
#> $ waso_sd         <time> 00:47:00.805320, 00:50:21.209980, 00:46:07.718657
#> $ waso_min        <time> 00:00:00, 00:00:00, 00:04:00
#> $ waso_max        <time> 04:03:00, 05:13:00, 03:40:00
#> $ tts_fps_mean    <dbl> 0.8968510236, 0.8766653688, 0.8600804807
#> $ tts_fps_sd      <dbl> 0.08562531507, 0.09157783930, 0.10520769754
#> $ tts_fps_min     <dbl> 0.5857885615, 0.4902386117, 0.5028571429
#> $ tts_fps_max     <dbl> 1.107660455, 1.000000000, 1.104815864
#> $ awakenings_mean <dbl> 8.277108434, 8.763478261, 11.274193548
#> $ awakenings_sd   <dbl> 4.693808308, 5.581801104, 5.615510908
#> $ awakenings_min  <dbl> 0, 0, 1
#> $ awakenings_max  <dbl> 23, 36, 34
Code
sri_group_data

1.28 Group Data by SRI Group and Gestational Age Week

Code
sri_mean_data_by_sri_group_ga_week <-
  sri_data |>
  filter(id %in% sri_data_ids) |>
  mutate(
    group = case_when(
      id %in% regular_sri_ids ~ "regular",
      id %in% others_sri_ids ~ "others",
      id %in% irregular_sri_ids ~ "irregular"
    )
  ) |>
  summarize(
    sri_mean = mean(sri, na.rm = TRUE),
    sri_sd = sd(sri, na.rm = TRUE),
    sri_min = min(sri, na.rm = TRUE),
    sri_max = max(sri, na.rm = TRUE),
    .by = c(group, ga_week)
  ) |>
  arrange(desc(group), ga_week)
Code
sri_mean_data_by_sri_group_ga_week |> glimpse()
#> Rows: 21
#> Columns: 6
#> $ group    <chr> "regular", "regular", "regular", "regular", "regular", "re…
#> $ ga_week  <fct> 34, 35, 36, 37, 38, 39, 40, 33, 34, 35, 36, 37, 38, 39, 40…
#> $ sri_mean <dbl> 88.32638889, 73.38719120, 79.79739694, 77.47883215, 78.507…
#> $ sri_sd   <dbl> 28.67064656, 40.17995692, 37.74237149, 38.85326625, 33.679…
#> $ sri_min  <dbl> -50.00000000, -33.33333333, -71.42857143, -66.66666667, -4…
#> $ sri_max  <dbl> 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100…
Code
sri_mean_data_by_sri_group_ga_week
Code
sleep_prop_data_by_sri_group_ga_week <-
  sleep_prop_data |>
  filter(id %in% sri_data_ids) |>
  mutate(
    group = case_when(
      id %in% regular_sri_ids ~ "regular",
      id %in% others_sri_ids ~ "others",
      id %in% irregular_sri_ids ~ "irregular"
    )
  ) |>
  summarize(
    sleep_prop_mean = mean(prop, na.rm = TRUE),
    sleep_prop_sd = sd(prop, na.rm = TRUE),
    sleep_prop_min = min(prop, na.rm = TRUE),
    sleep_prop_max = max(prop, na.rm = TRUE),
    .by = c(group, ga_week)
  ) |>
  arrange(desc(group), ga_week)
Code
sleep_prop_data_by_sri_group_ga_week |> glimpse()
#> Rows: 21
#> Columns: 6
#> $ group           <chr> "regular", "regular", "regular", "regular", "regula…
#> $ ga_week         <fct> 34, 35, 36, 37, 38, 39, 40, 33, 34, 35, 36, 37, 38,…
#> $ sleep_prop_mean <dbl> 0.2741071429, 0.2590277778, 0.2562599206, 0.2936451…
#> $ sleep_prop_sd   <dbl> 0.3436597903, 0.3369390598, 0.3509816580, 0.3632823…
#> $ sleep_prop_min  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
#> $ sleep_prop_max  <dbl> 0.8571428571, 1.0000000000, 1.0000000000, 1.0000000…
Code
sleep_prop_data_by_sri_group_ga_week
Code
lux_data_by_sri_group_ga_week <-
  lux_data |>
  filter(id %in% sri_data_ids) |>
  mutate(
    group = case_when(
      id %in% regular_sri_ids ~ "regular",
      id %in% others_sri_ids ~ "others",
      id %in% irregular_sri_ids ~ "irregular"
    )
  ) |>
  summarize(
    lux_mean = mean(lux, na.rm = TRUE),
    lux_sd = sd(lux, na.rm = TRUE),
    lux_min = min(lux, na.rm = TRUE),
    lux_max = max(lux, na.rm = TRUE),
    .by = c(group, ga_week)
  ) |>
  arrange(desc(group), ga_week)
Code
lux_data_by_sri_group_ga_week |> glimpse()
#> Rows: 23
#> Columns: 6
#> $ group    <chr> "regular", "regular", "regular", "regular", "regular", "re…
#> $ ga_week  <fct> 33, 34, 35, 36, 37, 38, 39, 40, 32, 33, 34, 35, 36, 37, 38…
#> $ lux_mean <dbl> 160.8540544, 187.4799053, 176.8469274, 158.4011910, 141.88…
#> $ lux_sd   <dbl> 485.2447144, 829.1998341, 855.7706207, 605.5808841, 371.69…
#> $ lux_min  <dbl> 0.010000000000, 0.000000000000, 0.000000000000, 0.00000000…
#> $ lux_max  <dbl> 6498.410000, 19008.220000, 23364.570000, 10536.950000, 498…
Code
lux_data_by_sri_group_ga_week

1.29 Plot Distributions

1.29.1 fps_mean

Code
data |>
  plotr:::plot_dist(
    col = "fps_mean",
    line_color = "red"
  )

Code
data |>
  plotr:::plot_box_plot(
    col = "fps_mean",
    line_color = "red"
  )

1.29.2 bmi_current

Code
data |>
  plotr:::plot_dist(
    col = "bmi_current",
    line_color = "red"
  )

Code
data |>
  plotr:::plot_box_plot(
    col = "bmi_current",
    line_color = "red"
  )

1.30 Plot Correlation Matrices

Code
data |>
  plotr:::plot_ggally(
    cols = c(
      "partograph_duration", "age", "family_income", "bmi_before"
    ),
    labels = c(
      "Duração do partograma", "Idade", "Renda familiar", "IMC"
    )
  )

Code
data |>
  plotr:::plot_ggally(
    cols = c(
      "partograph_duration", "gestations", "deliveries", "abortions"
    ),
    labels = c(
      "Duração do partograma", "# Gestações", "# Partos", "# Abortos"
    )
  )
#> Warning in cor(x, y): the standard deviation is zero
#> Warning in cor(x, y): the standard deviation is zero
#> Warning in cor(x, y): the standard deviation is zero

Code
data |>
  plotr:::plot_ggally(
    cols = c(
      "partograph_duration", "baby_weight", "baby_length",
      "baby_head_perimeter",  "baby_thoracic_perimeter",
      "baby_abdominal_perimeter"
    ),
    labels = c(
      "Duração do partograma", "Peso do bebê", "Comprimento do bebê",
      "Per. da cabeça do bebê", "Per. torácico do bebê",
      "Per. abdominal do bebê"
    )
  )

Code
data |>
  plotr:::plot_ggally(
    cols = c("partograph_duration", "fps_mean", "waso_mean", "awakenings_mean"),
    labels = c("Duração do partograma", "FPS", "WASO", "Desp.")
  )

Code
data |>
  mutate(
    his_mean = his_mean |> link_to_timeline(),
    hfs_mean = hfs_mean |> link_to_timeline()
  ) |>
  plotr:::plot_ggally(
    cols = c(
      "his_mean", "hfs_mean", "fps_mean", "tts_mean", "tts_fps_mean",
       "waso_mean", "awakenings_mean"
    ),
    labels = c(
      "HIS", "HFS", "FPS", "TTS", "TTS/FPS", "WASO", "Desp."
    ),
    brandr = FALSE
  )

Code
data |>
  plotr:::plot_ggally(
    cols = c(
      "fps_mean", "tts_mean", "waso_mean", "awakenings_mean",
      "age", "family_income", "bmi_before"
    ),
    labels = c(
      "FPS", "TTS", "WASO", "Desp.", "Idade", "Renda", "IMC"
    )
  )

1.31 Actograms

1.31.1 f1e30a89

Code
actigraphy_data <-
  actigraphy_processed_data_dir |>
  dir_ls(type = "file") |>
  str_subset("f1e30a89.+\\.rds") |>
  read_rds()
Code
actigraphy_data |>
  actogram(
    days = -1,
    latitude = brazil_state_latitude("sp"),
    longitude = brazil_state_longitude("sp"),
    locale = "pt_BR.UTF-8",
    x_label = "2 Dias — Horas",
    y_label = "Dias",
    date_format = "%a %d/%m",
    labels = c(
      "1" = "Sono",
      "2" = "Despertar",
      "4" = "Offwrist",
      "base" = "Atividade (PIM)",
      "lp" = "Fase Clara",
      "dp" = "Fase Escura"
    ),
    colors = c(
      "1" = "#0000FF", # "#410085"
      "2" = "#FFFF00", # "#FFB426"
      "4" = "#FF0000", # "#FC2913"
      "base" = "#000000", # "#000040"
      "lp" = "#FFFFFF",
      "dp" = "#D7D7D7"
    )
  )
#> Registered S3 method overwritten by 'tsibble':
#>   method               from 
#>   as_tibble.grouped_df dplyr