Capítulo 12 Intervalos de confiança

12.1 Vídeo 1

12.2 Intervalos de confiança para a proporção

12.2.1 Exemplo: quem posta no FB diariamente?

Teoria

  • Uma pesquisa com uma amostra aleatória de \(156\) jovens descobriu que \(48\) deles postam no FB todo dia.

  • Qual a proporção amostral de jovens que postam no FB diariamente?

    p_chapeu <- 48/156
    p_chapeu
    ## [1] 0,3076923

    A resposta é \(\hat p = 0{,}31\), ou \(31\%\).

    Perceba que é costume chamar a proporção amostral de \(\hat p\).

  • Isto quer dizer que a proporção populacional é \(0{,}31\)? Não necessariamente, mas esta parece ser uma boa estimativa.

  • Existe uma margem de erro. Como computá-la? Usando o TCL!

  • Primeiro, verificamos que as condições para usar o TCL são satisfeitas:

    • De fato, \(n > 30\).

    • A nossa amostra é aleatória (podemos supor).

    • Os indivíduos da amostra são independentes (podemos supor).

    • O tamanho da amostra é menos do que \(10\%\) da população (podemos supor).

    • Há pelo menos \(10\) sucessos e pelo menos \(10\) fracassos na amostra.

  • A proporção amostral \(\hat p\) varia para cada amostra; logo, \(\hat p\) é uma variável aleatória e tem uma distribuição de probabilidade: a distribuição amostral da proporção.

  • O TCL diz que a distribuição de \(\hat p\) é normal, com média \(p\) (a proporção populacional verdadeira, que nós nunca vamos descobrir) e desvio-padrão \(\sqrt{\frac{p(1-p)}{n}}\) (que também nunca vamos descobrir, mas que podemos estimar usando \(\hat p\) no lugar de \(p\)).

  • Vamos supor que \(\hat p \neq p\). Eis, então, as duas situações possíveis:

  • Agora, o desfecho. Preste bem atenção. Nada nas mangas.

    • Em uma distribuição normal com média \(\mu\) e desvio-padrão \(\sigma\), sabemos que \(95\%\) da probabilidade está entre \(\mu - 1{,}96\sigma\) e \(\mu + 1{,}96\sigma\).

    • Na nossa distribuição amostral de \(\hat p\), o desvio-padrão é o erro-padrão

      \[ EP = \sqrt{\frac{\hat p(1-\hat p)}{n}} \]

    • Então, em \(95\%\) das amostras possíveis, \(\hat p\) vai estar a \(1{,}96\cdot EP\) ou menos de distância da proporção populacional \(p\).

    • Nossa amostra é uma destas \(95\%\) das amostras possíveis? Não sabemos. Na verdade, como nossa amostra foi aleatória, há \(0{,}95\) de probabilidade de que sim.

    • Ou seja, \(0{,}95\) de probabilidade de que nosso \(\hat p\) esteja a \(1{,}96\cdot EP\) ou menos de distância da proporção populacional \(p\).

    • Daí, podemos dizer, com \(95\%\) de confiança, que a proporção populacional \(p\) está no intervalo

      \[ [\quad \hat p - 1{,}96 \cdot EP\quad,\quad \hat p + 1{,}96 \cdot EP\quad] \quad=\quad [\quad0{,}24 \quad,\quad 0{,}38\quad] \]

  • Eis os desenhos para as duas situações possíveis:

O que quer dizer \(\;95\%\) de confiança?

Quer dizer que não temos certeza de que nossa amostra está dentre aquelas cuja proporção amostral \(\hat p\) está a \(1{,}96\) desvios-padrão ou menos de distância da proporção populacional \(p\).

Existe \(0{,}05\) de probabilidade de que nossa amostra tenha sido “ruim”. Neste caso, nosso intervalo de confiança está errado.

Ou, dito de outro modo, se repetirmos este experimento com \(100\) amostras diferentes, o intervalo de confiança calculado vai conter a proporção populacional em \(95\) das vezes.

