740 lines
28 KiB
R
740 lines
28 KiB
R
|
|
# Code from: cont_pase_sens.qmd
|
||
|
|
targets::tar_config_set(store = here::here("_targets"))
|
||
|
|
source(here::here("R/functions.R"))
|
||
|
|
source(here::here("R/glmnet-reg.R"))
|
||
|
|
library(targets)
|
||
|
|
library(tidyverse)
|
||
|
|
tbl_cont_0 <- targets::tar_read("df_all_data_formatted")|>
|
||
|
|
dplyr::filter(!is.na(pase_0),!is.na(pase_4)) |>
|
||
|
|
# pase_cutter(drop.nas = TRUE) |>
|
||
|
|
events_ready(v.groups=c("clin","lifestyle.events","ses", "assess.events","quartiles")) |>
|
||
|
|
dplyr::select(dplyr::all_of(c("pase_0", "age", "reg_female", "nihss_0", "reg_trombolyse",
|
||
|
|
"reg_trombektomi", "rtreat_placebo", "reg_alone", "reg_smoker",
|
||
|
|
"reg_more_alc", "reg_hyperten", "reg_diabetes", "reg_atriefli",
|
||
|
|
"reg_ami", "soc_status_nowork", "fam_indk_hl", "edu_level_hl",
|
||
|
|
"who_4", "mdi_4", "mfi_gen_4", "mrs_4_above1", "time", "status"
|
||
|
|
))) |>
|
||
|
|
(\(data){
|
||
|
|
# c("pase_0","pase_4") |>
|
||
|
|
# purrr::map(\(exp){
|
||
|
|
list("Univariable"=cox_regression(data=data,all.vars = FALSE, use.strata = FALSE, outcome.var = "pase_0"),
|
||
|
|
"Multivariable"=cox_regression(data=data,all.vars = TRUE, use.strata = FALSE, outcome.var = "pase_0")) |>
|
||
|
|
purrr::map(\(.x){
|
||
|
|
.x |> gtsummary::tbl_regression(exponentiate=TRUE) |> gtsummary::add_nevent()|>
|
||
|
|
fix_labels()
|
||
|
|
}) |>
|
||
|
|
tbl_merged_named()
|
||
|
|
# })
|
||
|
|
})() |>
|
||
|
|
gtsummary::modify_table_body( ~ filter(.x, variable == "pase_0"))
|
||
|
|
tbl_cont_4 <- targets::tar_read("df_all_data_formatted")|>
|
||
|
|
dplyr::filter(!is.na(pase_0),!is.na(pase_4)) |>
|
||
|
|
# pase_cutter(drop.nas = TRUE) |>
|
||
|
|
events_ready(v.groups=c("clin","lifestyle.events","ses", "assess.events","quartiles")) |>
|
||
|
|
dplyr::select(dplyr::all_of(c("pase_4", "age", "reg_female", "nihss_0", "reg_trombolyse",
|
||
|
|
"reg_trombektomi", "rtreat_placebo", "reg_alone", "reg_smoker",
|
||
|
|
"reg_more_alc", "reg_hyperten", "reg_diabetes", "reg_atriefli",
|
||
|
|
"reg_ami", "soc_status_nowork", "fam_indk_hl", "edu_level_hl",
|
||
|
|
"who_4", "mdi_4", "mfi_gen_4", "mrs_4_above1", "time", "status"
|
||
|
|
))) |>
|
||
|
|
(\(data){
|
||
|
|
# c("pase_0","pase_4") |>
|
||
|
|
# purrr::map(\(exp){
|
||
|
|
list("Univariable"=cox_regression(data=data,all.vars = FALSE, use.strata = FALSE, outcome.var = "pase_4"),
|
||
|
|
"Multivariable"=cox_regression(data=data,all.vars = TRUE, use.strata = FALSE, outcome.var = "pase_4")) |>
|
||
|
|
purrr::map(\(.x){
|
||
|
|
.x |> gtsummary::tbl_regression(exponentiate=TRUE) |> gtsummary::add_nevent()|>
|
||
|
|
fix_labels()
|
||
|
|
}) |>
|
||
|
|
tbl_merged_named()
|
||
|
|
# })
|
||
|
|
})() |>
|
||
|
|
gtsummary::modify_table_body( ~ filter(.x, variable == "pase_4"))
|
||
|
|
list("PASE 0"=tbl_cont_0,
|
||
|
|
"PASE 6"=tbl_cont_4) |> tbl_stack_named()
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
# Code from: events_type_sens.qmd
|
||
|
|
targets::tar_config_set(store = here::here("_targets"))
|
||
|
|
source(here::here("R/functions.R"))
|
||
|
|
source(here::here("R/glmnet-reg.R"))
|
||
|
|
library(targets)
|
||
|
|
library(tidyverse)
|
||
|
|
df <- targets::tar_read(df_all_data_formatted) |>
|
||
|
|
dplyr::mutate(
|
||
|
|
status.all=dplyr::if_else(
|
||
|
|
startsWith(as.character(event),"death"),"death","cve",missing = NA_character_)|> factor()
|
||
|
|
)|>
|
||
|
|
get_vars(vars.groups = c("clin","lifestyle.events","ses", "ssri")) |>
|
||
|
|
dplyr::rename(status=status.all,
|
||
|
|
time=time.all)
|
||
|
|
df$status |> summary()
|
||
|
|
tbl <- df |>
|
||
|
|
pase_cutter(drop.nas = TRUE, drop.pase = TRUE) |>
|
||
|
|
(\(.x) {
|
||
|
|
list(
|
||
|
|
"death" = .x |> dplyr::mutate(status = dplyr::if_else(status == "death", 1, 0, 0)),
|
||
|
|
"cve" = .x |> dplyr::mutate(status = dplyr::if_else(status == "cve", 1, 0, 0))
|
||
|
|
)
|
||
|
|
})() |> lapply(\(.x) {
|
||
|
|
ls <- list(
|
||
|
|
"Univariate" = .x |> dplyr::select(-rtreat) |>
|
||
|
|
standard_multi_cox_table(all.vars = FALSE) |> gtsummary::add_nevent(),
|
||
|
|
"Multivariate" = .x |> dplyr::select(-rtreat) |>
|
||
|
|
standard_multi_cox_table(all.vars = TRUE) |> gtsummary::add_nevent()
|
||
|
|
) |>
|
||
|
|
purrr::map(gtsummary::bold_p) |>
|
||
|
|
|
||
|
|
tbl_merged_named()
|
||
|
|
ls |>
|
||
|
|
gtsummary::modify_table_body( ~ filter(.x, variable == "pase_change"))
|
||
|
|
}) |>
|
||
|
|
gtsummary::tbl_stack(group_header = c("death","cve"))# |>
|
||
|
|
# gtsummary::as_gt() |>
|
||
|
|
# gt::gtsave(here::here("out/trial_strat_sens.docx"))
|
||
|
|
|
||
|
|
tbl
|
||
|
|
|
||
|
|
names(tbl)
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
# Code from: mrs_sensitivity.qmd
|
||
|
|
source(here::here("R/functions.R"))
|
||
|
|
ls_mrs0 <- targets::tar_read(df_all_data_formatted) |>
|
||
|
|
dplyr::filter(mrs_0==0)|>
|
||
|
|
dplyr::filter(!is.na(pase_0),!is.na(pase_4)) |>
|
||
|
|
events_ready() |>
|
||
|
|
(\(.x){
|
||
|
|
list(
|
||
|
|
std=.x,
|
||
|
|
imp=.x |> events_dataset(impute = TRUE)
|
||
|
|
)
|
||
|
|
})() |>
|
||
|
|
purrr::map(\(.x){
|
||
|
|
.x |>
|
||
|
|
pase_cutter(drop.pase = TRUE,drop.nas = TRUE)
|
||
|
|
})
|
||
|
|
|
||
|
|
# targets::tar_read(df_all_data_formatted) |>
|
||
|
|
# dplyr::filter(mrs_0==0) |>
|
||
|
|
# dplyr::filter(!is.na(pase_0),!is.na(pase_4)) |> events_ready() |>
|
||
|
|
# pase_cutter(drop.pase = TRUE,drop.nas = TRUE) |>
|
||
|
|
# cox_regression(all.vars = TRUE, use.strata = FALSE, outcome.var = "pase_change") |>
|
||
|
|
# tbl_regression_standard()
|
||
|
|
|
||
|
|
ls <- list(
|
||
|
|
"Univariable"= ls_mrs0$std |>
|
||
|
|
dplyr::select(pase_change,dplyr::everything()) |>
|
||
|
|
splitdf4uvcox(include=c("time","status")) |>
|
||
|
|
purrr::map(\(.x){
|
||
|
|
.x |> tbl_regression_standard()
|
||
|
|
}) |>
|
||
|
|
gtsummary::tbl_stack(),
|
||
|
|
"Multivariable" = ls_mrs0$std |>
|
||
|
|
cox_regression(all.vars = TRUE, use.strata = FALSE, outcome.var = "pase_change") |>
|
||
|
|
tbl_regression_standard() |> gtsummary::add_glance_source_note(),
|
||
|
|
"Multivariable Imputed"= ls_mrs0$imp |>
|
||
|
|
cox_regression(all.vars = TRUE, use.strata = FALSE, outcome.var = "pase_change") |>
|
||
|
|
tbl_regression_standard()
|
||
|
|
) |> purrr::map(\(.x){
|
||
|
|
.x|>
|
||
|
|
gtsummary::modify_table_styling(column = p.value,
|
||
|
|
hide=TRUE)
|
||
|
|
}) |> tbl_merged_named()
|
||
|
|
|
||
|
|
ls
|
||
|
|
# |> gtsummary::as_gt() |>
|
||
|
|
# gt::gtsave(filename = here::here(glue::glue("out/sens_subset_mrs0_0.docx")))
|
||
|
|
|
||
|
|
# ls_mrs0$std |>
|
||
|
|
# cox_regression(all.vars = TRUE, use.strata = FALSE, outcome.var = "pase_change") |> performance::check_model()
|
||
|
|
targets::tar_read(df_all_data_formatted)|>
|
||
|
|
dplyr::filter(!is.na(pase_0),!is.na(pase_4)) |>
|
||
|
|
dplyr::filter(mrs_0==0) |>
|
||
|
|
dplyr::select(pase_0,pase_4) |>
|
||
|
|
summary()
|
||
|
|
# ls_mrs0$std |> gtsummary::tbl_summary(by = pase_change) |> fix_labels()
|
||
|
|
ls_mrs0_change <- targets::tar_read(df_all_data_formatted) |>
|
||
|
|
get_vars(vars.groups =c("clin","lifestyle.events","ses", "assess.events.pre")) |>
|
||
|
|
dplyr::filter(event.include) |>
|
||
|
|
dplyr::select(-tidyselect::all_of("event.include")) |>
|
||
|
|
(\(.x){
|
||
|
|
list(
|
||
|
|
std=.x,
|
||
|
|
imp=.x |>
|
||
|
|
dplyr::select(-tidyselect::any_of("reg_bmi"))|>
|
||
|
|
fun_impute(ignore = c("pase_0","pase_4"),pase.mod = FALSE)
|
||
|
|
)
|
||
|
|
})() |>
|
||
|
|
purrr::map(\(.x){
|
||
|
|
.x |>
|
||
|
|
pase_cutter(drop.pase = TRUE,drop.nas = TRUE)
|
||
|
|
})
|
||
|
|
|
||
|
|
# targets::tar_read(df_all_data_formatted) |>
|
||
|
|
# dplyr::filter(mrs_0==0) |>
|
||
|
|
# dplyr::filter(!is.na(pase_0),!is.na(pase_4)) |> events_ready() |>
|
||
|
|
# pase_cutter(drop.pase = TRUE,drop.nas = TRUE) |>
|
||
|
|
# cox_regression(all.vars = TRUE, use.strata = FALSE, outcome.var = "pase_change") |>
|
||
|
|
# tbl_regression_standard()
|
||
|
|
|
||
|
|
ls_change <- list(
|
||
|
|
"Univariable"= ls_mrs0_change$std |>
|
||
|
|
dplyr::select(pase_change,dplyr::everything()) |>
|
||
|
|
splitdf4uvcox(include=c("time","status")) |>
|
||
|
|
purrr::map(\(.x){
|
||
|
|
.x |> tbl_regression_standard()
|
||
|
|
}) |>
|
||
|
|
gtsummary::tbl_stack(),
|
||
|
|
"Multivariable" = ls_mrs0_change$std |>
|
||
|
|
cox_regression(all.vars = TRUE, use.strata = FALSE, outcome.var = "pase_change") |>
|
||
|
|
tbl_regression_standard() |> gtsummary::add_glance_source_note(),
|
||
|
|
"Multivariable Imputed"= ls_mrs0_change$imp |>
|
||
|
|
cox_regression(all.vars = TRUE, use.strata = FALSE, outcome.var = "pase_change") |>
|
||
|
|
tbl_regression_standard()
|
||
|
|
) |> purrr::map(\(.x){
|
||
|
|
.x|>
|
||
|
|
gtsummary::modify_table_styling(column = p.value,
|
||
|
|
hide=TRUE)
|
||
|
|
}) |> tbl_merged_named()
|
||
|
|
|
||
|
|
ls_change
|
||
|
|
#| eval: false
|
||
|
|
coll <- list(
|
||
|
|
mrs0_0=ls_mrs0$std|>
|
||
|
|
cox_regression(all.vars = TRUE, use.strata = FALSE, outcome.var = "pase_change"),
|
||
|
|
pase_change_mrs0 = ls_mrs0_change$std|>
|
||
|
|
cox_regression(all.vars = TRUE, use.strata = FALSE, outcome.var = "pase_change"),
|
||
|
|
pase_change=df |>
|
||
|
|
get_vars(vars.groups =c("clin","lifestyle.events","ses", "assess.events")) |>
|
||
|
|
dplyr::filter(event.include) |>
|
||
|
|
dplyr::select(-tidyselect::all_of("event.include")) |>
|
||
|
|
pase_cutter(drop.pase = TRUE,drop.nas = TRUE)|>
|
||
|
|
cox_regression(all.vars = TRUE, use.strata = FALSE, outcome.var = "pase_change"),
|
||
|
|
prestroke_pase=df |>
|
||
|
|
pase_cutter(drop.nas = FALSE) |>
|
||
|
|
get_vars(vars.groups = c("clin", "lifestyle.events", "ses", "assess.pred", "quartiles"), vars.vec = c("inc_time",
|
||
|
|
"time",
|
||
|
|
"status")) |>
|
||
|
|
dplyr::mutate(time = time + inc_time / 365) |>
|
||
|
|
dplyr::select(-dplyr::any_of(c("pase_0", "pase_4", "pase_change", "inc_time", "event.include", "pase_4_quartile")))|>
|
||
|
|
cox_regression(all.vars = TRUE, use.strata = FALSE, outcome.var = "pase_0_quartile")) |>
|
||
|
|
purrr::map(performance::check_collinearity)
|
||
|
|
|
||
|
|
coll |> purrr::imap(\(.x,.i){
|
||
|
|
.x |> dplyr::as_tibble() |> gt::gt() |> gt::tab_header(.i)|>
|
||
|
|
gt::gtsave(filename = here::here(glue::glue("out/coll_{.i}.docx")))
|
||
|
|
})
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
# Code from: pa_event_plots.qmd
|
||
|
|
targets::tar_config_set(store = here::here("_targets"))
|
||
|
|
source(here::here("R/functions.R"))
|
||
|
|
source(here::here("R/glmnet-reg.R"))
|
||
|
|
library(targets)
|
||
|
|
library(tidyverse)
|
||
|
|
# targets::tar_read(plot_events_survival_smooth)
|
||
|
|
p1 <- targets::tar_read(df_event_data) |>
|
||
|
|
events_dataset(impute = FALSE) |>
|
||
|
|
dplyr::mutate(pase_change = factor(pase_change,
|
||
|
|
levels = c("Persistently high", "Decrease", "Increase", "Persistently low")),
|
||
|
|
pase_change = dplyr::recode(pase_change,
|
||
|
|
"Persistently high"="Consistently above lowest",
|
||
|
|
"Decrease"="Decrease to lowest",
|
||
|
|
"Increase"="Increase from lowest",
|
||
|
|
"Persistently low"="Consistently lowest")
|
||
|
|
) |>
|
||
|
|
cox_regression() |>
|
||
|
|
plot_survival_smooth(line.w = 1) +
|
||
|
|
ggplot2::labs(
|
||
|
|
fill = "PA level change group",
|
||
|
|
color = "PA level change group",
|
||
|
|
linetype = "PA level change group"
|
||
|
|
) +
|
||
|
|
ggplot2::scale_x_continuous(limits = c(0, 9.5), breaks = c(0, 3, 6, 9))
|
||
|
|
|
||
|
|
|
||
|
|
ggplot2::ggsave(here::here("out/smooth_surv.png"),
|
||
|
|
p1,
|
||
|
|
dpi = 600,
|
||
|
|
units = "cm",
|
||
|
|
height = 8,
|
||
|
|
width = 15)
|
||
|
|
p1
|
||
|
|
surv.data <- targets::tar_read(df_event_data) |>
|
||
|
|
events_dataset(impute = FALSE) |>
|
||
|
|
cox_regression(all.vars = FALSE) |> # Minimal model to just give risk table
|
||
|
|
ggsurvfit::survfit2() |>
|
||
|
|
ggsurvfit::tidy_survfit(times = c(0, 3, 6, 9))
|
||
|
|
|
||
|
|
|
||
|
|
risk_event <- c("n.risk", "cum.event") |>
|
||
|
|
purrr::map2(c("Numbers at risk", "Events"), \(.x, .y){
|
||
|
|
surv.data |>
|
||
|
|
tidyr::pivot_wider(id_cols = strata, names_from = time, values_from = {{ .x }}) |>
|
||
|
|
mask_micro_table(col.sel = -strata) |> # Masking columns
|
||
|
|
tidyr::pivot_longer(cols = -strata) |>
|
||
|
|
setNames(c("strata", "time", .x)) |>
|
||
|
|
dplyr::mutate(dplyr::across(time, ~ as.numeric(.x))) |>
|
||
|
|
dplyr::mutate(strata = factor(strata, levels = rev(c("Persistently high", "Decrease", "Increase", "Persistently low")))) |>
|
||
|
|
ggplot2::ggplot(ggplot2::aes(x = time, y = strata, label = get(.x))) +
|
||
|
|
ggplot2::geom_text() +
|
||
|
|
ggplot2::labs(y = NULL, title = .y) +
|
||
|
|
ggplot2::theme_minimal() +
|
||
|
|
ggsurvfit::theme_risktable_default()
|
||
|
|
})
|
||
|
|
|
||
|
|
p2 <- ggsurvfit::ggsurvfit_align_plots(list(p1, risk_event[1]) |> purrr::list_flatten()) |>
|
||
|
|
patchwork::wrap_plots(ncol = 1, heights = c(2, 1), guides = "collect")
|
||
|
|
|
||
|
|
ggplot2::ggsave(here::here("out/smooth_surv_tables.png"),
|
||
|
|
p2,
|
||
|
|
dpi = 600,
|
||
|
|
units = "cm",
|
||
|
|
height = 9,
|
||
|
|
width = 15)
|
||
|
|
p2
|
||
|
|
#| include: false
|
||
|
|
targets::tar_read(df_event_data) |>
|
||
|
|
events_dataset(impute = FALSE) |>
|
||
|
|
dplyr::mutate(pase_change = factor(pase_change, levels = c("Persistently high", "Decrease", "Increase", "Persistently low"))) |>
|
||
|
|
cox_regression(all.vars = FALSE) |> # Minimal model to just give risk table
|
||
|
|
ggsurvfit::survfit2() |>
|
||
|
|
ggsurvfit::ggsurvfit() +
|
||
|
|
ggplot2::scale_y_continuous(
|
||
|
|
limits = c(0, 1.02),
|
||
|
|
breaks = seq(0, 1, .25),
|
||
|
|
labels = scales::percent,
|
||
|
|
expand = c(0.01, 0)
|
||
|
|
) +
|
||
|
|
ggplot2::scale_x_continuous(breaks = c(0, 4, 8.5), expand = c(0.02, 0)) +
|
||
|
|
ggsurvfit::add_risktable()
|
||
|
|
#| include: false
|
||
|
|
targets::tar_read(df_event_data_small) |>
|
||
|
|
events_dataset(impute = FALSE) |>
|
||
|
|
dplyr::mutate(pase_change = factor(pase_change, levels = c("Persistently high", "Decrease", "Increase", "Persistently low"))) |>
|
||
|
|
cox_regression() |>
|
||
|
|
plot_survival_smooth() +
|
||
|
|
ggplot2::labs(
|
||
|
|
fill = "PA change group",
|
||
|
|
color = "PA change group",
|
||
|
|
linetype = "PA change group"
|
||
|
|
)
|
||
|
|
#| include: false
|
||
|
|
targets::tar_read(df_event_data) |>
|
||
|
|
events_dataset(impute = FALSE) |>
|
||
|
|
dplyr::mutate(pase_change = factor(pase_change, levels = c("Persistently high", "Decrease", "Increase", "Persistently low"))) |>
|
||
|
|
cox_regression() |>
|
||
|
|
plot_survival_smooth() +
|
||
|
|
ggplot2::labs(
|
||
|
|
fill = "PA change group",
|
||
|
|
color = "PA change group",
|
||
|
|
linetype = "PA change group"
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
# Code from: pa_events_analyses.qmd
|
||
|
|
targets::tar_config_set(store = here::here("_targets"))
|
||
|
|
source(here::here("R/functions.R"))
|
||
|
|
source(here::here("R/glmnet-reg.R"))
|
||
|
|
library(targets)
|
||
|
|
library(tidyverse)
|
||
|
|
#| include: false
|
||
|
|
list("Univariate"=targets::tar_read(tbl_events_cox_regression_uv),
|
||
|
|
"Multivariate"=targets::tar_read(tbl_events_cox_regression),
|
||
|
|
"Imputed Multivariate"=targets::tar_read(tbl_events_mids_cox_regression)) |>
|
||
|
|
# purrr::map(gtsummary::modify_table_styling,column=p.value,hide=TRUE) |>
|
||
|
|
purrr::map(gtsummary::bold_p) |>
|
||
|
|
tbl_merged_named()
|
||
|
|
#| include: true
|
||
|
|
list("Univariate"=targets::tar_read(tbl_events_cox_regression_uv),
|
||
|
|
"Multivariate"=targets::tar_read(tbl_events_cox_regression),
|
||
|
|
"Imputed Multivariate"=targets::tar_read(tbl_events_mids_cox_regression)) |>
|
||
|
|
purrr::map(gtsummary::modify_table_styling,column=p.value,hide=TRUE) |>
|
||
|
|
tbl_merged_named()
|
||
|
|
#| echo: true
|
||
|
|
targets::tar_read(df_event_data) |>
|
||
|
|
# dplyr::select(-reg_bmi) |>
|
||
|
|
na.omit() |>
|
||
|
|
nrow()
|
||
|
|
#| include: false
|
||
|
|
targets::tar_read(tbl_events_cox_regression_small)
|
||
|
|
|
||
|
|
targets::tar_read(df_event_data_small)
|
||
|
|
#| include: false
|
||
|
|
targets::tar_read(tbl_events_mids_cox_regression)
|
||
|
|
targets::tar_read("df_all_data_formatted") |>
|
||
|
|
events_ready() |>
|
||
|
|
dplyr::filter(!is.na(pase_0),!is.na(pase_4)) |>
|
||
|
|
(\(data){
|
||
|
|
c("pase_0","pase_4") |>
|
||
|
|
purrr::map(\(exp){
|
||
|
|
with(data,survival::coxph(as.formula(glue::glue("survival::Surv(time, status)~{exp}")))) |>
|
||
|
|
gtsummary::tbl_regression(exponentiate=TRUE)|>
|
||
|
|
fix_labels()
|
||
|
|
})
|
||
|
|
})() |>
|
||
|
|
gtsummary::tbl_stack()
|
||
|
|
targets::tar_read("df_all_data_formatted") |>
|
||
|
|
pase_cutter(drop.nas = TRUE) |>
|
||
|
|
events_ready(v.groups=c("clin","lifestyle.events","ses", "assess.events","quartiles")) |>
|
||
|
|
dplyr::select(-dplyr::any_of(c("pase_0","pase_4","pase_change"))) |>
|
||
|
|
(\(data){
|
||
|
|
c("pase_0_quartile","pase_4_quartile") |>
|
||
|
|
purrr::map(\(exp){
|
||
|
|
list("Univariable"=cox_regression(data=data,all.vars = FALSE, use.strata = FALSE, outcome.var = exp),
|
||
|
|
"Multivariable"=cox_regression(data=data,all.vars = TRUE, use.strata = FALSE, outcome.var = exp)) |>
|
||
|
|
purrr::map(\(.x){
|
||
|
|
.x |> gtsummary::tbl_regression(exponentiate=TRUE)|>
|
||
|
|
fix_labels()
|
||
|
|
}) |>
|
||
|
|
tbl_merged_named()
|
||
|
|
})
|
||
|
|
})() |>
|
||
|
|
gtsummary::tbl_stack()
|
||
|
|
targets::tar_read("df_all_data_formatted") |>
|
||
|
|
pase_cutter(drop.nas = TRUE) |>
|
||
|
|
get_vars(vars.groups = c("clin","lifestyle.events","ses", "assess.events","quartiles"),vars.vec = c("inc_time")) |>
|
||
|
|
dplyr::mutate(time=time+inc_time/365) |>
|
||
|
|
dplyr::select(-dplyr::any_of(c("pase_0","pase_4","pase_change","inc_time","event.include","pase_4_quartile"))) |>
|
||
|
|
(\(data){
|
||
|
|
list(
|
||
|
|
with(data,survival::coxph(as.formula(glue::glue("survival::Surv(time, status)~{exp}")))) |>
|
||
|
|
gtsummary::tbl_regression(exponentiate=TRUE)|>
|
||
|
|
fix_labels() |> gtsummary::add_glance_source_note()
|
||
|
|
)
|
||
|
|
})() |>
|
||
|
|
gtsummary::tbl_stack()
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
# Code from: pa_events_summaries.qmd
|
||
|
|
targets::tar_config_set(store = here::here("_targets"))
|
||
|
|
source(here::here("R/functions.R"))
|
||
|
|
source(here::here("R/glmnet-reg.R"))
|
||
|
|
library(targets)
|
||
|
|
library(tidyverse)
|
||
|
|
#| include: false
|
||
|
|
targets::tar_read(tbl_events_summary)
|
||
|
|
#| include: true
|
||
|
|
targets::tar_read(tbl_events_summary) |> mask_micro_summary(micro.n = 5)
|
||
|
|
#| include: false
|
||
|
|
ls <- targets::tar_read(df_event_data)|>
|
||
|
|
pase_cutter(drop.pase = TRUE) |>
|
||
|
|
dplyr::select(-tidyselect::all_of(c("status", "time"))) |>
|
||
|
|
dplyr::filter(!is.na(pase_change)) |>
|
||
|
|
labelling_data() |>
|
||
|
|
gtsummary::tbl_summary(
|
||
|
|
missing = "ifany",
|
||
|
|
by = pase_change,
|
||
|
|
# value = list(where(is.logical) ~ TRUE),
|
||
|
|
missing_text = "Missing"
|
||
|
|
) |>
|
||
|
|
gtsummary::add_overall() |>
|
||
|
|
gtsummary::add_n()
|
||
|
|
|
||
|
|
ls |> add_missing_stats() |> mask_micro_summary(micro.n = 5)
|
||
|
|
targets::tar_read(df_event_data)|>
|
||
|
|
pase_cutter(drop.pase = TRUE) |>
|
||
|
|
dplyr::select(pase_change, time) |>
|
||
|
|
dplyr::filter(!is.na(pase_change)) |>
|
||
|
|
labelling_data() |>
|
||
|
|
gtsummary::tbl_summary(
|
||
|
|
missing = "ifany",
|
||
|
|
by = pase_change,
|
||
|
|
type = gtsummary::all_continuous() ~ "continuous2",
|
||
|
|
statistic = list(gtsummary::all_continuous() ~ c("{median} ({p25}, {p75})","{mean} ({sd})")),
|
||
|
|
# value = list(where(is.logical) ~ TRUE),
|
||
|
|
|
||
|
|
missing_text = "Missing"
|
||
|
|
) |>
|
||
|
|
gtsummary::add_overall()
|
||
|
|
#| include: true
|
||
|
|
targets::tar_read(df_all_data_formatted) |>
|
||
|
|
(\(.x)summary(.x$pase_0))()
|
||
|
|
|
||
|
|
# targets::tar_read(df_all_data_formatted) |>
|
||
|
|
# dplyr::filter(!is.na(pase_0),!is.na(pase_4))|>
|
||
|
|
# (\(.x)summary(.x$pase_0))()
|
||
|
|
#| include: false
|
||
|
|
targets::tar_read(df_all_data_formatted) |>
|
||
|
|
pase_cutter(drop.pase = TRUE) |>
|
||
|
|
dplyr::select(mrs_4, pase_change) |>
|
||
|
|
dplyr::mutate(pase_change = forcats::fct_relevel(pase_change, c("Persistent high", "Increase", "Decrease", "Persistent low"))) |>
|
||
|
|
na.omit() |>
|
||
|
|
(\(.x){
|
||
|
|
table(mrs = .x$mrs_4, pase = .x$pase_change)
|
||
|
|
})() |>
|
||
|
|
rankinPlot::grottaBar(groupName = "pase", scoreName = "mrs")
|
||
|
|
targets::tar_read(df_event_data)|>
|
||
|
|
pase_cutter(drop.pase = FALSE) |>
|
||
|
|
dplyr::filter(!is.na(pase_change))|>
|
||
|
|
dplyr::select(pase_0,pase_4) |>
|
||
|
|
labelling_data() |>
|
||
|
|
gtsummary::tbl_summary()
|
||
|
|
targets::tar_read(df_all_data_formatted)|>
|
||
|
|
pase_cutter(drop.pase = FALSE) |>
|
||
|
|
dplyr::filter(!is.na(pase_change))|>
|
||
|
|
dplyr::count(pase_0_quartile,pase_4_quartile) |>
|
||
|
|
write_csv(here::here("out/event_sankey_data.csv"))
|
||
|
|
ds <- targets::tar_read(df_all_data_formatted) |>
|
||
|
|
get_vars(vars.groups = c("clin", "lifestyle", "ses", "assess.events", "extra")) |>
|
||
|
|
dplyr::select(-time, -status, -soc_status) |>
|
||
|
|
pase_cutter(drop.pase = TRUE) |>
|
||
|
|
labelling_data()
|
||
|
|
|
||
|
|
ls <- list(
|
||
|
|
pase_out = ds |>
|
||
|
|
dplyr::mutate(event.filter = factor(
|
||
|
|
dplyr::case_when(is.na(pase_change) ~ "pase_incomplete",
|
||
|
|
!event.include ~ "early_event",
|
||
|
|
.default = "included"
|
||
|
|
),
|
||
|
|
levels = c("pase_incomplete", "early_event", "included")
|
||
|
|
)),
|
||
|
|
event_out = ds |>
|
||
|
|
dplyr::mutate(event.filter = factor(
|
||
|
|
dplyr::case_when(!event.include ~ "early_event",
|
||
|
|
is.na(pase_change) ~ "pase_incomplete",
|
||
|
|
.default = "included"
|
||
|
|
),
|
||
|
|
levels = c("early_event", "pase_incomplete", "included")
|
||
|
|
))
|
||
|
|
) |>
|
||
|
|
purrr::map(dplyr::select, -event.include, -pase_change, -event)
|
||
|
|
|
||
|
|
ls_tbl <- ls |>
|
||
|
|
purrr::map(\(.x){
|
||
|
|
.x |>
|
||
|
|
dplyr::filter(event.filter != "pase_incomplete") |>
|
||
|
|
dplyr::mutate(event.filter = factor(event.filter))
|
||
|
|
}) |>
|
||
|
|
(\(.x) list(.x, purrr::pluck(ls, 1) |> dplyr::mutate(event.filter = event.filter == "included")))() |>
|
||
|
|
purrr::list_flatten()
|
||
|
|
#| include: false
|
||
|
|
ls_tbl |>
|
||
|
|
purrr::map(\(.x){
|
||
|
|
.x |>
|
||
|
|
gtsummary::tbl_summary(
|
||
|
|
by = event.filter,
|
||
|
|
missing = "ifany"
|
||
|
|
) |>
|
||
|
|
gtsummary::add_p()
|
||
|
|
}) |>
|
||
|
|
(\(.x)gtsummary::tbl_merge(.x, c(names(.x)[1:2], "all_out")))()
|
||
|
|
targets::tar_read(df_all_data_formatted) |>
|
||
|
|
get_vars(vars.groups = c("clin", "lifestyle", "ses", "assess.events", "extra", "assess.pred")) |>
|
||
|
|
dplyr::select(-time,
|
||
|
|
# -status,
|
||
|
|
-soc_status) |>
|
||
|
|
pase_cutter(drop.pase = FALSE) |>
|
||
|
|
labelling_data() |>
|
||
|
|
dplyr::mutate(event.filter = factor(
|
||
|
|
dplyr::case_when(
|
||
|
|
!event.include | is.na(pase_change) ~ "excluded",
|
||
|
|
.default = "included"
|
||
|
|
)
|
||
|
|
)) |>
|
||
|
|
dplyr::select(-who_4, -mdi_4, -mrs_4_above1, -mfi_gen_4) |>
|
||
|
|
gtsummary::tbl_summary(
|
||
|
|
by = event.filter,
|
||
|
|
missing = "ifany"
|
||
|
|
) |>
|
||
|
|
gtsummary::add_p()
|
||
|
|
ds |>
|
||
|
|
dplyr::mutate(pase_incomplete=is.na(pase_change),
|
||
|
|
excluded=pase_incomplete | !event.include,
|
||
|
|
early_event=!event.include) |>
|
||
|
|
dplyr::select(early_event,pase_incomplete,excluded) |>
|
||
|
|
gtsummary::tbl_summary(by=excluded)
|
||
|
|
#| include: true
|
||
|
|
ls_tbl |>
|
||
|
|
purrr::pluck(3) |>
|
||
|
|
dplyr::select(-who_4, -mdi_4, -mrs_4_above1, -mfi_gen_4) |>
|
||
|
|
(\(.x){
|
||
|
|
.x |>
|
||
|
|
gtsummary::tbl_summary(
|
||
|
|
by = event.filter,
|
||
|
|
missing = "no"
|
||
|
|
) |>
|
||
|
|
gtsummary::add_p()
|
||
|
|
})() |> mask_micro_summary(micro.n = 5)
|
||
|
|
#| include: true
|
||
|
|
targets::tar_read(df_event_data)|>
|
||
|
|
pase_cutter(drop.pase = FALSE)|>
|
||
|
|
dplyr::filter(!is.na(pase_change)) |>
|
||
|
|
dplyr::select(-time, -status, -pase_0_quartile, -pase_4_quartile, -pase_change) |>
|
||
|
|
labelling_data() |>
|
||
|
|
dplyr::mutate(reg_female=ifelse(reg_female,"Female","Male")) |>
|
||
|
|
gtsummary::tbl_summary(
|
||
|
|
missing = "ifany",
|
||
|
|
by = reg_female,
|
||
|
|
value = list(where(is.logical) ~ TRUE)
|
||
|
|
)|> gtsummary::add_p() |>
|
||
|
|
mask_micro_summary()
|
||
|
|
#| include: false
|
||
|
|
events <- targets::tar_read(ls_all_events) |>
|
||
|
|
dplyr::bind_rows() |>
|
||
|
|
dplyr::left_join(targets::tar_read(df_all_data_formatted) |>
|
||
|
|
dplyr::select(c("event.include", "rdate", "enddate", "PNR")), by = c("CPR" = "PNR")) |>
|
||
|
|
dplyr::mutate(
|
||
|
|
date.event = as.Date(date.event),
|
||
|
|
event.trial = !date.event > enddate,
|
||
|
|
event.itt = !date.event > (lubridate::dmonths(6) + rdate)
|
||
|
|
) |>
|
||
|
|
dplyr::mutate(event.type = dplyr::if_else(grepl("^death", event.type), "death", event.type))
|
||
|
|
|
||
|
|
ls <- list(
|
||
|
|
# Events during inclusion and during first 6 months after inclusion (Intention to treat)
|
||
|
|
events |>
|
||
|
|
dplyr::select(event.type, event.trial, event.itt) |>
|
||
|
|
tidyr::pivot_longer(cols = c("event.trial", "event.itt")) |>
|
||
|
|
dplyr::filter(value) |>
|
||
|
|
dplyr::select(-value) |>
|
||
|
|
gtsummary::tbl_summary(by = name),
|
||
|
|
|
||
|
|
# All registred events
|
||
|
|
events |>
|
||
|
|
dplyr::select(event.type) |>
|
||
|
|
gtsummary::tbl_summary(),
|
||
|
|
|
||
|
|
# All events in the selected group
|
||
|
|
events |>
|
||
|
|
dplyr::select(event.type, event.include) |>
|
||
|
|
# tidyr::pivot_longer(cols = c("event.trial","event.itt")) |>
|
||
|
|
dplyr::filter(event.include) |>
|
||
|
|
dplyr::select(-event.include) |>
|
||
|
|
gtsummary::tbl_summary(),
|
||
|
|
|
||
|
|
# All considered events (first event)
|
||
|
|
targets::tar_read(df_events_deaths)|>
|
||
|
|
dplyr::mutate(event.type = dplyr::if_else(grepl("^death", event.type), "death", event.type)) |>
|
||
|
|
dplyr::select(event.type) |>
|
||
|
|
gtsummary::tbl_summary(),
|
||
|
|
|
||
|
|
# All included events (first event)
|
||
|
|
targets::tar_read(df_all_data_formatted)|>
|
||
|
|
pase_cutter(drop.pase = TRUE) |>
|
||
|
|
dplyr::filter(!is.na(pase_change))|>
|
||
|
|
dplyr::filter(event.include) |>
|
||
|
|
# dplyr::select(-event.include)|>
|
||
|
|
dplyr::mutate(event = dplyr::if_else(grepl("^death", event), "death", event)) |>
|
||
|
|
dplyr::select(event) |>
|
||
|
|
dplyr::filter(!is.na(event)) |>
|
||
|
|
gtsummary::tbl_summary()
|
||
|
|
) |>
|
||
|
|
setNames(c("During trial", "All events", "Selected events", "Considered", "Included"))
|
||
|
|
|
||
|
|
ls[4] |>
|
||
|
|
purrr::map(\(.x) .x |>
|
||
|
|
mask_micro_summary(micro.n = 5)) |>
|
||
|
|
tbl_merged_named()
|
||
|
|
targets::tar_read(df_all_data_formatted)|>
|
||
|
|
pase_cutter(drop.pase = TRUE) |>
|
||
|
|
dplyr::filter(!is.na(pase_change))|>
|
||
|
|
dplyr::filter(event.include) |>
|
||
|
|
# dplyr::select(-event.include)|>
|
||
|
|
dplyr::mutate(event = dplyr::case_when(grepl("^death", event)~"Mors",
|
||
|
|
grepl("^DI6", event)~ "DI61-4",
|
||
|
|
.default = event)) |>
|
||
|
|
dplyr::select(event) |>
|
||
|
|
dplyr::filter(!is.na(event)) |>
|
||
|
|
gtsummary::tbl_summary() |> mask_micro_summary(micro.n = 5)
|
||
|
|
targets::tar_read(df_event_data) |>
|
||
|
|
pase_cutter(drop.pase = TRUE) |>
|
||
|
|
dplyr::filter(!is.na(pase_change)) |>
|
||
|
|
events_table(by="pase_change")
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
# Code from: sex_events.qmd
|
||
|
|
targets::tar_config_set(store = here::here("_targets"))
|
||
|
|
source(here::here("R/functions.R"))
|
||
|
|
source(here::here("R/glmnet-reg.R"))
|
||
|
|
library(targets)
|
||
|
|
library(tidyverse)
|
||
|
|
|
||
|
|
df <- targets::tar_read(df_all_data_formatted) |>
|
||
|
|
get_vars(vars.groups = c("clin","lifestyle.events","ses", "ssri")) |>
|
||
|
|
dplyr::rename(status=status.all,
|
||
|
|
time=time.all)
|
||
|
|
df |>
|
||
|
|
pase_cutter(drop.nas = TRUE,drop.pase = TRUE) |>
|
||
|
|
dplyr::mutate(reg_female=factor(ifelse(reg_female,"Female","Male"))) |>
|
||
|
|
(\(.x) {
|
||
|
|
split(.x, .x$reg_female)
|
||
|
|
})() |> lapply(\(.x) {
|
||
|
|
ls <- list("Univariate"=.x |> dplyr::select(-reg_female,-rtreat) |>
|
||
|
|
standard_multi_cox_table(all.vars = FALSE) |> gtsummary::add_nevent(),
|
||
|
|
"Multivariate"=.x |> dplyr::select(-reg_female,-rtreat) |>
|
||
|
|
standard_multi_cox_table(all.vars = TRUE) |> gtsummary::add_nevent())|>
|
||
|
|
purrr::map(gtsummary::bold_p) |>
|
||
|
|
tbl_merged_named()
|
||
|
|
ls |>
|
||
|
|
gtsummary::modify_table_body(~filter(.x, variable == "pase_change"))
|
||
|
|
}) |>
|
||
|
|
(\(.x) {
|
||
|
|
gtsummary::tbl_stack(.x,group_header=names(.x))
|
||
|
|
})()
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
# Code from: ssri_events.qmd
|
||
|
|
targets::tar_config_set(store = here::here("_targets"))
|
||
|
|
source(here::here("R/functions.R"))
|
||
|
|
source(here::here("R/glmnet-reg.R"))
|
||
|
|
library(targets)
|
||
|
|
library(tidyverse)
|
||
|
|
|
||
|
|
df <- targets::tar_read(df_all_data_formatted) |>
|
||
|
|
get_vars(vars.groups = c("clin","lifestyle.events","ses", "ssri")) |>
|
||
|
|
dplyr::rename(status=status.all,
|
||
|
|
time=time.all)
|
||
|
|
df |>
|
||
|
|
dplyr::select(#-event.include,
|
||
|
|
-rtreat_placebo)|>
|
||
|
|
labelling_data() |>
|
||
|
|
gtsummary::tbl_summary(by=rtreat) |>
|
||
|
|
gtsummary::add_overall() #|>
|
||
|
|
# mask_micro_summary()
|
||
|
|
df |>
|
||
|
|
dplyr::select(
|
||
|
|
-rtreat_placebo,
|
||
|
|
-pase_4#,
|
||
|
|
# -reg_bmi
|
||
|
|
) |>
|
||
|
|
cox_regression(outcome.var = "rtreat",use.strata = FALSE) |>
|
||
|
|
gtsummary::tbl_regression(exponentiate = TRUE,
|
||
|
|
add_estimate_to_reference_rows = TRUE,
|
||
|
|
show_single_row = where(is.logical)) |>
|
||
|
|
gtsummary::bold_p() |>
|
||
|
|
fix_labels()
|
||
|
|
df |>
|
||
|
|
dplyr::select(-rtreat_placebo) |>
|
||
|
|
cox_regression(outcome.var = "rtreat",all.vars = FALSE, use.strata = TRUE,include_formula = TRUE) |>
|
||
|
|
plot_survival_smooth()
|
||
|
|
df |>
|
||
|
|
pase_cutter(drop.nas = TRUE,drop.pase = TRUE) |>
|
||
|
|
(\(.x) {
|
||
|
|
split(.x, .x$rtreat)
|
||
|
|
})() |> lapply(\(.x) {
|
||
|
|
ls <- list("Univariate"=.x |> dplyr::select(-rtreat_placebo, -rtreat) |>
|
||
|
|
standard_multi_cox_table(all.vars = FALSE),
|
||
|
|
"Multivariate"=.x |> dplyr::select(-rtreat_placebo, -rtreat) |>
|
||
|
|
standard_multi_cox_table(all.vars = TRUE))|>
|
||
|
|
purrr::map(gtsummary::bold_p) |>
|
||
|
|
tbl_merged_named()
|
||
|
|
ls |>
|
||
|
|
gtsummary::modify_table_body(~filter(.x, variable == "pase_change"))
|
||
|
|
}) |> tbl_stack_named()
|
||
|
|
# gtsummary::tbl_stack(group_header=levels(factor(df$rtreat)))
|
||
|
|
|
||
|
|
|
||
|
|
|