From d7264228c3c80a69a3a480d43079c1c369f71bf0 Mon Sep 17 00:00:00 2001 From: Walmes Zeviani <walmes@ufpr.br> Date: Wed, 17 Oct 2018 18:59:50 -0300 Subject: [PATCH] =?UTF-8?q?Adiciona=20script=20com=20dicas=20para=20estudo?= =?UTF-8?q?s=20de=20simula=C3=A7=C3=A3o.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/ce089-09.R | 71 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 scripts/ce089-09.R diff --git a/scripts/ce089-09.R b/scripts/ce089-09.R new file mode 100644 index 0000000..6e680d5 --- /dev/null +++ b/scripts/ce089-09.R @@ -0,0 +1,71 @@ +#======================================================================= +# Formas eficientes para fazer estudos de simulação/reamostragem. + +#----------------------------------------------------------------------- +# Cria a função com lista de todos os argumentos e use mapply(). + +library(microbenchmark) + +# Curva de poder. +power_k_groups <- function(k = 3, + r = 4, + sigma_group = 0.01, + simulations = 50, + alpha = 0.05) { + trt <- gl(n = k, k = r) + X <- model.matrix(~0 + trt) + results <- replicate(simulations, { + b <- rnorm(k, mean = 0, sigma_group) + y <- rnorm(k * r, mean = X %*% b, sd = 1) + anova(lm(y ~ X))[1, 5] + }) + mean(results <= alpha) +} + +# Criar o grid de condições (prototipar com um grid pequeno). +grid <- expand.grid(k = 3:5, + r = c(3, 5, 8), + sigma_group = seq(0.01, 0.5, length.out = 10), + KEEP.OUT.ATTRS = FALSE) +nrow(grid) + +# Aplicar. +grid$taxa <- mapply(FUN = power_k_groups, + k = grid$k, + r = grid$r, + sigma_group = grid$sigma_group, + MoreArgs = list(simulations = 10, + alpha = 0.05), + SIMPLIFY = TRUE) + +#----------------------------------------------------------------------- +# Usando purrr. + +library(purrr) + +grid$taxa <- pmap_dbl(.l = grid, + .f = power_k_groups, + simulations = 10, + alpha = 0.05) + +#----------------------------------------------------------------------- + +library(microbenchmark) + +microbenchmark( + mapply = { + mapply(FUN = power_k_groups, + k = grid$k, + r = grid$r, + sigma_group = grid$sigma_group, + MoreArgs = list(simulations = 10, + alpha = 0.05), + SIMPLIFY = TRUE) + }, + pmap = { + pmap_dbl(.l = grid, + .f = power_k_groups, + simulations = 10, + alpha = 0.05) + }, + replications = 20) -- GitLab