@@ -13,7 +13,7 @@ seed <- 6384
1313set.seed(seed ) # set seed for reproducibility
1414runname <- " April10_fullsimulation" # set a runname
1515parametrization <- " mundlak" # set the parametrization (mundlak or centeredX)
16- dir.create(paste0(" simulation_results /" , runname ), showWarnings = FALSE ) # create a directory
16+ dir.create(paste0(" output /" , runname ), showWarnings = FALSE ) # create a directory
1717
1818# load libraries
1919library(lme4 ) # for generalized linear mixed models
@@ -34,8 +34,7 @@ source("scripts/helper-functions/result-formatting.R")
3434# set the number of simulations
3535nsim <- 1000
3636
37- # In the study, these simulations were run in two parts
38- # Part 1: DGM 2, 3 and 4
37+ # Simulation Part 1: DGM 2, 3 and 4
3938design <- expand.grid(N_total = c(100 , 200 ), T_total = c(5 , 10 , 20 ),
4039 predictor.type = c(" binary" , " continuous" ),
4140 outcome.type = c(" binary" , " continuous" ),
@@ -48,25 +47,15 @@ design <- design[!(design$sdX.between == 0 & design$g.01 != 0),]
4847# remove scenarios with predictor and outcome type continuous
4948design <- design [! (design $ predictor.type == " continuous" & design $ outcome.type == " continuous" ),]
5049
51- # Part 2: DGM 1 (continuous predictor and outcome)
52- # design <- expand.grid(N_total = c(100, 200), T_total = c(5, 10, 20),
53- # predictor.type = "continuous", outcome.type = "continuous",
54- # sdX.within = 1, sdX.between = c(0, 1, 3),
55- # g.00 = 0, g.01 = c(0, 1, 3), g.10 = 1.5,
56- # sd.u0 = c(0, 1, 3), sd.u1 = 0, sd.e = 1,
57- # true_cluster_means = FALSE)
58- # # remove scenarios with sdX.between == 0 and g.01 != 0
59- # design <- design[!(design$sdX.between == 0 & design$g.01 != 0),]
60-
6150# save the empty design and settings to the directory
6251settings <- list (nsim = nsim , seed = seed , runname = runname , parametrization = parametrization , design = design )
63- saveRDS(settings , paste0(" simulation_results /" , runname , " /settings.RDS" ))
52+ saveRDS(settings , paste0(" output /" , runname , " /settings.RDS" ))
6453
6554# ## Simulation ---------------------------------------------------------------
6655
6756# Open a connection to capture output and messages
68- output_conn <- file(paste0(" simulation_results /" , runname , " /log.txt" ), open = " a" )
69- message_conn <- file(paste0(" simulation_results /" , runname , " /log.txt" ), open = " a" )
57+ output_conn <- file(paste0(" output /" , runname , " /log.txt" ), open = " a" )
58+ message_conn <- file(paste0(" output /" , runname , " /log.txt" ), open = " a" )
7059
7160# Redirect output and messages to the file
7261sink(output_conn , type = " output" )
@@ -111,7 +100,7 @@ for (idesign in 1:nrow(design)) {
111100 models <- glmm_model_fitting(data , outcome.type = outcome.type )
112101 return (models )
113102 }
114- saveRDS(parallel_results , file = paste0(" simulation_results /" , runname , " /" , idesign , " .RDS" ))
103+ saveRDS(parallel_results , file = paste0(" output /" , runname , " /" , idesign , " .RDS" ))
115104}
116105
117106# Stop capturing output and messages
@@ -127,8 +116,8 @@ close(message_conn)
127116if (FALSE ) {
128117 # runname <- "April10_fullsimulation"
129118 runname <- " April17_fullsimulation_contXY"
130- design <- readRDS(paste0(" simulation_results /" , runname , " /settings.RDS" ))$ design
131- parametrization <- readRDS(paste0(" simulation_results /" , runname , " /settings.RDS" ))$ parametrization
119+ design <- readRDS(paste0(" output /" , runname , " /settings.RDS" ))$ design
120+ parametrization <- readRDS(paste0(" output /" , runname , " /settings.RDS" ))$ parametrization
132121}
133122
134123# load packages
@@ -192,7 +181,7 @@ for (idesign in 1:nrow(design_all)) {
192181 }
193182
194183 # read in the results
195- parallel_results_setting <- readRDS(paste0(" simulation_results /" , runname , " /" , idesign , " .RDS" ))
184+ parallel_results_setting <- readRDS(paste0(" output /" , runname , " /" , idesign , " .RDS" ))
196185
197186 # unlist the lists inside the list
198187 df <- map_dfr(parallel_results_setting , function (rep ) {
@@ -329,7 +318,7 @@ design_all_reordered <- design_all %>%
329318 g.independence4_success , g.exchangeable4_success , g.ar14_success )
330319
331320# save design
332- saveRDS(design_all_reordered , paste0(" simulation_results /" , runname , " /summary-results-all.RDS" ))
321+ saveRDS(design_all_reordered , paste0(" output /" , runname , " /summary-results-all.RDS" ))
333322
334323# create a rounded version of the design
335324design_all_rounded <- design_all_reordered %> %
@@ -339,24 +328,24 @@ design_all_rounded <- design_all_reordered %>%
339328 across(ends_with(" success" ), ~ round(. , 3 )))
340329
341330# save design
342- saveRDS(design_all_rounded , paste0(" simulation_results /" , runname , " /summary-results-all-rounded.RDS" ))
331+ saveRDS(design_all_rounded , paste0(" output /" , runname , " /summary-results-all-rounded.RDS" ))
343332
344333# remove all bias columns
345334design_absolute <- design_all_rounded %> %
346335 select(- contains(" g.10_bias" ), - contains(" g.01_bias" ))
347336
348337# save design
349- saveRDS(design_absolute , paste0(" simulation_results /" , runname , " /summary-results-absolute.RDS" ))
350- write.csv(design_absolute , paste0(" simulation_results /" , runname , " /summary-results-absolute.csv" ), row.names = FALSE )
338+ saveRDS(design_absolute , paste0(" output /" , runname , " /summary-results-absolute.RDS" ))
339+ write.csv(design_absolute , paste0(" output /" , runname , " /summary-results-absolute.csv" ), row.names = FALSE )
351340
352341# remove absolute value columns
353342design_bias <- design_all_rounded %> %
354343 # if endswith X, X.cent, X.cluster.means, remove
355344 select(- ends_with(" X" , ignore.case = FALSE ), - ends_with(" X.cent" , ignore.case = FALSE ), - ends_with(" X.cluster.means" , ignore.case = FALSE ))
356345
357346# save design
358- saveRDS(design_bias , paste0(" simulation_results /" , runname , " /summary-results-bias.RDS" ))
359- write.csv(design_bias , paste0(" simulation_results /" , runname , " /summary-results-bias.csv" ), row.names = FALSE )
347+ saveRDS(design_bias , paste0(" output /" , runname , " /summary-results-bias.RDS" ))
348+ write.csv(design_bias , paste0(" output /" , runname , " /summary-results-bias.csv" ), row.names = FALSE )
360349
361350# create separate versions containing the within-person and contextual effect
362351design_bias_g01 <- design_bias %> %
@@ -365,16 +354,16 @@ design_bias_g10 <- design_bias %>%
365354 select(- contains(" g.01_bias" ))
366355
367356# save design
368- saveRDS(design_bias_g01 , paste0(" simulation_results /" , runname , " /summary-results-bias-g01.RDS" ))
369- write.csv(design_bias_g01 , paste0(" simulation_results /" , runname , " /summary-results-bias-g01.csv" ), row.names = FALSE )
370- saveRDS(design_bias_g10 , paste0(" simulation_results /" , runname , " /summary-results-bias-g10.RDS" ))
371- write.csv(design_bias_g10 , paste0(" simulation_results /" , runname , " /summary-results-bias-g10.csv" ), row.names = FALSE )
357+ saveRDS(design_bias_g01 , paste0(" output /" , runname , " /summary-results-bias-g01.RDS" ))
358+ write.csv(design_bias_g01 , paste0(" output /" , runname , " /summary-results-bias-g01.csv" ), row.names = FALSE )
359+ saveRDS(design_bias_g10 , paste0(" output /" , runname , " /summary-results-bias-g10.RDS" ))
360+ write.csv(design_bias_g10 , paste0(" output /" , runname , " /summary-results-bias-g10.csv" ), row.names = FALSE )
372361
373362# save sucess rates
374363design_success <- design_all_rounded %> %
375364 select(c(N_total , T_total , predictor.type , outcome.type , sdX.within , sdX.between ,
376365 g.00 , g.01 , g.10 , sd.u0 , sd.u1 , sd.e , true_cluster_means , contains(" success" )))
377366
378367# save design
379- saveRDS(design_success , paste0(" simulation_results /" , runname , " /summary-results-success.RDS" ))
380- write.csv(design_success , paste0(" simulation_results /" , runname , " /summary-results-success.csv" ), row.names = FALSE )
368+ saveRDS(design_success , paste0(" output /" , runname , " /summary-results-success.RDS" ))
369+ write.csv(design_success , paste0(" output /" , runname , " /summary-results-success.csv" ), row.names = FALSE )
0 commit comments