** Verificar a necessidade de instalação dos pacotes abaixo:
# install.packages("BSDA")
# install.packages("statsr")
# install.packages("dplyr")
# install.packages("ggplot2")
A estimativa de intervalo da média da população pode ser calculada a partir das funções dos seguintes pacotes R:
stats - contém a função t.testTeachingDemos - contém a função z.testBSDA - contém o zsum.test e tsum.testA t.test do pacote de stats é o teste do t student, é utilizado quando dataset é dado. O mesmo caso para z.test, mas essa função é especificamente para o teste z de desvio padrão conhecido da população. Quando o conjunto de dados não é fornecido e apenas as estatísticas de resumo (média e desvio padrão) são apresentadas, as funções apropriadas são zsum.test ou tsum.test. Observe que t.test e tsum.test são funções do mesmo teste estatístico, bem como z.test e zsum.test. Considere o exemplo abaixo:
As pontuações de uma avaliação de 33 estudantes aleatórios da Faculdade de Ciências e Matemática foram registradas: 84, 93, 101, 86, 82, 86, 88, 94, 89, 94, 93, 83 , 95, 86, 94, 87, 91, 96, 89, 79, 99, 98, 81, 80, 88, 100, 90, 100, 81, 98, 87, 95 e 94. A população dessas pontuações é acredita-se que seja normalmente distribuído com desvio padrão de 6,8. Determine e interprete o intervalo de confiança de 95% e 99% da média da população.
A partir dos dados, obtemos as seguintes informações:
z.test, isto é:scores <- c(84, 93, 101, 86, 82, 86, 88, 94, 89, 94, 93, 83, 95, 86, 94, 87,
91, 96, 89, 79, 99, 98, 81, 80, 88, 100, 90, 100, 81, 98, 87, 95, 94)
# Para 95% de confiança
BSDA::z.test(scores, sigma.x = 6.8)
##
## One-sample z-Test
##
## data: scores
## z = 76.313, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## 88.01327 92.65340
## sample estimates:
## mean of x
## 90.33333
BSDA::z.test(scores, sigma.x = 6.8, conf.level = 0.99)
##
## One-sample z-Test
##
## data: scores
## z = 76.313, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 99 percent confidence interval:
## 87.28425 93.38241
## sample estimates:
## mean of x
## 90.33333
Da interpretação: Estamos 95% confiantes de que a média real de todas as pontuações na avaliação está entre \(88.01327\) e \(92.65340\). E estamos 99% confiantes de que a média real de todas as pontuações está entre \(87.28425\) e \(93.38241\).
Além do intervalo de confiança, a função retorna também as estatísticas z computadas com valor p e também a estimativa pontual da média.
Para o Exemplo 2, os seguintes dados (341, 345, 338, 339, 340, 343, 341, 343, 341, 328, 343, 347, 337, 348 e 339) são amostras aleatórias da população normalmente distribuída. Vamos calcular e interpretar o intervalo de confiança de 90%.
O teste apropriado para isso é o teste t, pois o tamanho da amostra é pequeno, n < 30, e a variação populacional é desconhecida. E assim,
data <- c(41, 345, 338, 339, 340, 343, 341, 343,
341, 328, 343, 347, 337, 348, 339)
stats::t.test(data, conf.level = 0.9)
##
## One Sample t-test
##
## data: data
## t = 16.021, df = 14, p-value = 2.123e-10
## alternative hypothesis: true mean is not equal to 0
## 90 percent confidence interval:
## 285.5911 356.1423
## sample estimates:
## mean of x
## 320.8667
stats::t.test(data, conf.level = 0.9)$conf.int
## [1] 285.5911 356.1423
## attr(,"conf.level")
## [1] 0.9
Da interpretação, temos 90% de confiança de que a média real da população dos dados fornecidos acima está entre \(285.5911\) e \(356.1423\).
Exemplo 3: Um estatístico pegou uma amostra aleatória de 49 pacientes de uma lista de todos os pacientes já admitidos no hospital dentro de um período de três meses e o número de medicamentos prescritos por admissão foi determinado para cada um. A droga média por caso foi de 7,5, com desvio padrão de 2,5. Calcule e interprete o intervalo de confiança de 95% para a média real de todos os pacientes já admitidos no hospital.
Neste exemplo, nenhum conjunto de dados é fornecido, mas temos a média calculada é 7,5 desse conjunto de dados, desvio padrão igual a 2,5 e tamanho da amostra igual a 49. Portanto, para calcular a estimativa de intervalo da média da população, ustilizamoss o zsum.test.
BSDA::zsum.test(mean.x = 7.5, sigma.x = 2.5, n.x = 49)$conf.int
## [1] 6.800013 8.199987
## attr(,"conf.level")
## [1] 0.95
Considerando dados imobiliários da cidade de Ames, Iowa, onde os detalhes de cada transação imobiliária na Ames são registrados pelo escritório da cidade.
Nosso foco particular neste laboratório será todas as vendas de residências em Ames entre 2006 e 2010. Esta coleção representa nossa população de interesse. E, queremos aprender sobre essas vendas de imóveis coletando amostras menores de toda a população. Para isso, vVamos carregar os dados!
library(statsr)
library(dplyr)
library(ggplot2)
data(ames)
View(ames)
Nesta prática, começaremos com uma amostra aleatória simples de tamanho 60 da população. Observe que o conjunto de dados tem informações sobre muitas variáveis de alojamento, mas para a primeira parte do laboratório, focaremos no tamanho da casa, representado pela variável area.
amostra <- dplyr::sample_n(ames, 60)
De iniício, não podemos esquecer a análise descritiva, que pode ser realizada através da manipulação e sumarização de dados.
amostra %>%
summarise(x_barra = mean(area), s_dp = sd(area),
med_ams = median(area),
min_ams = min(area), max_samp = max(area),
iqr_ams = IQR(area), # intervalo inter quantilico
q1_ams = quantile(area, 0.25),
q3_ams = quantile(area, 0.75))
## # A tibble: 1 x 8
## x_barra s_dp med_ams min_ams max_samp iqr_ams q1_ams q3_ams
## <dbl> <dbl> <dbl> <int> <int> <dbl> <dbl> <dbl>
## 1 1491. 548. 1435 438 3078 752. 1024. 1776
breaks <- pretty(range(amostra$area), n = nclass.FD(amostra$area), min.n = 1)
bwidth <- breaks[2] - breaks[1]
amostra %>% ggplot(aes(x = area)) +
geom_histogram(binwidth = bwidth, col = "black")
k <- 1 + 3.322 * log10(60)
k <- ceiling(k)
amostra %>% ggplot(aes(x = area)) +
geom_histogram(bins = k, col = "black")
Lembrando que a distribuição deve ser semelhante às distribuições de outras pessoas que também coletam amostras aleatórias dessa população, mas provavelmente não é exatamente o mesmo, pois é uma amostra aleatória.
com base nesta amostra, o que podemos inferir sobre a população???
Baseado apenas nessa amostra única, a melhor estimativa da área habitável média das casas vendidas em Ames seria a média da amostra, geralmente indicada como \(\overline{x}\) (aqui chamamos x_barra). Isso serve como uma boa estimativa pontual, mas seria útil também comunicar quão incertos somos dessa estimativa. Essa incerteza pode ser quantificada usando um intervalo de confiança.
Como sabemos que o tamanho da amostra é 60, portanto, o único componente básico restante é encontrar o valor crítico apropriado para um determinado nível de confiança. Podemos usar a função qnorm para esta tarefa, que fornecerá o valor crítico associado a um determinado percentil na distribuição normal. Lembre-se de que níveis e percentis de confiança não são equivalentes. Por exemplo, um nível de confiança de 95% refere-se aos 95% do meio da distribuição, e o valor crítico associado a esta área corresponderá ao percentil 97,5.
Podemos encontrar o valor crítico para um intervalo de confiança de 95% usando:
z_star_95 <- qnorm(0.975)
z_star_95
## [1] 1.959964
que é aproximadamente igual ao valor crítico de 1,96 que você provavelmente já conhece.
Vamos finalmente calcular o intervalo de confiança:
amostra %>%
dplyr::summarise(lower = mean(area) - z_star_95 * (sd(area) / sqrt(60)),
upper = mean(area) + z_star_95 * (sd(area) / sqrt(60)))
## # A tibble: 1 x 2
## lower upper
## <dbl> <dbl>
## 1 1352. 1629.
Mesmo que não saibamos como é a população total, temos 95% de confiança de que o verdadeiro tamanho médio das casas em Ames se situa entre os valores inferior e superior.
E, existem algumas condições que devem ser atendidas para que esse intervalo seja válido.
Nesse caso, temos a vantgem de saber a verdadeira média da população, pois temos dados de toda a população. Vamos calcular esse valor para que possamos determinar se nossos intervalos de confiança realmente o capturam. Vamos armazená-lo em um quadro de dados chamado params (abreviação de parâmetros de população) e denominá-lo mi.
params <- ames %>%
dplyr::summarise(mi = mean(area))
params$mi
## [1] 1499.69
amostra %>%
dplyr::summarise(lower = mean(area) - z_star_95 * (sd(area) / sqrt(60)),
upper = mean(area) + z_star_95 * (sd(area) / sqrt(60)))
## # A tibble: 1 x 2
## lower upper
## <dbl> <dbl>
## 1 1352. 1629.
vamos coletar muitas amostras para saber mais sobre como as médias e os intervalos de confiança variam de uma amostra para outra.
ci <- ames %>%
statsr::rep_sample_n(size = 60, reps = 50, replace = TRUE) %>%
dplyr::summarise(lower = mean(area) - z_star_95 * (sd(area) / sqrt(60)),
upper = mean(area) + z_star_95 * (sd(area) / sqrt(60)))
Em seguida, criaremos um gráfico para comparação, onde o primeiro passo será criar uma nova variável no quadro de dados ci que indique se o intervalo captura ou não a média real da população. Observe que capturar esse valor significaria que o limite inferior do intervalo de confiança está abaixo do valor e o limite superior do intervalo de confiança está acima do valor. Lembre-se de que criamos novas variáveis sando a função mutate.
ci <- ci %>%
mutate(capture_mi = ifelse(lower < params$mi & upper > params$mi, "yes", "no"))
ci_data <- data.frame(ci_id = c(1:50, 1:50),
ci_bounds = c(ci$lower, ci$upper),
capture_mu = c(ci$capture_mi, ci$capture_mi))
ggplot(data = ci_data, aes(x = ci_bounds, y = ci_id,
group = ci_id, color = capture_mu)) +
geom_point(size = 2) +
geom_line() +
geom_vline(xintercept = params$mu, color = "darkgray")
Graficamente, podemos ver que \(48/50 = 0,96\) dos intervalos de confiança incluem a verdadeira média da população.