É importante perceber que \(95\%\) não é a probabilidade de \(p\) estar no intervalo, pois \(p\) é um valor fixo, sem qualquer incerteza, que está (probabilidade \(1\)) ou não está (probabilidade \(0\)) no nosso intervalo de confiança.

Simulação

  • Vamos simular uma população de \(200\) mil valores booleanos: FALSE significa que a pessoa não posta no FB todo dia, TRUE significa que a pessoa posta no FB todo dia.

  • A proporção populacional \(p\) que posta todo dia tem um valor específico, que não vou revelar aqui. Na vida real, você não vai saber o valor de \(p\).

    populacao <- sample(
      c(FALSE, TRUE), 
      2e5, 
      replace = TRUE, 
      prob = c(1 - p, p)
    )
  • Vamos retirar uma amostra de \(156\) pessoas:

    n <- 156
    amostra <- sample(populacao, n)
  • Qual a proporção de pessoas que postam todo dia (\(\hat p\))?

    p_chapeu <- mean(amostra)
    p_chapeu
    ## [1] 0,3012821
  • Vamos construir um intervalo de confiança de \(95\%\) para a proporção populacional \(p\):

    • O erro-padrão é

      ep <- sqrt(p_chapeu * (1 - p_chapeu) / n)
      ep
      ## [1] 0,0367346
    • Para \(95\%\), precisamos usar \(1{,}96\) como o número de desvios-padrão. A margem de erro será

      margem <- 1.96 * ep
      margem
      ## [1] 0,07199981
    • Os extremos do intervalo de confiança vão ser

      p_chapeu + c(-1, 1) * margem
      ## [1] 0,2292822 0,3732819
  • Será que este intervalo é bom? Será que a amostra que tomamos está naqueles \(95\%\) de amostras que ficam próximas da proporção verdadeira? Será que a proporção verdadeira está neste intervalo?

  • Na vida real, jamais saberíamos. Eu sei, porque fui eu que gerei a população, mas não vou falar ainda.

  • Vamos gerar mais \(50\) amostras e examinar os intervalos de confiança calculados a partir delas. Como estamos trabalhando com \(95\%\) de confiança, é razoável que \(2\) ou \(3\) dos intervalos — i.e., \(5\%\) de \(50\) — não capturem a proporção real:

    n_amostras <- 50
    
    # Gero uma lista, cada elemento uma amostra (um vetor)
    amostras <- replicate(n_amostras, sample(populacao, n), simplify = FALSE)
    
    #' Função para calcular o IC de uma amostra: retorna vetor de 2 elementos
    #' @param amostra Vetor booleanos
    #' @param conf Nível de confiança (default .95)
    #'
    #' @return Vetor numérico de 2 elementos: extremos do IC calculado
    #'
    montar_ic <- function(amostra, conf = .95) {
    
      p_chapeu <- mean(amostra)
      ep <- sqrt(p_chapeu * (1 - p_chapeu) / n)
      valor_critico <- - qnorm((1 - conf)/2)
      margem <- valor_critico * ep
    
      p_chapeu + c(-1, 1) * margem
    
    }
    
    # Calcular os ICs
    ICs <- amostras %>% 
      map(~montar_ic(.x))
    
    # Em quais deles a proporção verdadeira está no IC?
    ICs %>% 
      map_lgl(~between(p, .x[1], .x[2]))
    ##  [1]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
    ## [14]  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
    ## [27]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
    ## [40]  TRUE FALSE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
  • Verifique, no resultado acima, se a proporção verdadeira foi capturada aproximadamente \(95\%\) das vezes.

  • Uma visualização legal dos intervalos (veja no arquivo .Rmd como fazer):

  • Ah, e agora você sabe qual era o valor de \(p\). Volte e veja se aquele primeiro intervalo de confiança era bom.

  • Pense e responda: os intervalos de confiança da figura acima têm todos o mesmo tamanho?

12.2.2 No geral

