write_analyses <- function(input_params_ls,
abstract_args_ls = NULL,
combinations_1L_lgl = F,
consent_1L_chr = "",
consent_indcs_int = 1L,
cores_1L_int = 1L,
depnt_var_min_val_1L_dbl = numeric(0),
existing_predrs_ls = NULL,
max_nbr_of_covars_1L_int = integer(0),
options_chr = c("Y", "N"),
start_at_int = c(2,1)){
ready4show::write_report(params_ls = input_params_ls$params_ls,
paths_ls = input_params_ls$path_params_ls$paths_ls,
rprt_nm_1L_chr = "AAA_PMRY_ANLYS_MTH",
abstract_args_ls = abstract_args_ls,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
header_yaml_args_ls = input_params_ls$header_yaml_args_ls,
options_chr = options_chr)
if(!is.null(input_params_ls$scndry_anlys_params_ls)){
write_secondary_analyses(input_params_ls,
combinations_1L_lgl = combinations_1L_lgl,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
cores_1L_int = cores_1L_int,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
existing_predrs_ls = existing_predrs_ls,
max_nbr_of_covars_1L_int = max_nbr_of_covars_1L_int,
options_chr = options_chr)
}
}
write_box_cox_tfmn <- function (data_tb,
predr_var_nm_1L_chr,
path_to_write_to_1L_chr,
consent_1L_chr = "",
consent_indcs_int = 1L,
depnt_var_nm_1L_chr = "utl_total_w",# Remove default
covar_var_nms_chr = NA_character_,
fl_nm_pfx_1L_chr = "A_RT",
height_1L_dbl = 6,
mdl_types_lup = NULL,
options_chr = c("Y", "N"),
start_1L_chr = NULL,
width_1L_dbl = 6)
{
if (is.null(mdl_types_lup))
utils::data("mdl_types_lup", envir = environment())
mdl <- make_mdl(data_tb, depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
predr_var_nm_1L_chr = predr_var_nm_1L_chr, covar_var_nms_chr = covar_var_nms_chr,
mdl_type_1L_chr = "OLS_NTF", mdl_types_lup = mdl_types_lup,
start_1L_chr = start_1L_chr)
path_to_plot_1L_chr <- ready4show::write_mdl_plt_fl(plt_fn = MASS::boxcox,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
fn_args_ls = list(mdl, plotit = T),
height_1L_dbl = height_1L_dbl,
options_chr = options_chr,
path_to_write_to_1L_chr = path_to_write_to_1L_chr,
plt_nm_1L_chr = paste0(fl_nm_pfx_1L_chr, "_", predr_var_nm_1L_chr, "_", "BOXCOX"),
width_1L_dbl = width_1L_dbl)
return(path_to_plot_1L_chr)
}
write_mdl_cmprsn <- function(scored_data_tb,
ds_smry_ls,
mdl_smry_ls,
output_data_dir_1L_chr,
consent_1L_chr = "",
consent_indcs_int = 1L,
depnt_var_max_val_1L_dbl = 0.99999,
depnt_var_min_val_1L_dbl = 0.00001,
options_chr = c("Y", "N"),
seed_1L_int = 1234){
bl_tb <- youthvars::transform_ds_for_tstng(scored_data_tb,
depnt_var_nm_1L_chr = ds_smry_ls$depnt_var_nm_1L_chr,
candidate_predrs_chr = ds_smry_ls$candidate_predrs_chr,
depnt_var_max_val_1L_dbl = depnt_var_max_val_1L_dbl,
round_var_nm_1L_chr = if(identical(ds_smry_ls$round_var_nm_1L_chr,character(0))){NA_character_}else{ds_smry_ls$round_var_nm_1L_chr},
round_val_1L_chr = if(identical(ds_smry_ls$round_var_nm_1L_chr,character(0))){NA_character_}else{ds_smry_ls$round_bl_val_1L_chr})
ds_smry_ls$candidate_predrs_chr <- reorder_cndt_predrs_chr(ds_smry_ls$candidate_predrs_chr,
data_tb = bl_tb,
depnt_var_nm_1L_chr = ds_smry_ls$depnt_var_nm_1L_chr)
mdl_smry_ls <- add_prefd_predr_var_to_mdl_smry_ls(mdl_smry_ls,
ds_smry_ls = ds_smry_ls)
mdl_smry_ls$smry_of_sngl_predr_mdls_tb <- write_sngl_predr_multi_mdls_outps(data_tb = bl_tb,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
dictionary_tb = ds_smry_ls$dictionary_tb,
folds_1L_int = mdl_smry_ls$folds_1L_int,
mdl_types_chr = mdl_smry_ls$mdl_types_chr,
depnt_var_nm_1L_chr = ds_smry_ls$depnt_var_nm_1L_chr,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
mdl_types_lup = mdl_smry_ls$mdl_types_lup,
new_dir_nm_1L_chr = "A_Candidate_Mdls_Cmprsn",
options_chr = options_chr,
predr_var_nm_1L_chr = mdl_smry_ls$predr_var_nm_1L_chr,
predr_var_desc_1L_chr = mdl_smry_ls$predr_var_desc_1L_chr,
predr_vals_dbl = mdl_smry_ls$predr_vals_dbl,
path_to_write_to_1L_chr = output_data_dir_1L_chr)
mdl_smry_ls$prefd_mdl_types_chr <- make_prefd_mdls_vec(mdl_smry_ls$smry_of_sngl_predr_mdls_tb,
choose_from_pfx_chr = mdl_smry_ls$choose_from_pfx_chr,
mdl_types_lup = mdl_smry_ls$mdl_types_lup)
mdl_cmprsn_ls <- list(bl_tb = bl_tb,
ds_smry_ls = ds_smry_ls,
mdl_smry_ls = mdl_smry_ls)
return(mdl_cmprsn_ls)
}
write_mdl_plts <- function (data_tb,
model_mdl,
predr_var_nm_1L_chr,
predr_var_desc_1L_chr,
predr_vals_dbl,
consent_1L_chr = "",
consent_indcs_int = 1L,
covar_var_nms_chr = NA_character_,
depnt_var_min_val_1L_dbl = numeric(0),
depnt_var_nm_1L_chr = "utl_total_w",
depnt_var_desc_1L_chr = "Utility score", # Remove defaults
family_1L_chr = NA_character_,
mdl_fl_nm_1L_chr = "OLS_NTF",
options_chr = c("Y", "N"),
path_to_write_to_1L_chr,
plt_indcs_int = 1:5,
predn_type_1L_chr = NULL,
tfmn_1L_chr = "NTF",
tfmn_for_bnml_1L_lgl = F)
{
data_tb <- transform_ds_for_mdlng(data_tb, depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
predr_var_nm_1L_chr = predr_var_nm_1L_chr, covar_var_nms_chr = covar_var_nms_chr)
tfd_data_tb <- transform_data_tb_for_cmprsn(data_tb, model_mdl = model_mdl,
depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
predn_type_1L_chr = predn_type_1L_chr, tfmn_for_bnml_1L_lgl = tfmn_for_bnml_1L_lgl,
family_1L_chr = family_1L_chr, tfmn_1L_chr = tfmn_1L_chr)
if (1 %in% plt_indcs_int) {
predn_ds_tb <- make_predn_ds_with_one_predr(model_mdl, depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
tfmn_1L_chr = tfmn_1L_chr, predr_var_nm_1L_chr = predr_var_nm_1L_chr,
predr_vals_dbl = predr_vals_dbl, predn_type_1L_chr = predn_type_1L_chr)
}else{
predn_ds_tb <- NULL
}
purrr::pwalk(list(plt_fn_ls = list(plot_lnr_cmprsn,
plot_auto_lm,
plot_obsd_predd_dnst,
plot_obsd_predd_dnst,
plot_sctr_plt_cmprsn)[plt_indcs_int],
fn_args_ls_ls = list(list(data_tb = data_tb,
predn_ds_tb = predn_ds_tb,
predr_var_nm_1L_chr = predr_var_nm_1L_chr,
predr_var_desc_1L_chr = predr_var_desc_1L_chr,
depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
depnt_var_desc_1L_chr = depnt_var_desc_1L_chr),
list(model_mdl, which_dbl = 1:6, ncol_1L_int = 3L, label_size_1L_int = 3),
list(tfd_data_tb = tfd_data_tb,
depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
depnt_var_desc_1L_chr = depnt_var_desc_1L_chr),
list(tfd_data_tb = transform_data_tb_for_cmprsn(data_tb,
model_mdl = model_mdl,
depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
new_data_is_1L_chr = ifelse(!4 %in% plt_indcs_int,
"Predicted", "Simulated"),
predn_type_1L_chr = NULL,
tfmn_for_bnml_1L_lgl = tfmn_for_bnml_1L_lgl,
family_1L_chr = family_1L_chr,
tfmn_1L_chr = tfmn_1L_chr),
depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
depnt_var_desc_1L_chr = depnt_var_desc_1L_chr,
predd_val_var_nm_1L_chr = "Simulated"),
list(tfd_data_tb = tfd_data_tb,
depnt_var_nm_1L_chr = depnt_var_nm_1L_chr))[plt_indcs_int],
plt_nm_sfx_chr = c("_LNR_CMPRSN",
"_AUTOPLT", "_PRED_DNSTY", "_SIM_DNSTY", "_PRED_SCTR")[plt_indcs_int],
size_ls = list(c(6, 6), c(4, 7), c(6, 6), c(6, 6), c(6,
6))[plt_indcs_int]), ~ ready4show::write_mdl_plt_fl(plt_fn = ..1,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
fn_args_ls = ..2,
options_chr = options_chr,
path_to_write_to_1L_chr = path_to_write_to_1L_chr,
plt_nm_1L_chr = paste0(mdl_fl_nm_1L_chr, ifelse(!is.na(covar_var_nms_chr[1]),
paste("_", paste0(covar_var_nms_chr[1:min(length(covar_var_nms_chr),
3)], collapse = "")), ""), ..3), height_1L_dbl = ..4[1],
width_1L_dbl = ..4[2]))
}
write_mdl_smry_rprt <- function(input_params_ls = NULL,
abstract_args_ls = NULL,
consent_1L_chr = "",
consent_indcs_int = 1L,
dv_ds_nm_and_url_chr = NULL,
options_chr = c("Y", "N"),
rprt_lup = NULL,
rcrd_nm_1L_chr = "AAA_RPRT_WRTNG_MTH",
rprt_nm_1L_chr = "AAA_TTU_MDL_CTG", # Change default
start_at_int = c(2,1),
use_shareable_mdls_1L_lgl = F){
header_yaml_args_ls <- input_params_ls$header_yaml_args_ls
path_params_ls <- input_params_ls$path_params_ls
output_format_ls <- input_params_ls$output_format_ls
use_fake_data_1L_lgl <- input_params_ls$params_ls$use_fake_data_1L_lgl
reference_int <- 0:(ifelse(is.null(input_params_ls$scndry_anlys_params_ls),
0,
length(input_params_ls$scndry_anlys_params_ls)))
paths_ls <- path_params_ls$paths_ls
if(is.null(rprt_lup))
data("rprt_lup", package = "specific", envir = environment())
rprt_lups_ls <- purrr::map(reference_int,
~{
if(.x==0){
reference_1L_int <- NULL
}else{
reference_1L_int <- .x
}
rprt_lup <- rprt_lup %>% transform_rprt_lup(add_suplry_rprt_1L_lgl = !is.null(reference_1L_int),
add_sharing_rprt_1L_lgl = T,
start_at_int = start_at_int,
reference_1L_int = reference_1L_int)
if(is.null(reference_1L_int)){
path_to_outp_fl_1L_chr <- paste0(paths_ls$output_data_dir_1L_chr,"/I_ALL_OUTPUT_.RDS")
if(use_shareable_mdls_1L_lgl){
main_rprt_append_ls <- list(rltv_path_to_data_dir_1L_chr = "../Output/G_Shareable/Models")
}else{
main_rprt_append_ls <- NULL
}
rcrd_rprt_append_ls <- path_params_ls[1:2]
}else{
path_to_outp_fl_1L_chr <- here::here(paths_ls$path_from_top_level_1L_chr,
paths_ls$write_to_dir_nm_1L_chr,
paste0("secondary_",reference_1L_int),
"Output","I_ALL_OUTPUT_.RDS")
main_rprt_append_ls <- list(existing_predrs_ls = readRDS(paste0(paths_ls$output_data_dir_1L_chr,
"/I_ALL_OUTPUT_.RDS")) %>%
purrr::pluck("predr_vars_nms_ls"))
if(use_shareable_mdls_1L_lgl){
main_rprt_append_ls$rltv_path_to_data_dir_1L_chr <- "../Output/G_Shareable/Models"
}else{
main_rprt_append_ls$rltv_path_to_data_dir_1L_chr <- NULL
}
paths_ls <- transform_paths_ls_for_scndry(paths_ls,
reference_1L_int = reference_1L_int,
remove_prmry_1L_lgl = T)
rcrd_rprt_append_ls <- list(transform_paths_ls = list(fn = transform_paths_ls_for_scndry,
args_ls = list(reference_1L_int = reference_1L_int,
remove_prmry_1L_lgl = T))) %>%
append(path_params_ls[1:2])
}
ready4show::write_rprt_with_rcrd(path_to_outp_fl_1L_chr = path_to_outp_fl_1L_chr,
abstract_args_ls = abstract_args_ls,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
header_yaml_args_ls = header_yaml_args_ls,
main_rprt_append_ls = main_rprt_append_ls,
nbr_of_digits_1L_int = output_format_ls$supplementary_digits_1L_int,
options_chr = options_chr,
output_type_1L_chr = output_format_ls$supplementary_outp_1L_chr,
paths_ls = paths_ls,
rcrd_nm_1L_chr = rcrd_nm_1L_chr,
rcrd_rprt_append_ls = rcrd_rprt_append_ls,
reference_1L_int = reference_1L_int,
rprt_lup = rprt_lup,
rprt_nm_1L_chr = rprt_lup$rprt_nms_chr[purrr::map_lgl(rprt_lup$rprt_nms_chr,
~startsWith(.x,rprt_nm_1L_chr))],
rprt_output_type_1L_chr = output_format_ls$supplementary_outp_1L_chr,
start_at_int = start_at_int,
use_fake_data_1L_lgl = use_fake_data_1L_lgl)
if(!is.null(dv_ds_nm_and_url_chr)){
ready4::write_to_dv_with_wait(consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
dss_tb = tibble::tibble(ds_obj_nm_chr = c(rprt_nm_1L_chr,rcrd_nm_1L_chr),
title_chr = rprt_lup %>%
dplyr::filter(rprt_nms_chr %in% c(rprt_nm_1L_chr,rcrd_nm_1L_chr)) %>%
dplyr::pull(title_chr)),
dv_nm_1L_chr = dv_ds_nm_and_url_chr[1],
ds_url_1L_chr = dv_ds_nm_and_url_chr[2],
options_chr = options_chr,
parent_dv_dir_1L_chr = paths_ls$dv_dir_1L_chr,
paths_to_dirs_chr = paths_ls$reports_dir_1L_chr,
inc_fl_types_chr = ".pdf",
paths_are_rltv_1L_lgl = F)
}
rprt_lup
}) %>% stats::setNames(reference_int %>% purrr::map_chr(~ifelse(.x==0,
"Primary",
paste0("secondary_",.x))))
consolidated_mdl_ings_ls <- reference_int %>%
purrr::reduce(.init = paste0(paths_ls$output_data_dir_1L_chr,"/G_Shareable/Ingredients/mdl_ingredients.RDS") %>%
readRDS(),
~
if(.y>0){
ingredients_ls <- here::here(paths_ls$path_from_top_level_1L_chr,
paths_ls$write_to_dir_nm_1L_chr,
paste0("secondary_",.y),
"Output",
"G_Shareable",
"Ingredients",
"mdl_ingredients.RDS") %>% readRDS()
.x <- append(.x,
list(ingredients_ls) %>%
setNames(paste0("secondary_",.y)))
.x$dictionary_tb <- dplyr::bind_rows(.x$dictionary_tb,
ingredients_ls$dictionary_tb) %>%
dplyr::distinct()
.x$mdls_lup <- dplyr::bind_rows(.x$mdls_lup,
ingredients_ls$mdls_lup %>%
dplyr::mutate(source_chr = paste0("Secondary Analysis ",
LETTERS[.y]))) %>%
dplyr::distinct()
.x$mdls_smry_tb <- dplyr::bind_rows(.x$mdls_smry_tb,
ingredients_ls$mdls_smry_tb) %>%
dplyr::distinct()
.x$predictors_lup <- dplyr::bind_rows(.x$predictors_lup,
ingredients_ls$predictors_lup) %>%
dplyr::distinct()
.x
}else{
.x$Primary <- .x
.x$mdls_lup <- .x$mdls_lup %>%
dplyr::mutate(source_chr = "Primary Analysis")
.x
})
ready4::write_with_consent(consented_fn = saveRDS,
prompt_1L_chr = paste0("Do you confirm that you want to write the file ",
"mdl_ingredients.RDS",
" to ",
paste0(paths_ls$output_data_dir_1L_chr,"/G_Shareable/Ingredients"),
"?"),
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
consented_args_ls = list(object = consolidated_mdl_ings_ls,
file = paste0(paths_ls$output_data_dir_1L_chr,"/G_Shareable/Ingredients/mdl_ingredients.RDS")),
consented_msg_1L_chr = paste0("File ",
"mdl_ingredients.RDS",
" has been written to ",
paste0(paths_ls$output_data_dir_1L_chr,"/G_Shareable/Ingredients"),
"."),
declined_msg_1L_chr = "Write request cancelled - no new files have been written.",
options_chr = options_chr)
if(!is.null(input_params_ls)){
input_params_ls$rprt_lups_ls <- rprt_lups_ls
}else{
input_params_ls <- rprt_lups_ls
}
return(input_params_ls)
}
write_mdl_type_covars_mdls <- function (data_tb,
consent_1L_chr = "",
consent_indcs_int = 1L,
depnt_var_min_val_1L_dbl = numeric(0),
depnt_var_nm_1L_chr = "utl_total_w",# Remove default
options_chr = c("Y", "N"),
predrs_var_nms_chr,
covar_var_nms_chr, mdl_type_1L_chr, path_to_write_to_1L_chr, new_dir_nm_1L_chr = "D_Covars_Selection",
fl_nm_pfx_1L_chr = "D_CT", mdl_types_lup = NULL, start_1L_chr = NA_character_)
{
if (is.null(mdl_types_lup))
utils::data("mdl_types_lup", envir = environment())
arg_vals_chr <- c("control_chr", "predn_type_chr","tfmn_chr") %>%
purrr::map_chr(~ready4::get_from_lup_obj(mdl_types_lup,
match_var_nm_1L_chr = "short_name_chr", match_value_xx = mdl_type_1L_chr,
target_var_nm_1L_chr = .x, evaluate_1L_lgl = F))
control_1L_chr <- arg_vals_chr[1]
predn_type_1L_chr <- arg_vals_chr[2]
tfmn_1L_chr <- arg_vals_chr[3]
if (is.na(predn_type_1L_chr))
predn_type_1L_chr <- NULL
data_tb <- data_tb %>%
add_tfd_var_to_ds(depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
tfmn_1L_chr = tfmn_1L_chr)
output_dir_1L_chr <- output_dir_1L_chr <- write_new_outp_dir(path_to_write_to_1L_chr,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
new_dir_nm_1L_chr = new_dir_nm_1L_chr,
options_chr = options_chr)
smry_of_mdls_with_covars_tb <- purrr::map_dfr(predrs_var_nms_chr,
~{
model_mdl <- make_mdl(data_tb,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
predr_var_nm_1L_chr = .x, covar_var_nms_chr = covar_var_nms_chr,
tfmn_1L_chr = tfmn_1L_chr, mdl_type_1L_chr = mdl_type_1L_chr,
control_1L_chr = control_1L_chr, mdl_types_lup = mdl_types_lup,
start_1L_chr = start_1L_chr)
mdl_fl_nm_1L_chr <- paste0(fl_nm_pfx_1L_chr, "_",
.x, "_", mdl_type_1L_chr)
ready4::write_with_consent(consented_fn = saveRDS,
prompt_1L_chr = paste0("Do you confirm that you want to write the file ",
paste0(mdl_fl_nm_1L_chr, ".RDS"),
" to ",
output_dir_1L_chr,
"?"),
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
consented_args_ls = list(object = model_mdl,
file = paste0(output_dir_1L_chr, "/", mdl_fl_nm_1L_chr, ".RDS")),
consented_msg_1L_chr = paste0("File ",
paste0(mdl_fl_nm_1L_chr, ".RDS"),
" has been written to ",
output_dir_1L_chr,
"."),
declined_msg_1L_chr = "Write request cancelled - no new files have been written.",
options_chr = options_chr)
if("summary.betareg" %in% class(summary(model_mdl))){
coefficients_mat <- summary(model_mdl)$coefficients$mean
}else{
coefficients_mat <- summary(model_mdl)$coefficients
}
tibble::tibble(variable = .x,
Rsquare = caret::R2(stats::predict(model_mdl, type = predn_type_1L_chr) %>% calculate_depnt_var_tfmn(tfmn_1L_chr = tfmn_1L_chr,
tfmn_is_outp_1L_lgl = T),
data_tb %>%
dplyr::pull(!!rlang::sym(depnt_var_nm_1L_chr)),
form = "traditional"),
AIC = stats::AIC(model_mdl),
BIC = stats::BIC(model_mdl),
Significant = paste(names(which(coefficients_mat[,4] < 0.01)), collapse = " "))
})
smry_of_mdls_with_covars_tb <- smry_of_mdls_with_covars_tb %>%
dplyr::arrange(dplyr::desc(AIC))
saveRDS(smry_of_mdls_with_covars_tb, paste0(output_dir_1L_chr,
"/", paste0(fl_nm_pfx_1L_chr, "_", "SMRY", "_", mdl_type_1L_chr),
".RDS"))
return(smry_of_mdls_with_covars_tb)
}
write_mdl_type_multi_outps <- function (data_tb,
mdl_type_1L_chr,
new_dir_nm_1L_chr,
path_to_write_to_1L_chr,
predrs_var_nms_chr,
consent_1L_chr = "",
consent_indcs_int = 1L,
covar_var_nms_chr = NA_character_,
depnt_var_min_val_1L_dbl = numeric(0),
depnt_var_nm_1L_chr = "utl_total_w",# remove default
fl_nm_pfx_1L_chr = "C_PREDR",
folds_1L_int = 10,
mdl_types_lup = NULL,
options_chr = c("Y", "N"),
plt_indcs_int = c(3, 5),
start_1L_chr = NULL)
{
if (is.null(mdl_types_lup))
utils::data("mdl_types_lup", envir = environment())
output_dir_1L_chr <- write_new_outp_dir(path_to_write_to_1L_chr,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
new_dir_nm_1L_chr = new_dir_nm_1L_chr,
options_chr = options_chr)
smry_of_mdl_sngl_predrs_tb <- purrr::map_dfr(predrs_var_nms_chr,
~{
tfmn_1L_chr <- ready4::get_from_lup_obj(mdl_types_lup,
match_var_nm_1L_chr = "short_name_chr", match_value_xx = mdl_type_1L_chr,
target_var_nm_1L_chr = "tfmn_chr", evaluate_1L_lgl = F)
mdl_smry_tb <- write_mdl_type_sngl_outps(data_tb,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
covar_var_nms_chr = covar_var_nms_chr,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
folds_1L_int = folds_1L_int,
mdl_fl_nm_1L_chr = paste0(fl_nm_pfx_1L_chr,
"_", .x, "_", mdl_type_1L_chr),
mdl_type_1L_chr = mdl_type_1L_chr,
mdl_types_lup = mdl_types_lup,
options_chr = options_chr,
path_to_write_to_1L_chr = output_dir_1L_chr,
plt_indcs_int = plt_indcs_int,
predr_vals_dbl = NA_real_,
predr_var_desc_1L_chr = NA_character_,
predr_var_nm_1L_chr = .x,
start_1L_chr = start_1L_chr,
tfmn_1L_chr = tfmn_1L_chr)
if (!is.null(folds_1L_int)) {
mdl_smry_tb <- mdl_smry_tb %>% dplyr::select((-Model)) %>%
dplyr::mutate(Predictor = .x) %>% dplyr::select(Predictor,
dplyr::everything())
}
mdl_smry_tb
})
if (!is.null(folds_1L_int)) {
smry_of_mdl_sngl_predrs_tb <- smry_of_mdl_sngl_predrs_tb %>%
dplyr::arrange(dplyr::desc(RsquaredP))
}
return(smry_of_mdl_sngl_predrs_tb)
}
write_mdl_type_sngl_outps <- function (data_tb,
mdl_fl_nm_1L_chr,
path_to_write_to_1L_chr,
predr_vals_dbl,
predr_var_desc_1L_chr,
predr_var_nm_1L_chr,
consent_1L_chr = "",
consent_indcs_int = 1L,
covar_var_nms_chr = NA_character_,
depnt_var_nm_1L_chr = "utl_total_w",
depnt_var_min_val_1L_dbl = numeric(0),
folds_1L_int = 10,
mdl_type_1L_chr = "OLS_NTF",
mdl_types_lup = NULL,
options_chr = c("Y", "N"),
start_1L_chr = NULL,
plt_indcs_int = NA_integer_,
tfmn_1L_chr = "NTF")
{
if (is.null(mdl_types_lup))
utils::data("mdl_types_lup", envir = environment())
arg_vals_chr <- c("control_chr", "family_chr", "predn_type_chr") %>%
purrr::map_chr(~ready4::get_from_lup_obj(mdl_types_lup,
match_var_nm_1L_chr = "short_name_chr", match_value_xx = mdl_type_1L_chr,
target_var_nm_1L_chr = .x, evaluate_1L_lgl = F))
control_1L_chr <- arg_vals_chr[1]
family_1L_chr <- arg_vals_chr[2]
predn_type_1L_chr <- arg_vals_chr[3]
if (is.na(predn_type_1L_chr))
predn_type_1L_chr <- NULL
if (is.na(plt_indcs_int[1])) {
plt_indcs_int <- 1:5
if (!is.na(control_1L_chr)) {
if (control_1L_chr %>% startsWith("betareg"))
plt_indcs_int <- c(1, 3, 4, 5)
}
}
tfmn_for_bnml_1L_lgl <- ready4::get_from_lup_obj(mdl_types_lup,
match_var_nm_1L_chr = "short_name_chr", match_value_xx = mdl_type_1L_chr,
target_var_nm_1L_chr = "tfmn_for_bnml_lgl", evaluate_1L_lgl = F)
data_tb <- data_tb %>%
add_tfd_var_to_ds(depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
tfmn_1L_chr = tfmn_1L_chr)
model_mdl <- make_mdl(data_tb, depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
tfmn_1L_chr = tfmn_1L_chr, predr_var_nm_1L_chr = predr_var_nm_1L_chr,
covar_var_nms_chr = covar_var_nms_chr, mdl_type_1L_chr = mdl_type_1L_chr,
mdl_types_lup = mdl_types_lup, control_1L_chr = control_1L_chr,
start_1L_chr = start_1L_chr)
write_mdl_plts(data_tb,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
covar_var_nms_chr = covar_var_nms_chr,
depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
family_1L_chr = family_1L_chr,
mdl_fl_nm_1L_chr = mdl_fl_nm_1L_chr,
model_mdl = model_mdl,
options_chr = options_chr,
path_to_write_to_1L_chr = path_to_write_to_1L_chr,
plt_indcs_int = plt_indcs_int,
predn_type_1L_chr = predn_type_1L_chr,
predr_vals_dbl = predr_vals_dbl,
predr_var_desc_1L_chr = predr_var_desc_1L_chr,
predr_var_nm_1L_chr = predr_var_nm_1L_chr,
tfmn_1L_chr = tfmn_1L_chr,
tfmn_for_bnml_1L_lgl = tfmn_for_bnml_1L_lgl)
if (!is.null(folds_1L_int)) {
smry_of_one_predr_mdl_tb <- make_smry_of_mdl_outp(data_tb,
folds_1L_int = folds_1L_int,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
tfmn_1L_chr = tfmn_1L_chr, predr_var_nm_1L_chr = predr_var_nm_1L_chr, covar_var_nms_chr = covar_var_nms_chr,
mdl_type_1L_chr = mdl_type_1L_chr, mdl_types_lup = mdl_types_lup, start_1L_chr = start_1L_chr,
predn_type_1L_chr = predn_type_1L_chr)
}
else {
smry_of_one_predr_mdl_tb <- tibble::tibble()
}
ready4::write_with_consent(consented_fn = saveRDS,
prompt_1L_chr = paste0("Do you confirm that you want to write the file ",
paste0(mdl_fl_nm_1L_chr, ".RDS"),
" to ",
path_to_write_to_1L_chr,
"?"),
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
consented_args_ls = list(object = model_mdl,
file = paste0(path_to_write_to_1L_chr, "/", mdl_fl_nm_1L_chr, ".RDS")),
consented_msg_1L_chr = paste0("File ",
paste0(mdl_fl_nm_1L_chr, ".RDS"),
" has been written to ",
path_to_write_to_1L_chr,
"."),
declined_msg_1L_chr = "Write request cancelled - no new files have been written.",
options_chr = options_chr)
return(smry_of_one_predr_mdl_tb)
}
write_mdls_to_dv <- function(outp_smry_ls,
consent_1L_chr = "",
consent_indcs_int = 1L,
new_dir_nm_1L_chr = "G_Shareable",
options_chr = c("Y", "N"),
shareable_title_detail_1L_chr = "",
output_dir_chr = NA_character_){
if(is.na(output_dir_chr[1]))
output_dir_chr <- write_shareable_dir(outp_smry_ls = outp_smry_ls,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
new_dir_nm_1L_chr = new_dir_nm_1L_chr,
options_chr = options_chr)
if (!is.null(outp_smry_ls$dv_ls)) {
write_shareable_mdls_to_dv(outp_smry_ls,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
new_dir_nm_1L_chr = new_dir_nm_1L_chr,
options_chr = options_chr,
output_dir_chr = output_dir_chr,
share_ingredients_1L_lgl = T)
outp_smry_ls$shareable_mdls_tb <- write_shareable_mdls_to_dv(outp_smry_ls,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
new_dir_nm_1L_chr = new_dir_nm_1L_chr,
options_chr = options_chr,
output_dir_chr = output_dir_chr,
share_ingredients_1L_lgl = F,
shareable_title_detail_1L_chr = shareable_title_detail_1L_chr)
}
return(outp_smry_ls)
}
write_mdls_with_covars_cmprsn <- function(scored_data_tb,
bl_tb,
combinations_1L_lgl = F,
consent_1L_chr = "",
consent_indcs_int = 1L,
depnt_var_min_val_1L_dbl = numeric(0),
ds_smry_ls,
existing_predrs_ls = NULL,
max_nbr_of_covars_1L_int = integer(0),
mdl_smry_ls,
options_chr = c("Y", "N"),
output_data_dir_1L_chr,
seed_1L_int = 1234,
session_data_ls = NULL){
empty_tb <- write_mdl_type_multi_outps(data_tb = bl_tb,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
covar_var_nms_chr = mdl_smry_ls$prefd_covars_chr,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
depnt_var_nm_1L_chr = ds_smry_ls$depnt_var_nm_1L_chr,
fl_nm_pfx_1L_chr = "E_CK_CV",
folds_1L_int = NULL,
mdl_type_1L_chr = mdl_smry_ls$prefd_mdl_types_chr[1],
mdl_types_lup = mdl_smry_ls$mdl_types_lup,
new_dir_nm_1L_chr = "E_Predrs_W_Covars_Sngl_Mdl_Cmprsn",
options_chr = options_chr,
path_to_write_to_1L_chr = output_data_dir_1L_chr,
predrs_var_nms_chr = mdl_smry_ls$predr_cmprsn_tb$predr_chr,
start_1L_chr = NA_character_)
mdl_smry_ls$predr_vars_nms_ls <- make_predr_vars_nms_ls(main_predrs_chr = mdl_smry_ls$predr_cmprsn_tb$predr_chr,
covars_ls = list(mdl_smry_ls$prefd_covars_chr),
combinations_1L_lgl = combinations_1L_lgl,
existing_predrs_ls = existing_predrs_ls,
max_nbr_of_covars_1L_int = max_nbr_of_covars_1L_int)
mdl_smry_ls$mdl_nms_ls <- make_mdl_nms_ls(mdl_smry_ls$predr_vars_nms_ls,
mdl_types_chr = mdl_smry_ls$prefd_mdl_types_chr)
outp_smry_ls <- list(scored_data_tb = scored_data_tb,
dictionary_tb = ds_smry_ls$dictionary_tb,
predictors_lup = ds_smry_ls$predictors_lup,
smry_of_sngl_predr_mdls_tb = mdl_smry_ls$smry_of_sngl_predr_mdls_tb,
prefd_mdl_types_chr = mdl_smry_ls$prefd_mdl_types_chr,
predr_cmprsn_tb = mdl_smry_ls$predr_cmprsn_tb,
smry_of_mdl_sngl_predrs_tb = mdl_smry_ls$smry_of_mdl_sngl_predrs_tb,
mdls_with_covars_smry_tb = mdl_smry_ls$mdls_with_covars_smry_tb,
signt_covars_chr = mdl_smry_ls$signt_covars_chr,
prefd_covars_chr = mdl_smry_ls$prefd_covars_chr,
depnt_var_nm_1L_chr = ds_smry_ls$depnt_var_nm_1L_chr,
predr_vars_nms_ls = mdl_smry_ls$predr_vars_nms_ls,
mdl_nms_ls = mdl_smry_ls$mdl_nms_ls,
id_var_nm_1L_chr = ds_smry_ls$id_var_nm_1L_chr,
round_var_nm_1L_chr = ds_smry_ls$round_var_nm_1L_chr,
round_bl_val_1L_chr = ds_smry_ls$round_bl_val_1L_chr,
path_to_write_to_1L_chr = output_data_dir_1L_chr,
seed_1L_int = seed_1L_int,
folds_1L_int = mdl_smry_ls$folds_1L_int,
max_nbr_of_boruta_mdl_runs_int = mdl_smry_ls$max_nbr_of_boruta_mdl_runs_int,
mdl_types_lup = mdl_smry_ls$mdl_types_lup,
file_paths_chr = list.files(output_data_dir_1L_chr, recursive = T),
session_data_ls = session_data_ls)
ready4::write_with_consent(consented_fn = saveRDS,
prompt_1L_chr = paste0("Do you confirm that you want to write the file ",
"I_ALL_OUTPUT_.RDS",
" to ",
outp_smry_ls$path_to_write_to_1L_chr,
"?"),
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
consented_args_ls = list(object = outp_smry_ls,
file = paste0(outp_smry_ls$path_to_write_to_1L_chr,"/I_ALL_OUTPUT_.RDS")),
consented_msg_1L_chr = paste0("File ",
"I_ALL_OUTPUT_.RDS",
" has been written to ",
outp_smry_ls$path_to_write_to_1L_chr,
"."),
declined_msg_1L_chr = "Write request cancelled - no new files have been written.",
options_chr = options_chr)
return(outp_smry_ls)
}
write_new_outp_dir <- function(path_to_write_to_1L_chr,
new_dir_nm_1L_chr,
consent_1L_chr = "",
consent_indcs_int = 1L,
options_chr = c("Y", "N")){
output_dir_1L_chr <- paste0(path_to_write_to_1L_chr,"/",new_dir_nm_1L_chr)
ready4::write_new_dirs(output_dir_1L_chr,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
options_chr = options_chr)
return(output_dir_1L_chr)
}
write_predr_and_covars_cmprsn <- function(scored_data_tb,
bl_tb,
consent_1L_chr = "",
consent_indcs_int = 1L,
depnt_var_min_val_1L_dbl = numeric(0),
ds_smry_ls,
mdl_smry_ls,
options_chr = c("Y", "N"),
output_data_dir_1L_chr,
seed_1L_int = 1234,
signft_covars_cdn_1L_chr = "any"){
mdl_smry_ls$predr_cmprsn_tb <- write_predr_cmprsn_outps(data_tb = bl_tb,
candidate_predrs_chr = ds_smry_ls$candidate_predrs_chr,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
depnt_var_nm_1L_chr = ds_smry_ls$depnt_var_nm_1L_chr,
max_nbr_of_boruta_mdl_runs_int = mdl_smry_ls$max_nbr_of_boruta_mdl_runs_int,
new_dir_nm_1L_chr = "B_Candidate_Predrs_Cmprsn",
options_chr = options_chr,
path_to_write_to_1L_chr = output_data_dir_1L_chr)
if(identical(mdl_smry_ls$predr_cmprsn_tb$predr_chr, character(0))){
stop("No important predictors identified - execution aborted. Try specifying other predictors.")
}
mdl_smry_ls$smry_of_mdl_sngl_predrs_tb <- write_mdl_type_multi_outps(data_tb = bl_tb,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
depnt_var_nm_1L_chr = ds_smry_ls$depnt_var_nm_1L_chr,
fl_nm_pfx_1L_chr = "C_PREDR",
folds_1L_int = mdl_smry_ls$folds_1L_int,
mdl_type_1L_chr = mdl_smry_ls$prefd_mdl_types_chr[1],
mdl_types_lup = mdl_smry_ls$mdl_types_lup,
new_dir_nm_1L_chr = "C_Predrs_Sngl_Mdl_Cmprsn",
options_chr = options_chr,
path_to_write_to_1L_chr = output_data_dir_1L_chr,
predrs_var_nms_chr = mdl_smry_ls$predr_cmprsn_tb$predr_chr,
start_1L_chr = NA_character_)
bl_tb <- scored_data_tb %>%
youthvars::transform_ds_for_tstng(depnt_var_nm_1L_chr = ds_smry_ls$depnt_var_nm_1L_chr,
candidate_predrs_chr = ds_smry_ls$candidate_predrs_chr,
covar_var_nms_chr = ds_smry_ls$candidate_covar_nms_chr,
remove_all_msng_1L_lgl = T,
round_var_nm_1L_chr = ds_smry_ls$round_var_nm_1L_chr,
round_val_1L_chr = ds_smry_ls$round_bl_val_1L_chr)
mdl_smry_ls$mdls_with_covars_smry_tb <- write_mdl_type_covars_mdls(bl_tb,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
covar_var_nms_chr = ds_smry_ls$candidate_covar_nms_chr,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
depnt_var_nm_1L_chr = ds_smry_ls$depnt_var_nm_1L_chr,
fl_nm_pfx_1L_chr = "D_CT",
mdl_type_1L_chr = mdl_smry_ls$prefd_mdl_types_chr[1],
new_dir_nm_1L_chr = "D_Predr_Covars_Cmprsn",
mdl_types_lup = mdl_smry_ls$mdl_types_lup,
options_chr = options_chr,
path_to_write_to_1L_chr = output_data_dir_1L_chr,
predrs_var_nms_chr = ds_smry_ls$candidate_predrs_chr)
mdl_smry_ls$signt_covars_chr <- get_signft_covars(mdls_with_covars_smry_tb = mdl_smry_ls$mdls_with_covars_smry_tb,
covar_var_nms_chr = ds_smry_ls$candidate_covar_nms_chr,
X_Ready4useDyad = ready4use::Ready4useDyad(ds_tb = scored_data_tb,
dictionary_r3 = ds_smry_ls$dictionary_tb),
what_1L_chr = signft_covars_cdn_1L_chr)
predr_and_covars_cmprsn_ls <- list(bl_tb = bl_tb,
ds_smry_ls = ds_smry_ls,
mdl_smry_ls = mdl_smry_ls)
return(predr_and_covars_cmprsn_ls)
}
write_predr_and_mdl_tstng_results <- function(scored_data_tb,
combinations_1L_lgl = F,
consent_1L_chr = "",
consent_indcs_int = 1L,
depnt_var_max_val_1L_dbl = 0.99999,
depnt_var_min_val_1L_dbl = 0.00001,
ds_smry_ls,
existing_predrs_ls = NULL,
max_nbr_of_covars_1L_int = integer(0),
mdl_smry_ls,
session_data_ls,
options_chr = c("Y", "N"),
output_data_dir_1L_chr,
seed_1L_int = 1234,
signft_covars_cdn_1L_chr = "any"){
cmprsn_ls <- write_mdl_cmprsn(scored_data_tb = scored_data_tb,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
depnt_var_max_val_1L_dbl = depnt_var_max_val_1L_dbl,
ds_smry_ls = ds_smry_ls,
mdl_smry_ls = mdl_smry_ls,
options_chr = options_chr,
output_data_dir_1L_chr = output_data_dir_1L_chr,
seed_1L_int = seed_1L_int)
cmprsn_ls <- write_predr_and_covars_cmprsn(scored_data_tb = scored_data_tb,
bl_tb = cmprsn_ls$bl_tb,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
ds_smry_ls = cmprsn_ls$ds_smry_ls,
mdl_smry_ls = cmprsn_ls$mdl_smry_ls,
options_chr = options_chr,
output_data_dir_1L_chr = output_data_dir_1L_chr,
seed_1L_int = seed_1L_int,
signft_covars_cdn_1L_chr = signft_covars_cdn_1L_chr)
if(ifelse(is.null(cmprsn_ls$mdl_smry_ls$prefd_covars_chr),
T,
is.na(cmprsn_ls$mdl_smry_ls$prefd_covars_chr[1]))){
cmprsn_ls$mdl_smry_ls$prefd_covars_chr <- cmprsn_ls$mdl_smry_ls$signt_covars_chr
}
outp_smry_ls <- write_mdls_with_covars_cmprsn(scored_data_tb = scored_data_tb,
bl_tb = cmprsn_ls$bl_tb,
combinations_1L_lgl = combinations_1L_lgl,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
ds_smry_ls = cmprsn_ls$ds_smry_ls,
existing_predrs_ls = existing_predrs_ls,
max_nbr_of_covars_1L_int = max_nbr_of_covars_1L_int,
mdl_smry_ls = cmprsn_ls$mdl_smry_ls,
options_chr = options_chr,
output_data_dir_1L_chr = output_data_dir_1L_chr,
seed_1L_int = seed_1L_int,
session_data_ls = session_data_ls)
return(outp_smry_ls)
}
write_predr_cmprsn_outps <- function (data_tb, path_to_write_to_1L_chr, new_dir_nm_1L_chr = "B_Candidate_Predrs_Cmprsn",
consent_1L_chr = "",
consent_indcs_int = 1L,
depnt_var_min_val_1L_dbl = numeric(0),
depnt_var_nm_1L_chr = "utl_total_w",
candidate_predrs_chr, max_nbr_of_boruta_mdl_runs_int = 300L,
options_chr = c("Y", "N"))
{
if (length(candidate_predrs_chr) > 1) {
covar_var_nms_chr <- candidate_predrs_chr[2:length(candidate_predrs_chr)]
} else {
covar_var_nms_chr <- NA_character_
}
data_tb <- transform_ds_for_mdlng(data_tb, depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
predr_var_nm_1L_chr = candidate_predrs_chr[1], covar_var_nms_chr = covar_var_nms_chr)
rf_mdl <- randomForest::randomForest(stats::as.formula(paste0(depnt_var_nm_1L_chr,
" ~ .")), data = data_tb, importance = TRUE)
boruta_mdl <- Boruta::Boruta(stats::as.formula(paste0(depnt_var_nm_1L_chr,
" ~ .")), data = data_tb, maxRuns = max_nbr_of_boruta_mdl_runs_int)
output_dir_1L_chr <- write_new_outp_dir(path_to_write_to_1L_chr,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
new_dir_nm_1L_chr = new_dir_nm_1L_chr,
options_chr = options_chr)
purrr::pwalk(list(fn_ls = list(randomForest::varImpPlot,
plot), fn_args_ls_ls = list(list(rf_mdl, main = ""),
list(boruta_mdl, cex = 1.5, cex.axis = 0.8, las = 2,
xlab = "", main = "")), plt_nm_sfx_chr = c("_RF_VAR_IMP",
"_BORUTA_VAR_IMP"), size_ls = list(c(6, 6), c(4, 6))),
~ ready4show::write_mdl_plt_fl(plt_fn = ..1,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
fn_args_ls = ..2,
options_chr = options_chr,
path_to_write_to_1L_chr = output_dir_1L_chr,
plt_nm_1L_chr = paste0("B_PRED_CMPRSN", ..3), height_1L_dbl = ..4[1],
width_1L_dbl = ..4[2]))
confirmed_predrs_chr <- names(boruta_mdl$finalDecision)[boruta_mdl$finalDecision ==
"Confirmed"]
confirmed_predrs_tb <- rf_mdl$importance %>% tibble::as_tibble(rownames = "predr_chr") %>%
dplyr::arrange(dplyr::desc(`%IncMSE`)) %>% dplyr::filter(predr_chr %in%
confirmed_predrs_chr)
return(confirmed_predrs_tb)
}
write_scndry_analysis <- function(valid_params_ls_ls,
candidate_covar_nms_chr,
path_params_ls,
reference_1L_int,
backend_1L_chr = "cmdstanr",
candidate_predrs_chr = NULL,
combinations_1L_lgl = F,
consent_1L_chr = "",
consent_indcs_int = 1L,
cores_1L_int = 1L,
depnt_var_max_val_1L_dbl = 0.99999,
depnt_var_min_val_1L_dbl = 0.00001,
existing_predrs_ls = NULL,
max_nbr_of_covars_1L_int = integer(0),
new_dir_nm_1L_chr = "F_TS_Mdls",
options_chr = c("Y", "N"),
predictors_lup = NULL,
prefd_covars_chr = NA_character_,
signft_covars_cdn_1L_chr = "any"){
analysis_params_ls <- valid_params_ls_ls$params_ls %>%
append(path_params_ls[1:2])
rename_lup <- valid_params_ls_ls$rename_lup
if(!is.null(predictors_lup)){
predictors_lup$short_name_chr <- predictors_lup$short_name_chr %>%
purrr::map_chr(~ifelse(!.x %in% rename_lup$old_nms_chr,
.x,
ready4::get_from_lup_obj(rename_lup,
match_value_xx = .x,
match_var_nm_1L_chr = "old_nms_chr",
target_var_nm_1L_chr = "new_nms_chr",
evaluate_1L_lgl = F)))
analysis_params_ls$predictors_lup <- predictors_lup
}
if(!is.null(candidate_predrs_chr)){
candidate_predrs_chr <- candidate_predrs_chr %>%
purrr::map_chr(~ifelse(!.x %in% rename_lup$old_nms_chr,
.x,
ready4::get_from_lup_obj(rename_lup,
match_value_xx = .x,
match_var_nm_1L_chr = "old_nms_chr",
target_var_nm_1L_chr = "new_nms_chr",
evaluate_1L_lgl = F)))
analysis_params_ls$ds_descvs_ls$candidate_predrs_chr <- candidate_predrs_chr
}
if(!is.null(candidate_covar_nms_chr)){
candidate_covar_nms_chr <- candidate_covar_nms_chr %>%
purrr::map_chr(~ifelse(!.x %in% rename_lup$old_nms_chr,
.x,
ready4::get_from_lup_obj(rename_lup,
match_value_xx = .x,
match_var_nm_1L_chr = "old_nms_chr",
target_var_nm_1L_chr = "new_nms_chr",
evaluate_1L_lgl = F)))
}
if(ifelse(is.null(prefd_covars_chr),F,!is.na(prefd_covars_chr))){
prefd_covars_chr <- prefd_covars_chr %>%
purrr::map_chr(~ifelse(!.x %in% rename_lup$old_nms_chr,
.x,
ready4::get_from_lup_obj(rename_lup,
match_value_xx = .x,
match_var_nm_1L_chr = "old_nms_chr",
target_var_nm_1L_chr = "new_nms_chr",
evaluate_1L_lgl = F)))
}
analysis_params_ls$prefd_covars_chr <- prefd_covars_chr
analysis_params_ls$candidate_covar_nms_chr <- candidate_covar_nms_chr
path_params_ls$paths_ls <- write_scndry_analysis_dir(path_params_ls$paths_ls,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
options_chr = options_chr,
reference_1L_int = reference_1L_int)
params_ls <- list(candidate_predrs_chr = candidate_predrs_chr,
transform_paths_ls = list(fn = transform_paths_ls_for_scndry,
args_ls = list(reference_1L_int = reference_1L_int))) %>%
append(analysis_params_ls)
params_ls$utl_class_fn_1L_chr <- params_ls$raw_ds_tfmn_fn <- NULL
params_ls_ls <- transform_params_ls_to_valid(params_ls)
params_ls <- params_ls_ls %>%
purrr::pluck("params_ls") %>%
append(list(rename_lup = params_ls_ls$rename_lup))
outp_smry_ls <- valid_params_ls_ls$outp_smry_ls
mdl_smry_ls <- params_ls$mdl_smry_ls
data_tb <- outp_smry_ls$scored_data_tb
ds_smry_ls <- params_ls$ds_descvs_ls %>%
make_analysis_ds_smry_ls(candidate_covar_nms_chr = params_ls$candidate_covar_nms_chr,
predictors_lup = params_ls$predictors_lup)
ds_smry_ls$candidate_predrs_chr <- params_ls$candidate_predrs_chr
existing_mdls_chr <- outp_smry_ls[["mdl_nms_ls"]] %>% purrr::flatten_chr()
existing_predrs_ls <- outp_smry_ls$predr_vars_nms_ls
cmprsns_ls <- write_mdl_cmprsn(scored_data_tb = data_tb, ###
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
depnt_var_max_val_1L_dbl = depnt_var_max_val_1L_dbl,
ds_smry_ls = ds_smry_ls,
mdl_smry_ls = mdl_smry_ls,
options_chr = options_chr,
output_data_dir_1L_chr = path_params_ls$paths_ls$write_to_dir_nm_1L_chr,
seed_1L_int = params_ls$seed_1L_int)
if(!is.null(params_ls$prefd_mdl_types_chr)){
cmprsns_ls$mdl_smry_ls$prefd_mdl_types_chr <- params_ls$prefd_mdl_types_chr
}
cmprsns_ls <- write_predr_and_covars_cmprsn(scored_data_tb = data_tb,###
bl_tb = cmprsns_ls$bl_tb,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
ds_smry_ls = cmprsns_ls$ds_smry_ls,
mdl_smry_ls = cmprsns_ls$mdl_smry_ls,
options_chr = options_chr,
output_data_dir_1L_chr = path_params_ls$paths_ls$write_to_dir_nm_1L_chr,
seed_1L_int = params_ls$seed_1L_int,
signft_covars_cdn_1L_chr = signft_covars_cdn_1L_chr)
if(!is.null(params_ls$prefd_covars_chr)){
cmprsns_ls$mdl_smry_ls$prefd_covars_chr <- params_ls$prefd_covars_chr
}
outp_smry_ls <- write_mdls_with_covars_cmprsn(scored_data_tb = data_tb,###
bl_tb = cmprsns_ls$bl_tb,
combinations_1L_lgl = F, # Correct
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
ds_smry_ls = cmprsns_ls$ds_smry_ls,
existing_predrs_ls = NULL, # Correct
max_nbr_of_covars_1L_int = integer(0), # Correct
mdl_smry_ls = cmprsns_ls$mdl_smry_ls,
options_chr = options_chr,
output_data_dir_1L_chr = path_params_ls$paths_ls$write_to_dir_nm_1L_chr,
seed_1L_int = params_ls$seed_1L_int,
session_data_ls = sessionInfo())
outp_smry_ls$mdl_nms_ls <- outp_smry_ls$mdl_nms_ls %>%
purrr::map(~.x[!.x %in% existing_mdls_chr]) %>%
purrr::compact()
outp_smry_ls$predr_vars_nms_ls <- outp_smry_ls$predr_vars_nms_ls[outp_smry_ls$predr_vars_nms_ls %>% purrr::map_lgl(~{
test_chr <- .x
!any(existing_predrs_ls %>% purrr::map_lgl(~identical(.x,test_chr))
)})]
outp_smry_ls <- write_ts_mdls_from_alg_outp(outp_smry_ls = outp_smry_ls,###
backend_1L_chr = backend_1L_chr,
combinations_1L_lgl = combinations_1L_lgl,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
cores_1L_int = cores_1L_int,
control_ls = params_ls$control_ls,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
existing_predrs_ls = existing_predrs_ls,
iters_1L_int = params_ls$iters_1L_int,
max_nbr_of_covars_1L_int = max_nbr_of_covars_1L_int,
new_dir_nm_1L_chr = new_dir_nm_1L_chr,
options_chr = options_chr,
path_to_write_to_1L_chr = outp_smry_ls$path_to_write_to_1L_chr,
predictors_lup = params_ls$predictors_lup,
prior_ls = params_ls$prior_ls,
utl_min_val_1L_dbl = params_ls$utl_min_val_1L_dbl)
return(outp_smry_ls)
}
write_scndry_analysis_dir <- function(paths_ls,
consent_1L_chr = "",
consent_indcs_int = 1L,
options_chr = c("Y", "N"),
reference_1L_int = 1){
paths_ls <- transform_paths_ls_for_scndry(paths_ls,
reference_1L_int = reference_1L_int)
ready4::write_new_dirs(paths_ls$write_to_dir_nm_1L_chr,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
options_chr = options_chr)
return(paths_ls)
}
write_secondary_analyses <- function(input_params_ls,
backend_1L_chr = "cmdstanr",
combinations_1L_lgl = F,
consent_1L_chr = "",
consent_indcs_int = 1L,
cores_1L_int = 1L,
depnt_var_min_val_1L_dbl = numeric(0),
existing_predrs_ls = NULL,
max_nbr_of_covars_1L_int = integer(0),
new_dir_nm_1L_chr = "F_TS_Mdls",
options_chr = c("Y", "N")){
references_int <- 1:length(input_params_ls$scndry_anlys_params_ls)
results_ls <- references_int %>%
purrr::map(~{
changes_ls <- input_params_ls$scndry_anlys_params_ls %>%
purrr::pluck(.x)
if(is.null(changes_ls$candidate_covar_nms_chr))
changes_ls$candidate_covar_nms_chr <- input_params_ls$params_ls$candidate_covar_nms_chr %>% transform_names(input_params_ls$rename_lup, invert_1L_lgl = T)
if(is.null(changes_ls$candidate_predrs_chr)){
changes_ls$candidate_covar_nms_chr <- changes_ls$candidate_covar_nms_chr[!changes_ls$candidate_covar_nms_chr %in% changes_ls$candidate_predrs_chr]
}
write_scndry_analysis(valid_params_ls_ls = input_params_ls,
backend_1L_chr = backend_1L_chr,
candidate_covar_nms_chr = changes_ls$candidate_covar_nms_chr,
candidate_predrs_chr = changes_ls$candidate_predrs_chr,
combinations_1L_lgl = combinations_1L_lgl,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
cores_1L_int = cores_1L_int,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
existing_predrs_ls = existing_predrs_ls,
max_nbr_of_covars_1L_int = max_nbr_of_covars_1L_int,
new_dir_nm_1L_chr = new_dir_nm_1L_chr,
options_chr = options_chr,
path_params_ls = input_params_ls$path_params_ls,
predictors_lup = changes_ls$predictors_lup,
prefd_covars_chr = changes_ls$prefd_covars_chr,
reference_1L_int = .x)})
return(results_ls)
}
write_shareable_dir <- function(outp_smry_ls,
consent_1L_chr = "",
consent_indcs_int = 1L,
new_dir_nm_1L_chr = "G_Shareable",
options_chr = c("Y", "N"),
sub_dirs_chr = c("Ingredients","Models","Table_Predn_Tools")){
output_dir_chr <- write_new_outp_dir(outp_smry_ls$path_to_write_to_1L_chr,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
new_dir_nm_1L_chr = new_dir_nm_1L_chr,
options_chr = options_chr)
output_dir_chr <- c(output_dir_chr,
sub_dirs_chr %>% purrr::map_chr(~write_new_outp_dir(output_dir_chr,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
new_dir_nm_1L_chr = .x,
options_chr = options_chr)))
return(output_dir_chr)
}
write_shareable_mdls <- function (outp_smry_ls,
consent_1L_chr = "",
consent_indcs_int = 1L,
depnt_var_min_val_1L_dbl = numeric(0),
new_dir_nm_1L_chr = "G_Shareable",
options_chr = c("Y", "N"),
shareable_title_detail_1L_chr = "",
write_mdls_to_dv_1L_lgl = F) {
output_dir_chr <- write_shareable_dir(outp_smry_ls = outp_smry_ls,
consent_1L_chr = consent_1L_chr, consent_indcs_int = consent_indcs_int,
new_dir_nm_1L_chr = new_dir_nm_1L_chr, options_chr = options_chr)
incld_mdl_paths_chr <- make_incld_mdl_paths(outp_smry_ls)
fake_ds_tb <- make_fake_ts_data(outp_smry_ls, depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
depnt_vars_are_NA_1L_lgl = F)
mdl_types_lup <- outp_smry_ls$mdl_types_lup
shareable_mdls_ls <- outp_smry_ls$mdl_nms_ls %>% purrr::flatten_chr() %>%
purrr::map2(incld_mdl_paths_chr, ~{
model_mdl <- readRDS(paste0(outp_smry_ls$path_to_write_to_1L_chr, "/", .y))
mdl_smry_tb <- outp_smry_ls$mdls_smry_tb %>% dplyr::filter(Model == .x)
mdl_nm_1L_chr <- .x
mdl_type_1L_chr <- get_mdl_type_from_nm(mdl_nm_1L_chr, mdl_types_lup = mdl_types_lup)
tfmn_1L_chr <- ready4::get_from_lup_obj(mdl_types_lup, match_value_xx = mdl_type_1L_chr, match_var_nm_1L_chr = "short_name_chr",
target_var_nm_1L_chr = "tfmn_chr", evaluate_1L_lgl = F)
predn_type_1L_chr <- ready4::get_from_lup_obj(mdl_types_lup, match_value_xx = mdl_type_1L_chr, match_var_nm_1L_chr = "short_name_chr",
target_var_nm_1L_chr = "predn_type_chr", evaluate_1L_lgl = F)
if (is.na(predn_type_1L_chr))
predn_type_1L_chr <- NULL
control_1L_chr <- ready4::get_from_lup_obj(mdl_types_lup, match_value_xx = mdl_type_1L_chr, match_var_nm_1L_chr = "short_name_chr",
target_var_nm_1L_chr = "control_chr", evaluate_1L_lgl = F)
sd_dbl <- mdl_smry_tb %>% dplyr::filter(Parameter == "SD (Intercept)") %>% dplyr::select(Estimate, SE) %>% t() %>% as.vector()
mdl_fake_ds_tb <- fake_ds_tb %>% add_tfd_var_to_ds(depnt_var_nm_1L_chr = outp_smry_ls$depnt_var_nm_1L_chr,
tfmn_1L_chr = tfmn_1L_chr, depnt_var_max_val_1L_dbl = 0.999) %>%
dplyr::select(names(model_mdl$data))
model_mdl$data <- mdl_fake_ds_tb
table_predn_mdl <- make_shareable_mdl(fake_ds_tb = mdl_fake_ds_tb,
mdl_smry_tb = mdl_smry_tb,
x_ready4use_dictionary = outp_smry_ls$dictionary_tb,
# x_Ready4useDyad = ready4use::Ready4useDyad(ds_tb = outp_smry_ls$scored_data_tb,
# dictionary_r3 = outp_smry_ls$dictionary_tb),
depnt_var_nm_1L_chr = outp_smry_ls$depnt_var_nm_1L_chr,
id_var_nm_1L_chr = outp_smry_ls$id_var_nm_1L_chr,
tfmn_1L_chr = tfmn_1L_chr, mdl_type_1L_chr = mdl_type_1L_chr,
mdl_types_lup = mdl_types_lup, control_1L_chr = control_1L_chr,
start_1L_chr = NA_character_, seed_1L_int = outp_smry_ls$seed_1L_int)
c(4, 3) %>% purrr::walk2(list(table_predn_mdl, model_mdl),
~{
ready4::write_with_consent(consented_fn = saveRDS,
prompt_1L_chr = paste0("Do you confirm that you want to write the file ",
paste0(mdl_nm_1L_chr, ".RDS"), " to ",
output_dir_chr[.x], "?"),
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
consented_args_ls = list(object = .y,
file = paste0(output_dir_chr[.x], "/", mdl_nm_1L_chr, ".RDS")),
consented_msg_1L_chr = paste0("File ", paste0(mdl_nm_1L_chr, ".RDS"), " has been written to ",
output_dir_chr[.x], "."),
declined_msg_1L_chr = "Write request cancelled - no new files have been written.",
options_chr = options_chr)
})
scaling_fctr_dbl <- make_scaling_fctr_dbl(outp_smry_ls)
write_ts_mdl_plts(brms_mdl = model_mdl, consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int, depnt_var_nm_1L_chr = outp_smry_ls$depnt_var_nm_1L_chr,
mdl_nm_1L_chr = mdl_nm_1L_chr, options_chr = options_chr,
path_to_write_to_1L_chr = output_dir_chr[3],
predn_type_1L_chr = predn_type_1L_chr, round_var_nm_1L_chr = outp_smry_ls$round_var_nm_1L_chr,
sd_dbl = sd_dbl, sfx_1L_chr = " from table",
table_predn_mdl = table_predn_mdl,
tfd_data_tb = outp_smry_ls$scored_data_tb %>%
transform_tb_to_mdl_inp(depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
depnt_var_nm_1L_chr = outp_smry_ls$depnt_var_nm_1L_chr,
predr_vars_nms_chr = outp_smry_ls$predr_vars_nms_ls %>%
purrr::flatten_chr() %>% unique(), id_var_nm_1L_chr = outp_smry_ls$id_var_nm_1L_chr,
round_var_nm_1L_chr = outp_smry_ls$round_var_nm_1L_chr,
round_bl_val_1L_chr = outp_smry_ls$round_bl_val_1L_chr,
scaling_fctr_dbl = scaling_fctr_dbl), tfmn_1L_chr = tfmn_1L_chr,
utl_min_val_1L_dbl = ifelse(!is.null(outp_smry_ls$utl_min_val_1L_dbl),
outp_smry_ls$utl_min_val_1L_dbl, -1))
table_predn_mdl
}) %>% stats::setNames(outp_smry_ls$mdl_nms_ls %>% purrr::flatten_chr())
outp_smry_ls$shareable_mdls_ls <- shareable_mdls_ls
outp_smry_ls$shareable_mdls_tb <- NULL
ingredients_ls <- list(depnt_var_nm_1L_chr = outp_smry_ls$depnt_var_nm_1L_chr,
dictionary_tb = outp_smry_ls$dictionary_tb %>% dplyr::filter(var_nm_chr %in%
names(fake_ds_tb)), id_var_nm_1L_chr = outp_smry_ls$id_var_nm_1L_chr,
fake_ds_tb = fake_ds_tb, mdls_lup = outp_smry_ls$shareable_mdls_ls %>%
purrr::map2_dfr(names(outp_smry_ls$shareable_mdls_ls),
~{
if (inherits(.x, "betareg")) {
coeffs_dbl <- .x$coefficients$mean
} else {
coeffs_dbl <- .x$coefficients
}
mdl_type_1L_chr = get_mdl_type_from_nm(.y,
mdl_types_lup = outp_smry_ls$mdl_types_lup)
tibble::tibble(mdl_nms_chr = .y) %>% dplyr::mutate(predrs_ls = list(coeffs_dbl %>%
names() %>% stringr::str_remove_all("_change") %>%
stringr::str_remove_all("_baseline") %>%
stringr::str_remove_all("_scaled") %>% stringr::str_remove_all("_unscaled") %>%
unique() %>% purrr::discard(~.x == "(Intercept)")),
mdl_type_chr = mdl_type_1L_chr, tfmn_chr = ready4::get_from_lup_obj(outp_smry_ls$mdl_types_lup,
match_value_xx = mdl_type_1L_chr, match_var_nm_1L_chr = "short_name_chr",
target_var_nm_1L_chr = "tfmn_chr", evaluate_1L_lgl = F))
}), mdls_smry_tb = outp_smry_ls$mdls_smry_tb,
mdl_types_lup = mdl_types_lup, predictors_lup = outp_smry_ls$predictors_lup,
round_var_nm_1L_chr = outp_smry_ls$round_var_nm_1L_chr,
seed_1L_int = outp_smry_ls$seed_1L_int, utl_min_val_1L_dbl = ifelse(!is.null(outp_smry_ls$utl_min_val_1L_dbl),
outp_smry_ls$utl_min_val_1L_dbl, -1))
ready4::write_with_consent(consented_fn = saveRDS,
prompt_1L_chr = paste0("Do you confirm that you want to write the file ", paste0("mdl_ingredients", ".RDS"), " to ", output_dir_chr[2], "?"),
consent_1L_chr = consent_1L_chr, consent_indcs_int = consent_indcs_int,
consented_args_ls = list(object = ingredients_ls,
file = paste0(output_dir_chr[2], "/", "mdl_ingredients", ".RDS")),
consented_msg_1L_chr = paste0("File ", paste0("mdl_ingredients", ".RDS"), " has been written to ", output_dir_chr[2], "."),
declined_msg_1L_chr = "Write request cancelled - no new files have been written.",
options_chr = options_chr)
outp_smry_ls <- write_mdls_to_dv(outp_smry_ls, consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int, new_dir_nm_1L_chr = new_dir_nm_1L_chr,
options_chr = options_chr, output_dir_chr = output_dir_chr,
shareable_title_detail_1L_chr = shareable_title_detail_1L_chr)
return(outp_smry_ls)
}
write_shareable_mdls_to_dv <- function (outp_smry_ls,
consent_1L_chr = "",
consent_indcs_int = 1L,
new_dir_nm_1L_chr = "G_Shareable",
options_chr = c("Y", "N"),
shareable_title_detail_1L_chr = "",
share_ingredients_1L_lgl = T,
output_dir_chr = NA_character_){
if(is.na(output_dir_chr[1]))
output_dir_chr <- write_shareable_dir(outp_smry_ls = outp_smry_ls,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
new_dir_nm_1L_chr = new_dir_nm_1L_chr,
options_chr = options_chr)
if(share_ingredients_1L_lgl){
shareable_mdls_tb <- tibble::tibble(ds_obj_nm_chr = "mdl_ingredients",
title_chr = "An R object that can be used to construct model objects from tables of coefficients. Contains a synthetic dataset.")
}else{
shareable_mdls_tb <- tibble::tibble(ds_obj_nm_chr = names(outp_smry_ls$shareable_mdls_ls),
title_chr = paste0("A shareable (contains no confidential data) statistical model, ",
names(outp_smry_ls$shareable_mdls_ls), ".",
shareable_title_detail_1L_chr))
}
ready4::write_to_dv_with_wait(shareable_mdls_tb,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
dv_nm_1L_chr = outp_smry_ls$dv_ls$dv_nm_1L_chr,
ds_url_1L_chr = outp_smry_ls$dv_ls$ds_url_1L_chr,
inc_fl_types_chr = ".RDS",
options_chr = options_chr,
parent_dv_dir_1L_chr = outp_smry_ls$dv_ls$parent_dv_dir_1L_chr,
paths_to_dirs_chr = output_dir_chr[ifelse(share_ingredients_1L_lgl,
2,
3)],
paths_are_rltv_1L_lgl = F)
if(!share_ingredients_1L_lgl){
ds_ls <- dataverse::get_dataset(outp_smry_ls$dv_ls$ds_url_1L_chr)
shareable_mdls_tb <- shareable_mdls_tb %>%
dplyr::mutate(dv_nm_chr = outp_smry_ls$dv_ls$dv_nm_1L_chr,
fl_ids_int = ds_obj_nm_chr %>%
purrr::map_int(~ready4::get_fl_id_from_dv_ls(ds_ls,
fl_nm_1L_chr = paste0(.x, ".RDS")) %>%
as.integer()))
}
return(shareable_mdls_tb)
}
write_sngl_predr_multi_mdls_outps <- function (data_tb,
dictionary_tb,
mdl_types_chr,
path_to_write_to_1L_chr,
predr_vals_dbl,
predr_var_desc_1L_chr,
predr_var_nm_1L_chr,
consent_1L_chr = "",
consent_indcs_int = 1L,
covar_var_nms_chr = NA_character_,
depnt_var_min_val_1L_dbl = numeric(0),
depnt_var_nm_1L_chr = "utl_total_w", # Remove default
fl_nm_pfx_1L_chr = "A_RT_",
folds_1L_int = 10,
mdl_types_lup = NULL,
new_dir_nm_1L_chr = "A_Candidate_Mdls_Cmprsn",
options_chr = c("Y", "N"),
plt_indcs_int = NA_integer_,
start_1L_chr = NULL)
{
if (is.null(mdl_types_lup))
utils::data("mdl_types_lup", envir = environment())
data_tb <- transform_ds_for_mdlng(data_tb, depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
predr_var_nm_1L_chr = predr_var_nm_1L_chr, covar_var_nms_chr = covar_var_nms_chr)
output_dir_1L_chr <- write_new_outp_dir(path_to_write_to_1L_chr,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
new_dir_nm_1L_chr = new_dir_nm_1L_chr,
options_chr = options_chr)
ready4show::write_mdl_plt_fl(plt_fn = make_tfmn_cmprsn_plt,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
fn_args_ls = list(data_tb = data_tb,
depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
dictionary_tb = dictionary_tb),
height_1L_dbl = 6,
options_chr = options_chr,
path_to_write_to_1L_chr = output_dir_1L_chr,
plt_nm_1L_chr = "A_TFMN_CMPRSN_DNSTY",
width_1L_dbl = 10)
smry_of_sngl_predr_mdls_tb <- purrr::map_dfr(mdl_types_chr,
~{
tfmn_1L_chr <- ready4::get_from_lup_obj(mdl_types_lup,
match_var_nm_1L_chr = "short_name_chr", match_value_xx = .x,
target_var_nm_1L_chr = "tfmn_chr", evaluate_1L_lgl = F)
write_mdl_type_sngl_outps(data_tb,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
covar_var_nms_chr = covar_var_nms_chr,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
folds_1L_int = folds_1L_int,
mdl_fl_nm_1L_chr = paste0(fl_nm_pfx_1L_chr,
predr_var_nm_1L_chr, "_", .x),
mdl_type_1L_chr = .x,
mdl_types_lup = mdl_types_lup,
options_chr = options_chr,
path_to_write_to_1L_chr = output_dir_1L_chr,
plt_indcs_int = plt_indcs_int,
predr_vals_dbl = predr_vals_dbl,
predr_var_nm_1L_chr = predr_var_nm_1L_chr,
predr_var_desc_1L_chr = predr_var_desc_1L_chr,
start_1L_chr = start_1L_chr,
tfmn_1L_chr = tfmn_1L_chr)
})
if (!is.null(folds_1L_int))
smry_of_sngl_predr_mdls_tb <- smry_of_sngl_predr_mdls_tb %>%
dplyr::arrange(dplyr::desc(RsquaredP))
return(smry_of_sngl_predr_mdls_tb)
}
write_study_outp_ds <- function(input_params_ls,
abstract_args_ls = NULL,
consent_1L_chr = "",
consent_indcs_int = 1L,
dv_mdl_desc_1L_chr = "An R model.",# Generalise / remove default.
inc_fl_types_chr = ".pdf",
options_chr = c("Y", "N"),
purge_data_1L_lgl = FALSE,
start_at_int = c(2,1)){
header_yaml_args_ls <- input_params_ls$header_yaml_args_ls
path_params_ls <- input_params_ls$path_params_ls
output_format_ls <- input_params_ls$output_format_ls
use_fake_data_1L_lgl <- input_params_ls$params_ls$use_fake_data_1L_lgl
dv_ds_nm_and_url_chr <- input_params_ls$path_params_ls$dv_ds_nm_and_url_chr
rprt_lups_ls <- input_params_ls$rprt_lups_ls
paths_ls <- path_params_ls$paths_ls
rprt_lups_ls %>%
purrr::walk2(names(rprt_lups_ls),
~ {
rprt_lup <- .x
reference_1L_int <- ifelse(.y == "Primary",
0,
as.numeric(stringr::str_remove(.y,"secondary_")))
if(is.null(rprt_lup)){
data("rprt_lup", package = "specific", envir = environment())
rprt_lup <- transform_rprt_lup(rprt_lup,
add_suplry_rprt_1L_lgl = reference_1L_int > 0,
add_sharing_rprt_1L_lgl = T,
start_at_int = start_at_int,
reference_1L_int = reference_1L_int)
}
if(reference_1L_int==0){
included_rprts_chr <- rprt_lup$rprt_nms_chr[rprt_lup$rprt_nms_chr != "AAA_SHARING_MTH"]
transform_paths_ls <- NULL
}else{
included_rprts_chr <- c("AAA_SUPLRY_ANLYS_MTH",paste0("AAA_TTU_MDL_CTG-",reference_1L_int))[min(2,reference_1L_int):2]
transform_paths_ls = list(fn = transform_paths_ls_for_scndry,
args_ls = list(reference_1L_int = reference_1L_int,
remove_prmry_1L_lgl = T,
remove_mkdn_1L_lgl = T))
paths_ls <- rlang::exec(transform_paths_ls$fn, paths_ls, !!!transform_paths_ls$args_ls)
}
params_ls <- list(dv_ds_nm_and_url_chr = dv_ds_nm_and_url_chr,
dv_mdl_desc_1L_chr = dv_mdl_desc_1L_chr,
inc_fl_types_chr = inc_fl_types_chr,
nbr_of_digits_1L_int = output_format_ls$supplementary_digits_1L_int,
output_type_1L_chr = output_format_ls$supplementary_outp_1L_chr,
rprt_lup = rprt_lup %>%
dplyr::filter(rprt_nms_chr %in% included_rprts_chr),
share_mdls_1L_lgl = (reference_1L_int==0),
subtitle_1L_chr = ready4::get_from_lup_obj(rprt_lup,
match_value_xx = "AAA_SHARING_MTH",
match_var_nm_1L_chr = "rprt_nms_chr",
target_var_nm_1L_chr = "title_chr",
evaluate_1L_lgl = F),
transform_paths_ls = transform_paths_ls,
use_fake_data_1L_lgl = use_fake_data_1L_lgl) %>%
append(path_params_ls[1:2])
params_ls %>%
ready4show::write_report(abstract_args_ls = abstract_args_ls,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
header_yaml_args_ls = header_yaml_args_ls,
options_chr = options_chr,
paths_ls = paths_ls,
rprt_lup = rprt_lup,
rprt_nm_1L_chr = "AAA_SHARING_MTH")
})
ready4::write_to_dv_with_wait(consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
dss_tb = tibble::tibble(ds_obj_nm_chr = "AAA_SHARING_MTH",
title_chr = rprt_lups_ls[[1]] %>%
ready4::get_from_lup_obj(match_value_xx = "AAA_SHARING_MTH",
match_var_nm_1L_chr = "rprt_nms_chr",
target_var_nm_1L_chr = "title_chr",
evaluate_1L_lgl = F)),
dv_nm_1L_chr = dv_ds_nm_and_url_chr[1],
ds_url_1L_chr = dv_ds_nm_and_url_chr[2],
inc_fl_types_chr = inc_fl_types_chr,
options_chr = options_chr,
parent_dv_dir_1L_chr = paths_ls$dv_dir_1L_chr,
paths_are_rltv_1L_lgl = F,
paths_to_dirs_chr = paths_ls$reports_dir_1L_chr)
return(dv_ds_nm_and_url_chr)
}
write_to_delete_ds_copies <- function(input_params_ls = NULL,
consent_1L_chr = "",
consent_indcs_int = 1L,
options_chr = c("Y", "N"),
paths_ls = NULL){
if(is.null(paths_ls))
paths_ls <- input_params_ls$path_params_ls$paths_ls
paths_to_outp_chr <- c(paste0(paths_ls$output_data_dir_1L_chr,"/I_ALL_OUTPUT_.RDS"))
secondary_refs_int <- NULL
if(!is.null(input_params_ls$scndry_anlys_params_ls)){
1:length(input_params_ls$scndry_anlys_params_ls)
paths_to_outp_chr <- c(paths_to_outp_chr,secondary_refs_int %>% purrr::map_chr(~here::here(paths_ls$path_from_top_level_1L_chr,
paths_ls$write_to_dir_nm_1L_chr,
paste0("secondary_",.x),
"Output","I_ALL_OUTPUT_.RDS")))
}
paths_to_outp_chr %>%
purrr::walk(~{
outp_smry_ls <- readRDS(.x)
write_to_delete_mdl_fls(outp_smry_ls,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
options_chr = options_chr)
outp_smry_ls$scored_data_tb <- NULL
ready4::write_with_consent(consented_fn = saveRDS,
prompt_1L_chr = paste0("Do you confirm that you want to write the file ",
.x,
"?"),
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
consented_args_ls = list(object = outp_smry_ls,
file = .x),
consented_msg_1L_chr = paste0("File ",
.x,
" has been written."),
declined_msg_1L_chr = "Write request cancelled - no new files have been written.",
options_chr = options_chr)
})
}
write_to_delete_mdl_fls <- function (outp_smry_ls,
consent_1L_chr = "",
consent_indcs_int = 1L,
options_chr = c("Y", "N")){
paths_to_mdls_chr <- outp_smry_ls$file_paths_chr[outp_smry_ls$file_paths_chr %>%
purrr::map_lgl(~endsWith(.x, ".RDS") & (startsWith(.x,
"A_Candidate_Mdls_Cmprsn") | startsWith(.x, "C_Predrs_Sngl_Mdl_Cmprsn") |
startsWith(.x, "D_Predr_Covars_Cmprsn") | startsWith(.x,
"E_Predrs_W_Covars_Sngl_Mdl_Cmprsn") | startsWith(.x,
"F_TS_Mdls")) & !endsWith(.x, "mdls_smry_tb.RDS"))]
consented_fn <- function(outp_smry_ls, paths_to_mdls_chr) {
paths_to_mdls_chr %>% purrr::walk(~unlink(paste0(outp_smry_ls$path_to_write_to_1L_chr,
"/", .x)))
}
ready4::write_with_consent(consented_fn = consented_fn,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
consented_args_ls = list(outp_smry_ls = outp_smry_ls,
paths_to_mdls_chr = paths_to_mdls_chr),
consented_msg_1L_chr = paste0("File",
ifelse(length(paths_to_mdls_chr) > 1,
paste0("s ",
ready4::make_list_phrase(paths_to_mdls_chr),
" have been deleted."),
paste0(" ", paths_to_mdls_chr,
" has been deleted."))),
declined_msg_1L_chr = "Write request cancelled - no new files have been written.",
options_chr = options_chr,
prompt_1L_chr = paste0("Do you confirm that you want to delete the file",
ifelse(length(paths_to_mdls_chr) > 1, paste0("s ",
ready4::make_list_phrase(paths_to_mdls_chr)),
paste0(" ", paths_to_mdls_chr)), "?"))
}
write_ts_mdl_plts <- function (brms_mdl, # Rename lngl
mdl_nm_1L_chr,
path_to_write_to_1L_chr,
tfd_data_tb,
args_ls = NULL,
consent_1L_chr = "",
consent_indcs_int = 1L,
depnt_var_desc_1L_chr = "Utility score",
depnt_var_nm_1L_chr = "utl_total_w",
height_dbl = c(rep(6, 2), rep(5,8)),
options_chr = c("Y", "N"),
predn_type_1L_chr = NULL,
round_var_nm_1L_chr = "round",
rsl_dbl = rep(300,10),
sd_dbl = NA_real_,
seed_1L_dbl = 23456,
sfx_1L_chr = " from table",
table_predn_mdl = NULL,
tfmn_1L_chr = "NTF",
units_1L_chr = "in",
utl_min_val_1L_dbl = -1,
width_dbl = c(rep(6, 2), rep(6, 8)))
{
set.seed(seed_1L_dbl)
tfd_data_tb <- transform_ds_for_all_cmprsn_plts(depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
is_brms_mdl_1L_lgl = inherits(brms_mdl,"brmsfit"),
model_mdl = brms_mdl,
predn_type_1L_chr = predn_type_1L_chr,
sd_dbl = NA_real_,
sfx_1L_chr = ifelse(inherits(brms_mdl,"brmsfit"),
" from brmsfit",
sfx_1L_chr),
tfd_data_tb = tfd_data_tb,
tfmn_1L_chr = tfmn_1L_chr,
utl_min_val_1L_dbl = utl_min_val_1L_dbl)
if(!is.null(table_predn_mdl)){
tfd_data_tb <- transform_ds_for_all_cmprsn_plts(depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
is_brms_mdl_1L_lgl = F,
model_mdl = table_predn_mdl,
predn_type_1L_chr = predn_type_1L_chr,
sd_dbl = sd_dbl,
sfx_1L_chr = ifelse(is.null(brms_mdl),
" from table",
sfx_1L_chr),
tfd_data_tb = tfd_data_tb,
tfmn_1L_chr = tfmn_1L_chr,
utl_min_val_1L_dbl = utl_min_val_1L_dbl)
}
plt_nms_chr <- paste0(mdl_nm_1L_chr, "_",
c("coefs", "hetg",
"dnst", "sctr_plt",
"sim_dnst", "sim_sctr",
"cnstrd_dnst","cnstrd_sctr_plt",
"cnstrd_sim_dnst", "cnstrd_sim_sctr"))
mdl_plts_paths_ls <- purrr::map(ifelse(inherits(brms_mdl,"brmsfit"),1,3):10, ~{
plt_fn <- fn_args_ls <- NULL
if (.x %in% c(1, 2)) {
plt <- plot(brms_mdl, ask = F, plot = F)
if (length(plt) >= .x) {
fn_args_ls <- list(brms_mdl = brms_mdl, idx_1L_int = as.integer(.x))
plt_fn <- function(brms_mdl, idx_1L_int) {
plot(brms_mdl, ask = F, plot = F)[idx_1L_int]
}
}
} else {
plot_fn_and_args_ls <- make_plot_fn_and_args_ls(args_ls = args_ls,
brms_mdl = NULL, # This is correct
depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
depnt_var_desc_1L_chr = depnt_var_desc_1L_chr,
predn_type_1L_chr = predn_type_1L_chr,
round_var_nm_1L_chr = round_var_nm_1L_chr,
sd_dbl = sd_dbl,
seed_1L_dbl = seed_1L_dbl,
sfx_1L_chr = ifelse(is.null(table_predn_mdl),
ifelse(inherits(brms_mdl,"brmsfit"),
" from brmsfit",
sfx_1L_chr),
ifelse(is.null(brms_mdl),
" from table",
sfx_1L_chr)),
table_predn_mdl = table_predn_mdl,
tfd_data_tb = tfd_data_tb,
tfmn_1L_chr = tfmn_1L_chr,
type_1L_chr = c("coefs", "hetg",
"dnst", "sctr_plt",
"sim_dnst", "sim_sctr",
"cnstrd_dnst","cnstrd_sctr_plt",
"cnstrd_sim_dnst", "cnstrd_sim_sctr")[.x])
plt_fn <- plot_fn_and_args_ls$plt_fn
fn_args_ls <- plot_fn_and_args_ls$fn_args_ls
}
ready4show::write_mdl_plt_fl(plt_fn,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
fn_args_ls = fn_args_ls,
height_1L_dbl = height_dbl[.x],
options_chr = options_chr,
path_to_write_to_1L_chr = path_to_write_to_1L_chr,
plt_nm_1L_chr = plt_nms_chr[.x],
rsl_1L_dbl = rsl_dbl[.x],
units_1L_chr = units_1L_chr,
width_1L_dbl = width_dbl[.x])
}) %>%
stats::setNames(plt_nms_chr[ifelse(inherits(brms_mdl,"brmsfit"),1,3):10]) %>%
purrr::discard(is.na)
return(mdl_plts_paths_ls)
}
write_ts_mdls <- function (data_tb,
mdl_types_lup,
mdl_nms_ls,
mdl_smry_dir_1L_chr,
predictors_lup,
predr_vars_nms_ls,
backend_1L_chr = getOption("brms.backend", "rstan"),
consent_1L_chr = "",
consent_indcs_int = 1L,
control_ls = NULL,
cores_1L_int = 1L,
depnt_var_min_val_1L_dbl = numeric(0),
depnt_var_nm_1L_chr = "utl_total_w",
id_var_nm_1L_chr = "fkClientID",
iters_1L_int = 4000L,
options_chr = c("Y", "N"),
prior_ls = NULL,
round_var_nm_1L_chr = "round",
round_bl_val_1L_chr = "Baseline",
seed_1L_int = 1000L,
utl_min_val_1L_dbl = -1){
if (!dir.exists(mdl_smry_dir_1L_chr))
dir.create(mdl_smry_dir_1L_chr)
args_ls <- list(backend_1L_chr = backend_1L_chr,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
control_ls = control_ls,
data_tb = data_tb,
mdl_nms_ls = mdl_nms_ls,
mdl_smry_dir_1L_chr = mdl_smry_dir_1L_chr,
mdl_types_lup = mdl_types_lup,
predictors_lup = predictors_lup,
predr_vars_nms_ls = predr_vars_nms_ls,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
depnt_var_nm_1L_chr = depnt_var_nm_1L_chr,
id_var_nm_1L_chr = id_var_nm_1L_chr,
iters_1L_int = iters_1L_int,
options_chr = options_chr,
prior_ls = prior_ls,
round_var_nm_1L_chr = round_var_nm_1L_chr,
round_bl_val_1L_chr = round_bl_val_1L_chr,
seed_1L_int = seed_1L_int,
utl_min_val_1L_dbl = utl_min_val_1L_dbl)
if(cores_1L_int>1){
threaded_ls <- parallel::mclapply(1:length(mdl_nms_ls),
function(idx_1L_int, args_ls){rlang::exec(make_inner_loop_mdl_smry, idx_1L_int , !!!args_ls)},
args_ls,
mc.cores = cores_1L_int)
mdls_smry_tb <- threaded_ls %>% purrr::map_dfr(~.x)
}else{
mdls_smry_tb <- purrr::map_dfr(1:length(mdl_nms_ls), ~{
rlang::exec(make_inner_loop_mdl_smry, .x, !!!args_ls)
})
}
ready4::write_with_consent(consented_fn = saveRDS,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
consented_args_ls = list(object = mdls_smry_tb,
file = paste0(mdl_smry_dir_1L_chr, "/mdls_smry_tb.RDS")),
consented_msg_1L_chr = paste0("File ",
paste0(mdl_smry_dir_1L_chr, "/mdls_smry_tb.RDS"),
" has been written"),
declined_msg_1L_chr = "Write request cancelled - no new files have been written.",
options_chr = options_chr,
prompt_1L_chr = paste0("Do you confirm that you want to write the file ",
paste0(mdl_smry_dir_1L_chr, "/mdls_smry_tb.RDS"),
"?"))
return(mdls_smry_tb)
}
write_ts_mdls_from_alg_outp <- function (outp_smry_ls, # rename lngl
predictors_lup,
backend_1L_chr = getOption("brms.backend", "rstan"),
combinations_1L_lgl = F,
consent_1L_chr = "",
consent_indcs_int = 1L,
control_ls = NULL,
cores_1L_int = 1L,
depnt_var_min_val_1L_dbl = numeric(0),
existing_predrs_ls = NULL,
iters_1L_int = 4000L,
max_nbr_of_covars_1L_int = integer(0),
new_dir_nm_1L_chr = "F_TS_Mdls",
options_chr = c("Y", "N"),
path_to_write_to_1L_chr = NA_character_,
prior_ls = NULL,
utl_min_val_1L_dbl = -1){
if(is.na(path_to_write_to_1L_chr))
path_to_write_to_1L_chr <- outp_smry_ls$path_to_write_to_1L_chr %>%
stringr::str_sub(end=-8)
output_dir_1L_chr <- write_new_outp_dir(path_to_write_to_1L_chr,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
new_dir_nm_1L_chr = new_dir_nm_1L_chr,
options_chr = options_chr)
outp_smry_ls$predr_vars_nms_ls <- make_predr_vars_nms_ls(main_predrs_chr = outp_smry_ls$predr_cmprsn_tb$predr_chr,
covars_ls = list(outp_smry_ls$prefd_covars_chr),
combinations_1L_lgl = combinations_1L_lgl,
existing_predrs_ls = existing_predrs_ls,
max_nbr_of_covars_1L_int = max_nbr_of_covars_1L_int)
outp_smry_ls$mdl_nms_ls <- make_mdl_nms_ls(outp_smry_ls$predr_vars_nms_ls,
mdl_types_chr = outp_smry_ls$prefd_mdl_types_chr)
mdls_smry_tb <- write_ts_mdls(backend_1L_chr = backend_1L_chr,
consent_1L_chr = consent_1L_chr,
consent_indcs_int = consent_indcs_int,
control_ls = control_ls,
cores_1L_int = cores_1L_int,
data_tb = outp_smry_ls$scored_data_tb,
depnt_var_min_val_1L_dbl = depnt_var_min_val_1L_dbl,
depnt_var_nm_1L_chr = outp_smry_ls$depnt_var_nm_1L_chr, predr_vars_nms_ls = outp_smry_ls$predr_vars_nms_ls,
id_var_nm_1L_chr = outp_smry_ls$id_var_nm_1L_chr,
iters_1L_int = iters_1L_int,
round_var_nm_1L_chr = outp_smry_ls$round_var_nm_1L_chr,
mdl_nms_ls = outp_smry_ls$mdl_nms_ls,
mdl_smry_dir_1L_chr = output_dir_1L_chr,
mdl_types_lup = outp_smry_ls$mdl_types_lup,
options_chr = options_chr,
predictors_lup = predictors_lup,
prior_ls = prior_ls,
round_bl_val_1L_chr = outp_smry_ls$round_bl_val_1L_chr,
seed_1L_int = outp_smry_ls$seed_1L_int,
utl_min_val_1L_dbl = utl_min_val_1L_dbl)
outp_smry_ls$mdls_smry_tb <- mdls_smry_tb
outp_smry_ls$utl_min_val_1L_dbl <- utl_min_val_1L_dbl
outp_smry_ls$file_paths_chr <- list.files(outp_smry_ls$path_to_write_to_1L_chr, recursive = T)
outp_smry_ls$combinations_1L_lgl <- combinations_1L_lgl
outp_smry_ls$max_nbr_of_covars_1L_int <- max_nbr_of_covars_1L_int
return(outp_smry_ls)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.