-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsimPar.R
63 lines (49 loc) · 1.21 KB
/
simPar.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
library(parallel)
simParModels <- function(n, k, y.mean, y.sd, max.effect, nsims, cores = 4) {
## n <- 1000
## k <- 4
## y.mean <- 14
## y.sd <- 6
## max.effect <- 2
## cores <- 4
## nsims <- 100
sims <- mclapply(
1:nsims,
function(i) simExpotypeData(n, k, y.mean, y.sd, max.effect),
mc.cores = cores
)
sims_data <- map(sims, ~ .$data)
sims_betas <- map_dfr(sims, ~ c(betaA = y.mean, .$betas), .id = "dataset")
models <- map(sims_data, ~ lm(y ~ expotype, .))
model_summaries <- map_df(models, tidy, .id = "dataset") %>%
mutate(
n = n,
k = k,
max_effect = max.effect,
)
p_values <- map_dbl(models, ~ glance(.)$p.value)
model_pvalues <- tibble(
dataset = 1:nsims,
p_value = p_values,
n = n, k = k, max_effect = max.effect
)
list(
pvalues = model_pvalues,
coef_estimates = model_summaries,
coef_true = sims_betas
)
}
param_grid <- expand.grid(
k = 5:8,
max_effect = seq(0.5, 2.5, by = 0.05)
) %>%
as_tibble()
t <- Sys.time()
homocysteine_sims <- mcmapply(
function(.x, .y) simModels(1000, .x, 14, 6, max.effect = .y, n.sims = 1000),
param_grid$k,
param_grid$max_effect,
mc.cores = 6,
SIMPLIFY = FALSE
)
Sys.time() - t