Situação

  • Você tem uma amostra de \(n\) elementos, com proporção amostral \(\hat p\).

  • Você quer construir um intervalo de confiança de \(c \%\) para a proporção populacional.

No nosso exemplo, \(n = 156\), \(\hat p = 48/156\) e \(c = 0{,}95\).

Verificar as condições para usar o TCL

  • A distribuição da população é normal e \(n \geq 10\)?

  • Caso a distribuição da população não seja conhecida, \(n \geq 30\)?

  • A amostra é aleatória, representativa da população?

  • Os valores da amostra são independentes entre si?

  • O tamanho da amostra é menos do que \(10\%\) da população?

  • Há pelo menos \(10\) fracassos e pelo menos \(10\) sucessos na amostra?

Calcular o erro-padrão da distribuição amostral de \(\hat p\)

\[ EP = \sqrt{\frac{\hat p (1 - \hat p)}{n}} \]

Calcular a margem de erro

  • Calcular o valor crítico \(z^\star\): o valor tal que a área abaixo da curva normal padrão entre \(-z^\star\) e \(z^\star\) seja de \(c\)

    z <- -qnorm((1 - c)/2)
  • No nosso exemplo, z = -qnorm(0.025) = 1,96.

  • A margem de erro vai ser

    \[ ME = z^\star \cdot EP \]

Construir o intervalo

  • O intervalo de confiança será

    \[ [\quad \hat p - ME \quad,\quad \hat p + ME \quad] \]

Outros níveis de confiança

  • No exemplo, usamos \(c = 95\%\).

  • O que acontece quando \(c = 90\%\)?

  • E quando \(c = 99\%\)?

  • Refaça o exemplo usando estes valores. Os intervalos ficam maiores? Menores? Qual a relação entre o nível de confiança \(c\) e o tamanho da margem de erro?

  • O que aconteceria se o nível de confiança fosse de \(100\%\)? Nós saberíamos a proporção populacional com certeza?

12.2.3 Escolhendo o tamanho da amostra

Exemplo

  • Você quer fazer uma pesquisa para saber a proporção \(p\) da população do seu estado que vai votar no candidato \(A\) na próxima eleição.

  • Você quer que a margem de erro seja de \(5\) pontos percentuais (i.e., \(ME = 0{,}05\)), com \(95\%\) de confiança.

  • Qual deve ser o tamanho \(n\) da sua amostra?

  • Pelo que vimos na seção anterior

    \[ ME \quad=\quad z^\star \cdot EP \quad=\quad z^\star \cdot \sqrt{\frac{\hat p (1 - \hat p)}{n}} \]

  • Nós podemos isolar \(n\) e chegar a (confira)

    \[ n = \hat p (1-\hat p) \left(\frac{z^\star}{ME}\right)^2 \]

  • Nós temos \(ME = 0{,}05\) e \(z^\star = 1{,}96\) (calculado a partir do nível de confiança).

  • E \(\hat p\)? Bem, o pior caso é o valor de \(\hat p\) que maximiza \(n\), que é \(\hat p = 0{,}5\).

  • Com estes valores, chegamos a

\[ n = 0{,}5 \cdot 0{,}5 \cdot \left(\frac{1{,}96}{0{,}05}\right)^2 = 384{,}16 \]

  • Conclusão: precisamos de uma amostra de pelo menos \(385\) pessoas.

  • Perceba que usamos o valor de pior caso para \(\hat p\). Se já tivermos uma estimativa para \(\hat p\) (obtida de uma pesquisa anterior, por exemplo), podemos usar esta estimativa e obter um valor menor para \(n\).

  • Perceba, também, que o tamanho da população não entra em jogo, a não ser para verificar que a amostra é menos do que \(10\%\) da população.

  • Calcule, por exemplo, qual seria o valor de \(n\) se já tivéssemos uma estimativa de \(\hat p = 0{,}3\).

12.2.4 Em R

