Last active
June 11, 2017 04:02
-
-
Save GuiMarthe/d29f87f14351585519f5986cdd917c7a to your computer and use it in GitHub Desktop.
Um simples script que cria 300 variáveis normais de 100 pares de média e variância distintas e calcula suas médias e intervalos de confiança por meio do bootstrap e ainda calcula a proporção de vezes que a verdadeira média esta no intervalo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
library(tidyverse) | |
### criando 300 váriáveis normais para 20 diferentes | |
### pares de média e variância distintos | |
set.seed(42) | |
df <- tibble( | |
grupo = purrr::map_chr(1:100, ~paste('grupo_', ., sep = '')), | |
true_mean = runif(100), | |
true_variance = runif(100), | |
data = purrr::map2(true_mean, true_variance, rnorm, n = 300) | |
) %>% | |
unnest(obs = data) | |
## a função que calcula o intervalo de bootstrap para a média | |
## baseada na documentação do broom e no método delta de bootstrap | |
empirical_boot_mean <- function(tb, column, n=1e3) { | |
alpha = 0.05 | |
group_mean <- mean(tb[[column]]) | |
df <- tb %>% | |
broom::bootstrap(n) %>% | |
do(data_frame(boot_mean = mean(.[[column]]))) %>% | |
mutate(delta = boot_mean - group_mean) %>% | |
ungroup() %>% | |
summarise( | |
lowci = group_mean + quantile(delta, alpha), | |
highci = group_mean + quantile(delta, 1 - alpha), | |
mean_boot = group_mean | |
) | |
df | |
} | |
## calculando os intervalos de confiança por grupo de média e variância | |
dfResult <- | |
df %>% | |
group_by(grupo, true_mean, true_variance) %>% | |
nest() %>% | |
mutate(boot_interval = purrr::map(data, .f = ~empirical_boot_mean(.,'obs', n = 400))) %>% | |
unnest(boot_interval) %>% | |
select(-data) | |
## calculando a proporção de vezes que a verdadeira média | |
## esta dentro do intervalo de confiança | |
dfResult %>% | |
mutate(in_interval = true_mean > lowci & true_mean < highci) %>% | |
summarise(prop = sum(in_interval)/n()) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment