Introdução

Neste experimento, estudamos empiricamente a distribuição da estatística média amostral a partir de uma população que segue uma distribuição Normal \(\mathcal{N}(10, 2)\). Para isso, simulamos 1000 amostras para diferentes tamanhos \(n = 20, 50, 100, 200, 500\). Para cada amostra, calculamos a média e analisamos a distribuição dessas 1000 médias.

Como a população é Normal, a teoria nos garante que a distribuição da média amostral também será Normal, com:

\[ \bar{X} \sim \mathcal{N}\left(10, \frac{2}{n} \right) \]

Simulação das Amostras

set.seed(123)
mu <- 10
sigma2 <- 2
sigma <- sqrt(sigma2)
ns <- c(20, 50, 100, 200, 500)
B <- 1000

simular_medias <- function(n) {
  replicate(B, mean(rnorm(n, mean = mu, sd = sigma)))
}

medias_df <- lapply(ns, function(n) {
  data.frame(media = simular_medias(n), n = factor(n))
}) %>% bind_rows()

Histogramas com Densidade Teórica Corrigida

densidades_df <- lapply(ns, function(n_val) {
  x_seq <- seq(
    min(medias_df$media[medias_df$n == n_val]),
    max(medias_df$media[medias_df$n == n_val]),
    length.out = 100
  )
  data.frame(
    n = factor(n_val),
    x = x_seq,
    dens = dnorm(x_seq, mean = mu, sd = sqrt(sigma2 / n_val))
  )
}) %>% bind_rows()


ggplot(medias_df, aes(x = media)) +
  geom_histogram(aes(y = after_stat(density)), bins = 30, fill = "lightblue", color = "black") +
  geom_line(data = densidades_df, aes(x = x, y = dens), color = "red", linewidth = 1) +
  geom_vline(xintercept = mu, linetype = "dashed", color = "darkgreen") +
  facet_wrap(~n, scales = "free", labeller = label_both) +
  labs(
    title = "Distribuição das Médias Amostrais com Densidade Teórica",
    x = "Média Amostral",
    y = "Densidade"
  ) +
  theme_minimal()

Estatísticas Descritivas

medias_df %>%
  group_by(n) %>%
  summarise(
    Média = mean(media),
    Desvio_Padrão = sd(media),
    Assimetria = skewness(media),
    Curtose = kurtosis(media)
  )
## # A tibble: 5 × 5
##   n     Média Desvio_Padrão Assimetria Curtose
##   <fct> <dbl>         <dbl>      <dbl>   <dbl>
## 1 20     9.99        0.311     -0.0473    2.99
## 2 50    10.0         0.187     -0.0109    2.97
## 3 100   10.0         0.140     -0.0752    3.09
## 4 200   10.0         0.100     -0.0842    2.85
## 5 500   10.0         0.0627     0.108     2.91

Teste de Normalidade (Shapiro-Wilk)

medias_df %>%
  group_by(n) %>%
  summarise(p_valor_Shapiro = shapiro.test(media)$p.value)
## # A tibble: 5 × 2
##   n     p_valor_Shapiro
##   <fct>           <dbl>
## 1 20              0.381
## 2 50              0.976
## 3 100             0.568
## 4 200             0.443
## 5 500             0.457

Teste de Normalidade (Anderson-Darling)

medias_df %>%
  group_by(n) %>%
  summarise(p_valor_AD = ad.test(media)$p.value)
## # A tibble: 5 × 2
##   n     p_valor_AD
##   <fct>      <dbl>
## 1 20         0.964
## 2 50         0.956
## 3 100        0.353
## 4 200        0.918
## 5 500        0.551

Conclusão