Usando binom.test

  • Tudo isto já é feito pelo R base, com a função binom.test, embora o algoritmo seja um pouco diferente, como você pode ver pelos resultados:

    bt <- binom.test(48, 156)
    bt
    ## 
    ##  Exact binomial test
    ## 
    ## data:  48 and 156
    ## number of successes = 48, number of trials = 156, p-value = 0,000001748
    ## alternative hypothesis: true probability of success is not equal to 0,5
    ## 95 percent confidence interval:
    ##  0,2363644 0,3864933
    ## sample estimates:
    ## probability of success 
    ##              0,3076923
  • Esta função, além de computar o intervalo de confiança, faz um teste de hipótese (assunto de uma aula futura).

  • O valor de retorno desta função é uma lista:

    str(bt)
    ## List of 9
    ##  $ statistic  : Named num 48
    ##   ..- attr(*, "names")= chr "number of successes"
    ##  $ parameter  : Named num 156
    ##   ..- attr(*, "names")= chr "number of trials"
    ##  $ p.value    : num 0,00000175
    ##  $ conf.int   : num [1:2] 0,236 0,386
    ##   ..- attr(*, "conf.level")= num 0,95
    ##  $ estimate   : Named num 0,308
    ##   ..- attr(*, "names")= chr "probability of success"
    ##  $ null.value : Named num 0,5
    ##   ..- attr(*, "names")= chr "probability of success"
    ##  $ alternative: chr "two.sided"
    ##  $ method     : chr "Exact binomial test"
    ##  $ data.name  : chr "48 and 156"
    ##  - attr(*, "class")= chr "htest"
  • Se você quiser só o intervalo de confiança:

    bt$conf.int
    ## [1] 0,2363644 0,3864933
    ## attr(,"conf.level")
    ## [1] 0,95

Usando o pacote binom

  • Na verdade, existem muitos algoritmos diferentes para construir um intervalo de confiança para a proporção. Este artigo, de 2013, examina diversas alternativas.

  • O pacote binom implementa vários destes algoritmos através da função binom.confint:

    library(binom)
    
    binom.confint(48, 156) %>%
      kbl(format.args = list(big.mark = '.')) %>% 
      kable_paper(
        c('striped', 'hover'),
        full_width = FALSE
      )

    method

    x

    n

    mean

    lower

    upper

    agresti-coull

    48

    156

    0,3076923

    0,2404694

    0,3841586

    asymptotic

    48

    156

    0,3076923

    0,2352664

    0,3801182

    bayes

    48

    156

    0,3089172

    0,2377481

    0,3814466

    cloglog

    48

    156

    0,3076923

    0,2371200

    0,3808746

    exact

    48

    156

    0,3076923

    0,2363644

    0,3864933

    logit

    48

    156

    0,3076923

    0,2403194

    0,3843959

    probit

    48

    156

    0,3076923

    0,2393586

    0,3834481

    profile

    48

    156

    0,3076923

    0,2388119

    0,3828426

    lrt

    48

    156

    0,3076923

    0,2388381

    0,3828590

    prop.test

    48

    156

    0,3076923

    0,2376901

    0,3873412

    wilson

    48

    156

    0,3076923

    0,2406146

    0,3840134

  • O algoritmo que descrevemos no exemplo é o asymptotic.

  • O algoritmo implementado por binom.test é o exact.

  • Leia as páginas de ajuda de binom.test e de binom.confint.

  • No RStudio, use Code | Go To Function Definition na chamada da função binom.confint para ver o seu código fonte. O método asymptotic é implementado nas linhas \(45\)\(54\), usando variáveis definidas nas linhas \(28\)\(32\). Lendo o código, você deve ser capaz de perceber que o que está acontecendo é o mesmo que fizemos no nosso exemplo.

12.3 Vídeo 2

12.4 Intervalos de confiança para a média

12.4.1 Exemplo: preço médio da gasolina

  • Em uma amostra aleatória de \(48\) postos de gasolina, a média do preço de um litro de gasolina comum foi R$ \(5{,}41\).

  • De pesquisas anteriores, sabemos que o desvio-padrão dos preços de gasolina na população de todos os postos é de R$ \(1{,}09\).

  • Vamos construir um intervalo de confiança de \(95\%\) para a média populacional do preço do litro da gasolina.

Teoria

  • Vamos identificar os dados:

    • Média amostral \(\overline x = 5{,}41\).

    • Tamanho da amostra \(n = 48\).

    • desvio-padrão populacional \(\sigma = 1{,}09\).

    • Nível de confiança \(c = 0{,}95\).

  • Verifique que as condições para aplicar o TCL são satisfeitas aqui.

  • O TCL diz que \(\overline X\) tem distribuição amostral normal com média \(\mu\) (a média populacional, que nunca vamos descobrir) e com desvio-padrão

    \[ EP \quad=\quad \frac{\sigma}{\sqrt{n}} \quad=\quad \frac{1{,}09}{\sqrt{48}} \quad=\quad 0{,}16 \]

  • Eis a distribuição amostral da média, com os \(95\%\) centrais de probabilidade em destaque:

  • O valor crítico correspondente a \(c = 0{,}95\) é \(z^\star = 1{,}96\).

  • A margem de erro \(ME\) vai ser \(z^\star \cdot EP = 0{,}31\).

  • O intervalo de confiança vai ser

    \[ [\quad \overline x - 1{,}96 \cdot EP\quad,\quad \overline x + 1{,}96 \cdot EP\quad] \quad=\quad [\quad 5{,}10 \quad,\quad 5{,}72 \quad] \]

Em R

  • Este procedimento é chamado de teste z.

  • Este teste pressupõe que você sabe o desvio-padrão populacional; esta situação é tão rara que o R base não tem uma função para isso. Na verdade, o teste z é usado principalmente para fins didáticos.

  • Vamos carregar um pacote que implementa o teste z:

  • Esta função recebe o resumo (summary) da amostra e constrói o intervalo de confiança:

    zsum.test(mean.x = 5.41, sigma.x = 1.09, n.x = 48)
    ## 
    ##  One-sample z-Test
    ## 
    ## data:  Summarized x
    ## z = 34,387, p-value < 0,00000000000000022
    ## alternative hypothesis: true mean is not equal to 0
    ## 95 percent confidence interval:
    ##  5,101643 5,718357
    ## sample estimates:
    ## mean of x 
    ##      5,41
  • De novo, a mesma função calcula um intervalo de confiança e faz um teste de hipótese.

12.4.2 Exemplo: salmões

  • Numa amostra de \(150\) salmões, foi medida a concentração do contaminante mirex (um inseticida).

  • As concentrações (em ppm) estão resumidas na tabela abaixo.

  • A média foi \(\overline x = 0{,}09\)ppm.

  • O desvio-padrão amostral foi \(s = 0{,}05\)ppm.

  • Não sabemos o desvio-padrão populacional.

  • Vamos construir um intervalo de confiança para a média populacional da concentração de mirex.

Teoria

  • Como não sabemos \(\sigma\), vamos usar \(s\) em seu lugar.

  • Vamos trabalhar com uma distribuição amostral da média \(\overline X\) com média \(\mu\) e erro-padrão

    \[ EP = \frac{s}{\sqrt{n}} \]

  • No início do século \(20\), William Gosset descobriu que, quando substituímos \(\sigma\) por \(s\) no cálculo do erro-padrão, a distribuição amostral deixa de ser normal e passa a ser a distribuição \(t\) de Student. Leia mais neste site sobre história da Estatística; busque no nome de Gosset para achar o trecho sobre ele.

  • Além disso, temos mais uma condição a ser verificada: quanto menor o tamanho da amostra, mas próximas da normal a distribuição da população e a distribuição da amostra precisam ser, para o método dar certo.

  • No nosso caso, como \(n = 150\), não precisamos nos preocupar muito. De qualquer forma, eis um histograma da nossa amostra:

    O histograma é unimodal e aproximadamente simétrico. Isto basta.

  • A distribuição \(t\) é na verdade, uma família de distribuições, dependendo de um parâmetro chamado número de graus de liberdade, geralmente escrito como \(\nu\) (falado “ni”).

  • Quanto maior o valor de \(\nu\), mais parecida com uma normal é a distribuição \(t\), como mostra a figura:

  • A distribuição \(t\) com \(\nu\) graus de liberdade tem

    • Média \(0\) (se \(\nu > 1\); caso contrário, a média é indefinida).

    • Variância \(\frac{\nu}{\nu -2}\) (se \(\nu > 2\)); variância infinita (se \(1 < \nu \leq 2\)); variância indefinida para todos os outros casos.

  • No R, você pode usar as funções dt, pt, qt e rt para, respectivamente, computar a densidade, a probabilidade acumulada, os quantis e para sortear valores de acordo com a distribuição \(t\).

  • Quando nossa amostra tiver tamanho \(n\), vamos trabalhar com a distribuição \(t\) com \(n - 1\) graus de liberdade.

  • Então, no exemplo, \(\nu = 150 - 1 = 149\).

  • Computamos o intervalo de confiança como antes, mas o valor crítico agora vai ser dado não pela normal, mas sim pela distribuição \(t\) com \(149\) graus de liberdade:

  • Lembre-se de que, com a normal, o valor crítico para o nível de confiança de \(95\%\) era \(1{,}96\). Como a distribuição \(t\) tem as caudas mais pesadas, aqui o valor crítico ficou um pouco maior: é preciso se afastar um pouco mais da média para obter \(95\%\) da área sob a curva.

  • A margem de erro vai ser

    \[ ME \quad=\quad t^\star \cdot EP \quad=\quad t^\star \cdot \frac{s}{\sqrt{n}} \quad=\quad 1{,}98 \cdot \frac{0{,}05}{12{,}25} \quad=\quad 0{,}01 \]

  • O intervalo de confiança para a média populacional, com nível de confiança de \(95\%\) é

    \[ [\quad \overline x - ME \quad,\quad \overline x + ME \quad] \quad=\quad [\quad 0{,}08 \quad,\quad 0{,}10\quad] \]

Em R

  • Este procedimento é chamado de teste t.

  • No R base, use a função t.test, que também faz teste de hipóteses.

    t.test(x = salmoes$mirex)
    ## 
    ##  One Sample t-test
    ## 
    ## data:  salmoes$mirex
    ## t = 22,589, df = 149, p-value < 0,00000000000000022
    ## alternative hypothesis: true mean is not equal to 0
    ## 95 percent confidence interval:
    ##  0,08334978 0,09933022
    ## sample estimates:
    ## mean of x 
    ##   0,09134

12.4.3 Exercícios

Uma função para o teste z

  • Implemente a sua própria função para construir um intervalo de confiança quando \(\sigma\) é conhecido. Os parâmetros devem ser

    • \(\overline x\)

    • \(n\)

    • \(\sigma\)

    • conf: o nível de confiança, um valor entre \(0\) e \(1\)

  • Teste sua função com vários exercícios do livro. Compare com os resultados de BSDA::zsum.test.

Uma função para o teste t

  • Implemente a sua própria função para construir um intervalo de confiança quando \(\sigma\) não é conhecido. Os parâmetros devem ser

    • \(\overline x\)

    • \(n\)

    • \(s\)

    • conf: o nível de confiança, um valor entre \(0\) e \(1\)

  • Teste sua função com vários exercícios do livro. Compare com os resultados de t.test.

Tamanho mínimo da amostra

  • Reveja a aula sobre intervalos de confiança para proporções. Lá, falamos sobre como calcular \(n\) em função do nível de confiança e da margem de erro desejada.

  • Faça o mesmo para o teste t. Isto é, obtenha uma fórmula que dê o valor mínimo de \(n\) em função do nível de confiança \(c\) e da margem de erro \(ME\).