ESTATÍSTICA COMPUTACIONAL I

PRÁTICA 5: FUNÇÕES DO R PARA INTERVALOS DE CONFIANÇA E TESTES DE HIPÓTESES (1 E 2 POPULAÇÕES)

Prof: Guilherme Augusto Veloso ()

\[\\[0.05in]\]

1 PACOTES NECESSÁRIOS

Para esta quinta aula prática de Estatística Computacional I, precisaremos dos seguintes pacotes:

require(ggplot2)   # Abordagem gráfica
require(qqplotr)   # Gráfico qqplot
require(DescTools) # Teste da variância

2 INTRODUÇÃO

Até aqui, nosso foco esteve em construir a inferência estatística para uma única população, usando simulações detalhadas no R para compreender profundamente como surgem:

  • a distribuição amostral da média, proporção e variância;
  • os intervalos de confiança;
  • os testes de hipótese para uma população;
  • o comportamento de erros tipo I e tipo II;
  • o comportamento do poder do teste;
  • a lógica geral da inferência.

Esse estudo computacional foi essencial para que vocês dominassem os conceitos, observassem empiricamente o Teorema Central do Limite e enxergassem como a variabilidade amostral fundamenta toda a inferência.

Além disso, a lógica construída para uma população se estende naturalmente para o caso de duas populações: se simulássemos novamente, veríamos praticamente os mesmos fenômenos — distribuição de estatísticas de diferença, comportamento sob \(H_0\), efeitos do tamanho amostral, erros tipo I e II, e o papel central do TCL. Ou seja, a extrapolação das simulações para duas populações é muito similar e, conceitualmente, nada realmente novo surgiria nesse processo.

A partir deste ponto, iniciamos uma nova etapa: usar as funções prontas do R para realizar inferência estatística. Nesta fase, não vamos reconstruir todas as simulações novamente. Em vez disso, vamos aprender como o R implementa, de forma direta e eficiente, os principais procedimentos inferenciais.

Com as simulações que realizamos nas aulas passadas, essa base conceitual permite compreender muito melhor o que cada função do R está fazendo, de onde vêm os números e como interpretar seus resultados.

O foco dessa prática será, portanto:

  • Diagnósticos de normalidade: Antes de aplicar testes paramétricos baseados na normalidade, vamos estudar o Teste de Shapiro Wilk e gráficos para detectar normalidade.

  • Inferência para uma e duas populações: Sistematizar as funções prontas do R para construir intervalos de confiança e testes sobre média, proporção e variância para uma e duas populações.

3 DIAGNÓSTICOS DE NORMALIDADE

Antes de avançarmos para a aplicação das funções prontas do R em testes e intervalos de confiança, é importante revisitar um ponto essencial na prática inferencial: a verificação da normalidade. Muitos procedimentos paramétricos — como o teste t, teste pra variância e ANOVA — assumem que a(s) população(ões) segue(m) uma distribuição aproximadamente normal.

Nas simulações que realizamos na primeira parte do curso, vocês viram que, graças ao Teorema Central do Limite, a normalidade da estatística (como a média amostral) tende a emergir naturalmente quando o tamanho amostral é moderado ou grande, mesmo quando a população original não é normal.

É muito importante não confundir isso com a ideia de que “amostras grandes são normais” — o que se torna aproximadamente normal é a distribuição da média amostral, não os dados em si. A população e a amostra podem continuar fortemente assimétricas, mesmo com tamanho grande.

Contudo, para amostras pequenas ou situações com forte assimetria, pode ser útil avaliar empiricamente se a suposição de normalidade é plausível.

Vamos trabalhar com ferramentas como o teste de Shapiro-Wilk, além de gráficos como densidades e QQ-plots. Assim, vocês terão um conjunto completo de instrumentos para analisar a normalidade antes de aplicar os testes paramétricos nas próximas seções.

3.1 SITUAÇÃO PRÁTICA MOTIVADORA

Imagine que uma equipe da área de ergonomia está avaliando o tempo de reação de trabalhadores que operam um novo painel de controle industrial. O equipamento ainda está em fase piloto e, por isso, apenas 22 trabalhadores participaram do teste inicial. Os tempos de reação (em milissegundos) são os seguintes:

Tempos <- c(
  242, 255, 248, 251, 239, 246, 244, 257, 252, 260,
  241, 249, 245, 243, 254, 247, 250, 259, 263, 272,
  285, 301
)

Dados <- data.frame(Tempos = Tempos)

Nesse contexto, estamos diante de uma situação típica na prática profissional: uma amostra pequena (n < 30). Ou seja, é justamente aquele cenário limite em que decidir se a normalidade pode ou não ser assumida se torna relevante para a escolha entre métodos paramétricos ou não paramétricos.

3.2 GRÁFICO DE DENSIDADE

O primeiro passo para avaliar a forma da distribuição é visualizar seus contornos. O gráfico de densidade permite enxergar rapidamente assimetrias, caudas mais pesadas e possíveis desvios sutis da normalidade. Ele é construído suavizando os dados por meio de uma função kernel, resultando em uma curva contínua que aproxima a distribuição dos valores observados. No R este gráfico é feito com a função geom_density do pacote ggplot2:

ggplot(Dados, aes(x = Tempos)) +
  geom_density(fill="blue") +
  xlab("Tempos") + 
  ylab("Densidade") +
  theme_bw() +
  theme(text = element_text(size = 14))

Note como os dados são fortemente assimétricos à direito, indo contra uma situação de normalidade dos dados.

Pode acontecer de mesmo quando o gráfico de densidade apresenta assimetria aparente, isso não impede que os dados sejam considerados aproximadamente normais. O QQ-plot pode acusar a normalidade dos dados e testes formais, como o Shapiro–Wilk, podem não rejeitar a normalidade. Isso ocorre porque pequenas assimetrias visuais nem sempre são suficientes para indicar desvios estatisticamente significativos da distribuição normal.

3.3 GRÁFICO QUANTIL-QUANTIL (Q-Q PLOT)

O gráfico quantil-quantil (Q-Q plot) é uma ferramenta visual que compara a distribuição dos dados com uma distribuição teórica, geralmente a normal. Ele faz isso confrontando os quantis da amostra com os quantis da distribuição escolhida.

  • Se os pontos se alinharem em uma linha reta, os dados são aproximadamente normais.
  • Desvios da linha indicam não normalidade, como assimetrias ou caudas atípicas.

O Q-Q plot é útil para diagnosticar rapidamente padrões de desvio e orientar a escolha dos testes estatísticos. No R, com o ggplot2 e o pacote qqplotr, podemos construir um Q-Q plot completo usando três funções:

  • stat_qq_point(): plota os pontos da comparação entre quantis.
  • stat_qq_line(): adiciona a linha teórica de referência.
  • stat_qq_band(): cria bandas de confiança, destacando desvios mais relevantes.

Segue o código que executa este gráfico ao nosso exemplo:

ggplot(Dados, aes(sample=Tempos)) +
    stat_qq_band(fill="lightblue") +
    stat_qq_line() +
    stat_qq_point() +
    xlab("Quantis Teoricos")+
    ylab("Quantis Amostrais")+
    theme_bw() +
    theme(text = element_text(size = 14))

Note que, como a cauda à direita da distribuição é mais pesada os pontos finais no gráfico q-q plot se encontram fora da banda de confiança, reforçando a não normalidade dos dados.

3.4 TESTE DE SHAPIRO WILK

O teste de Shapiro-Wilk é um dos métodos mais utilizados para avaliar a normalidade de uma amostra, especialmente quando o tamanho amostral é pequeno ou moderado. Ele costuma ser mais poderoso que outros testes — como Kolmogorov-Smirnov — porque é mais sensível a desvios sutis da normalidade, sem exigir que os parâmetros da distribuição normal sejam conhecidos.

As hipóteses do teste são

  • \(H_0\): os dados vêm de uma distribuição normal.
  • \(H_1\): os dados não vêm de uma distribuição normal.

O teste compara os valores observados com os valores esperados de uma amostra normal ordenada. A estatística de Shapiro-Wilk é, essencialmente, uma razão entre:

  • a variabilidade explicada pelos pesos dos quantis teóricos, e
  • a variabilidade total da amostra.

Valores próximos de 1 indicam boa aderência à normalidade; valores menores indicam afastamento. Para concluir sobre o teste note que:

  • Se o p-valor for maior que o nível de significância (por exemplo, 0.05), não rejeitamos H₀ → não há evidências suficientes de que a distribuição seja não normal.
  • Se o p-valor for menor que 0.05, rejeitamos H₀ → há indícios de que os dados não seguem a normalidade.

No R, este teste é feito a partir da função shapiro.test da base do R, que recebe como argumento os dados observados. Vamos aplicar essa função ao nosso exemplo:

shapiro.test(Dados$Tempos)
## 
##  Shapiro-Wilk normality test
## 
## data:  Dados$Tempos
## W = 0.81249, p-value = 0.0007899

Note que a saída dessa função apresenta dois resultados:

  • W: Estatísica de teste. Quanto mais próxima de 1, maior a tendência para a normalidade dos dados.
  • p-valor: P-valor do teste realizado.

Como o p-valor é menor que 0.05, rejeitamos a hipótese nula e há evidências de que os dados não são normais. Nesse caso, não podemos realizar nenhum teste paramétrico aqui para inferir sobre parâmetros populacionais. A alternativa é recorrer à estatística não paramétrica para que seja feita a inferência nesses parâmetros.

3.5 EXERCÍCIO

Imagine que um laboratório de ciências do esporte está avaliando o tempo de recuperação cardíaca (em segundos) de atletas amadores após um teste de esforço leve. Como o estudo ainda está em fase preliminar, apenas 28 voluntários participaram.

A seguir estão os dados coletados (em segundos):

Tempos <- c(
  52, 49, 55, 50, 53, 47, 51, 56, 54, 58,
  48, 52, 50, 49, 57, 55, 53, 60, 62, 65,
  59, 61, 64, 68, 70, 72, 58, 56
)
Dados <- data.frame(Tempos = Tempos)

Verifique se há indícios, a um nível de 5% de significância, que os dados são normalmente distribuídos.

4 CASO 1: POPULAÇÕES NORMAIS COM VARIÂNCIAS CONHECIDAS

Este é o caso mais simples do ponto de vista teórico: quando a(s) população(ões) é(são) normal(is) e a(s) variância(s) é(são) conhecida(s), a estatística de teste e os intervalos de confiança utilizam a distribuição Normal padrão (Z). Esse cenário aparece com frequência nos livros-texto porque permite introduzir conceitos fundamentais de forma algebricamente limpa.

Além disso, esse caso é excelente para fins didáticos, especialmente para simulações computacionais. Por ser um contexto totalmente controlado (normalidade perfeita e variância fixa), ele é ideal para observar empiricamente como a distribuição da média, dos estimadores e das estatísticas de teste se comporta — exatamente como fizemos no início da disciplina. É um ambiente “de laboratório”, onde tudo pode ser verificado com precisão.

Na prática aplicada, porém, populações com variância conhecida quase nunca existem. Mesmo com grande quantidade de dados históricos, a variabilidade real da população continua sendo estimada, e não conhecida. Por isso, esse caso é essencialmente teórico e tem utilidade limitada na análise estatística real. Assim, na prática, tratá-lo separadamente não acrescenta ganhos concretos para a análise de dados aplicada. Por esses motivos, NÃO ABORDAREMOS ESTE CASO AQUI.

5 CASO 2: PROPORÇÕES

As situações em que trabalhamos com proporções são extremamente comuns na prática estatística: porcentagem de indivíduos vacinados, proporção de peças defeituosas, taxa de aprovação, prevalência de uma doença, entre muitas outras. Em todos esses casos, cada observação pode ser representada como um sucesso (1) ou fracasso (0), isto é, como uma variável Bernoulli.

A partir deste ponto, organizaremos o estudo em duas partes fundamentais:

  • Proporções em uma população
    Intervalos de confiança e testes de hipótese para o parâmetro \(p\).

  • Proporções em duas populações
    Inferência para a diferença \(p_1 - p_2\), incluindo intervalos e testes de hipóteses.

Sabemos que o Teorema Central do Limite garante a normalidade aproximada de \(\hat{p}\) (ou da diferença \(\hat{p}_1 - \hat{p}_2\)), quando certas condições são atendidas. O R implementa esses procedimentos automaticamente via funções como prop.test.

A função prop.test() é utilizada para realizar o intervalo de confiança e o teste de hipótese para:

  • A proporção populacional (uma população).
  • Comparação das proporções populacionais (duas populações independentes).

Os argumentos da função prop.test() são:

  • x = número de sucessos observados na amostra. Pode ser um único valor (uma população) ou um vetor com dois valores (duas populações);
  • n = tamanho da amostra correspondente a x. Pode ser um único valor (uma população) ou um vetor com dois valores (duas populações);
  • alternative = hipótese alternativa: "greater" para testes unilaterais à direita, "less" para testes unilaterais à esquerda e "two.sided" para testes bilaterais;
  • p = valor da proporção sob a hipótese nula (um valor para uma população ou a diferença de proporções para duas populações, sendo geralmente 0);
  • conf.level = nível de confiança (consequentemente, é estabelecido o nível de significância).
  • correct = um valor lógico que indica se a correção de continuidade será utilizada ou nao.

As saídas da função prop.test() são:

  • statistic: a estatística de teste X (equivalente a estatística \(Z^2\));
  • p.value: valor-p do teste;
  • conf.int: intervalo de confiança para a proporção ou para a diferença de proporções. Se a hipótese alternativa for diferente da bilateral, será feito um intervalo unilateral;
  • estimate: proporção amostral (ou proporções amostrais, se duas populações);
  • null.value: valor sob a hipótese nula;
  • alternative: hipótese alternativa.

Para retornar o intervalo de confiança somente, basta fazer prop.test(…)$conf.int.

5.1 UMA POPULAÇÃO

Quando trabalhamos com proporções em uma única população, nosso objetivo é realizar inferência sobre o parâmetro \(p\), que representa a verdadeira proporção de sucessos na população. Construiremos:

  • intervalos de confiança para \(p\);
  • testes de hipótese sobre \(p\).

A lógica da inferência é inteiramente baseada na variabilidade natural da proporção amostral \(\hat{p}\), que surge porque estamos observando apenas uma amostra da população. Por isso, compreender a distribuição de \(\hat{p}\) é fundamental para aplicar corretamente os métodos inferenciais.

Antes, porém, precisamos garantir que certas suposições mínimas são atendidas.

5.1.1 SUPOSIÇÕES NECESSÁRIAS

Para utilizar a aproximação Normal e aplicar os intervalos e testes clássicos para uma proporção, assumimos que:

  1. As observações são independentes.
  2. A variável segue uma distribuição Bernoulli.
  3. A amostra representa corretamente a população.
  4. Tamanho amostral suficiente para que o Teorema Central do Limite atue.

Uma “regra de bolso” muito utilizada é verificar se \(n\hat{p}\geq10\) e \(n(1-\hat{p})\geq10\)

5.1.2 SITUAÇÃO PRÁTICA MOTIVADORA

Imagine que uma equipe de saúde ocupacional está conduzindo um estudo preliminar sobre uso correto de equipamentos de proteção individual (EPIs) em um setor de manutenção industrial. O objetivo é estimar a proporção de trabalhadores que utilizam corretamente o capacete de segurança durante toda a jornada de trabalho.

Como o estudo ainda está em fase piloto, apenas 50 trabalhadores foram observados ao longo de um turno. Para cada trabalhador, o observador registrou:

  • 1uso adequado do capacete durante 100% das atividades;
  • 0uso inadequado (retirou, afrouxou ou utilizou de forma incorreta).

Os dados coletados foram os seguintes:

UsoCapacete <- c(
  1,1,1,1,0,1,1,1,1,0,
  1,1,0,1,1,1,0,1,1,0,
  1,0,1,0,1,1,1,1,1,1,
  0,1,1,1,1,0,1,1,1,0,
  0,1,1,1,1,0,1,1,1,0
)
Dados = data.frame(UsoCapacete = UsoCapacete)
n = length(Dados$UsoCapacete)
Sucessos = sum(Dados$UsoCapacete)
p_hat = mean(Dados$UsoCapacete)

Considere o objetivo de construir intervalos de confiança e fazer testes de hipótese para o parâmetro populacional \(p\), a verdadeira proporção de trabalhadores que utilizam corretamente o capacete de segurança.

5.1.3 INTERVALOS DE CONFIANÇA

Para uma única proporção populacional \(p\), queremos construir um intervalo de confiança (IC) que quantifique a incerteza da estimativa amostral \(\hat{p}\).

O IC clássico para a proporção populacional é dado por:

\[ \hat{p} \pm z_{\alpha/2} \sqrt{\frac{\hat{p}(1 - \hat{p})}{n}} \]

  • \(\hat{p}\): proporção observada na amostra
  • \(z_{\alpha/2}\): valor crítico da Normal padrão (ex.: 1.96 para 95%)
  • \(n\): tamanho da amostra

A função prop.test não usa o IC clássico, e sim o intervalo de score de Wilson, que apresenta melhor desempenho, especialmente em amostras pequenas ou proporções extremas.

A fórmula utilizada é:

\[ \tilde{p} = \frac{\hat{p} + \frac{z^2}{2n}}{1 + \frac{z^2}{n}} \]

\[ \text{Erro} = \frac{z}{1 + \frac{z^2}{n}} \sqrt{\frac{\hat{p}(1-\hat{p})}{n} + \frac{z^2}{4n^2}} \]

O intervalo de confiança é dado por:

\[ (\tilde{p} - \text{Erro},\; \tilde{p} + \text{Erro}) \]

  • É mais estável quando a amostra é pequena.
  • Evita limites distorcidos quando a proporção está muito próxima de 0 ou 1.
  • Apresenta melhor cobertura que o intervalo clássico.

Quando correct = TRUE, o R aplica a correção de continuidade de Yates, que consiste em subtrair 1/2 do valor absoluto da diferença entre o número de sucessos observados e o esperado no cálculo do intervalo de escore:

Esse ajuste torna o intervalo mais conservador. A correção é útil quando:

  • o tamanho amostral é pequeno;
  • a proporção observada está próxima de 0 ou 1;
  • deseja-se um intervalo mais conservador (maior garantia de cobertura).

Vamos aplicar a função para o cálculo do intervalo de confiança na nossa situação prática. Como temos um \(\hat{p}\) não extremo e um tamanho de amostra razoável, não vamos aplicar a correção. Os comandos são:

# Intervalo de confiança bilateral
prop.test(x=Sucessos,
          n=n,
          conf.level = 0.95,
          correct = F)$conf.int
## [1] 0.6044684 0.8412847
## attr(,"conf.level")
## [1] 0.95
# Intervalo de confiança unilateral à esquerda
prop.test(x=Sucessos,
          n=n,
          conf.level = 0.95,
          correct = F,
          alternative = "less")$conf.int
## [1] 0.0000000 0.8278214
## attr(,"conf.level")
## [1] 0.95
# Intervalo de confiança unilateral à direita
prop.test(x=Sucessos,
          n=n,
          conf.level = 0.95,
          correct = F,
          alternative = "greater")$conf.int
## [1] 0.6275387 1.0000000
## attr(,"conf.level")
## [1] 0.95

As saídas apresentam o intervalo e o nível de confiança.

5.1.4 TESTES DE HIPÓTESE

Para uma única proporção populacional \(p\), podemos testar hipóteses do tipo:

\[ H_0: p = p_0 \quad \text{vs} \quad H_1: p \neq p_0, \ p > p_0 \text{ ou } p < p_0 \]

onde \(p_0\) é a proporção de referência ou meta da população.

Quando \(n\) é suficientemente grande, podemos usar a aproximação normal para a estatística de teste da proporção:

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

  • \(\hat{p}\): proporção observada na amostra
  • \(p_0\): proporção de referência
  • \(n\): tamanho da amostra

O valor de \(Z\) é então comparado com a distribuição normal padrão para obter o p-valor.

A função prop.test realiza o teste de hipótese para proporções usando o teste de escore, que é equivalente à \(Z^2\), que tem uma distribuição \(\chi^2_1\). Quando correct = TRUE, o termo \(-0.5\) é acrescido na estatística de teste.

  • Por padrão, prop.test aplica a correção de continuidade de Yates (correct = TRUE), tornando o teste mais conservador.
  • Em situações com \(\hat{p}\) não extremo e tamanho amostral razoável, podemos desativar a correção: correct = FALSE.

Vamos testar se a proporção de uso correto de capacete (\(\hat{p}\)) difere de uma meta \(p_0 = 0.70\). Pelos mesmos motivos de antes, não usaremos correação aqui também. Seguem os comandos:

# Teste bilateral 
prop.test(x=Sucessos,
          n=n,
          p = 0.70,
          alternative = "two.sided",
          correct = F)
## 
##  1-sample proportions test without continuity correction
## 
## data:  Sucessos out of n, null probability 0.7
## X-squared = 0.38095, df = 1, p-value = 0.5371
## alternative hypothesis: true p is not equal to 0.7
## 95 percent confidence interval:
##  0.6044684 0.8412847
## sample estimates:
##    p 
## 0.74
# Teste unilateral à esquerda (p < p0)
prop.test(x=Sucessos,
          n=n,
          p = 0.70,
          alternative = "less",
          correct = F)
## 
##  1-sample proportions test without continuity correction
## 
## data:  Sucessos out of n, null probability 0.7
## X-squared = 0.38095, df = 1, p-value = 0.7315
## alternative hypothesis: true p is less than 0.7
## 95 percent confidence interval:
##  0.0000000 0.8278214
## sample estimates:
##    p 
## 0.74
# Teste unilateral à direita (p > p0)
prop.test(x=Sucessos,
          n=n,
          p = 0.70,
          alternative = "greater",
          correct = F)
## 
##  1-sample proportions test without continuity correction
## 
## data:  Sucessos out of n, null probability 0.7
## X-squared = 0.38095, df = 1, p-value = 0.2685
## alternative hypothesis: true p is greater than 0.7
## 95 percent confidence interval:
##  0.6275387 1.0000000
## sample estimates:
##    p 
## 0.74

As saídas apresentam:

  • A estatística de teste.
  • O valor-p
  • Intervalo de confiança

5.1.5 EXERCÍCIO

Uma empresa está avaliando a taxa de sucesso no login de usuários em uma nova versão de seu aplicativo. Foram observados os seguintes dados de 60 usuários:

Usuarios <- c(
    1,0,1,0,1,1,0,1,0,1,
    1,1,0,1,0,1,1,0,1,0,
    1,1,1,0,1,0,1,1,0,1,
    1,0,1,0,1,1,0,1,1,0,
    1,1,0,1,0,1,1,0,1,1,
    1,1,0,1,0,1,1,0,1,1
  )
Dados = data.frame(Usuarios = Usuarios)
  1. Construa um intervalo de confiança de 95% bilateral para a proporção de logins bem-sucedidos na população. Interprete o intervalo.

  2. A empresa definiu uma meta mínima aceitável de sucesso nos logins de \(p_0 = 0.60\). Formule e teste a hipótese:

\[ H_0: p = 0.60 \quad \text{vs} \quad H_1: p > 0.60 \]

Com base no p-valor, decida se há evidências suficientes para rejeitar \(H_0\) ao nível de 5%.

5.2 DUAS POPULAÇÕES INDEPENDENTES

Quando trabalhamos com proporções em duas populações, nosso objetivo é realizar inferência sobre os parâmetros \(p_1\) e \(p_2\), que representam as verdadeiras proporções de sucessos nas populações 1 e 2, respectivamente. Construiremos:

  • intervalos de confiança para a diferença \(p_1 - p_2\);
  • testes de hipótese sobre \(p_1-p_2\), incluindo verificações de igualdade de proporções.

A lógica da inferência é inteiramente baseada na variabilidade natural das proporções amostrais \(\hat{p}_1\) e \(\hat{p}_2\), que surge porque estamos observando apenas amostras das populações. Por isso, compreender a distribuição conjunta dessas proporções é fundamental para aplicar corretamente os métodos inferenciais.

Antes, porém, precisamos garantir que certas suposições mínimas são atendidas.

5.2.1 SUPOSIÇÕES NECESSÁRIAS

Para utilizar a aproximação Normal e aplicar os intervalos e testes clássicos para a diferença de proporções, assumimos que:

  1. As observações são independentes dentro de cada população e entre populações.
  2. As variáveis seguem distribuições Bernoulli.
  3. As amostras representam corretamente suas populações.
  4. Tamanho amostral suficiente para que o Teorema Central do Limite atue.

Uma “regra de bolso” muito utilizada é verificar se \(n_1\hat{p_1}\geq10\), \(n_1(1-\hat{p_1})\geq10\), \(n_2\hat{p_2}\geq10\) e \(n_2(1-\hat{p_2})\geq10\)

5.2.2 SITUAÇÃO PRÁTICA MOTIVADORA

Imagine que uma equipe de saúde ocupacional está conduzindo um estudo sobre uso correto de equipamentos de proteção individual (EPIs) em dois setores de manutenção industrial: Setor A e Setor B. O objetivo é comparar a proporção de trabalhadores que utilizam corretamente o capacete de segurança em cada setor.

Foram observados 40 trabalhadores do Setor A e 50 trabalhadores do Setor B, registrando para cada trabalhador:

  • 1 → uso adequado do capacete durante 100% das atividades;
  • 0 → uso inadequado (retirou, afrouxou ou utilizou de forma incorreta).

Os dados coletados foram os seguintes:

# Setor A
UsoCapacete_A <- c(
  1,1,1,1,0,1,1,1,1,0,
  1,1,0,1,1,1,1,0,1,0,
  1,1,1,0,1,0,1,1,1,1,
  0,0,1,1,1,1,1,1,1,0
)

# Setor B
UsoCapacete_B <- c(
  1,1,0,0,1,1,1,0,1,1,
  1,1,1,0,1,1,1,1,1,1,
  1,0,0,1,1,1,0,1,1,1,
  0,1,1,1,0,0,1,0,1,1,
  1,1,0,1,0,1,1,1,0,1
)

Dados1 = data.frame(UsoCapacete_A=UsoCapacete_A)
Dados2 = data.frame(UsoCapacete_B=UsoCapacete_B)
n_A = length(Dados1$UsoCapacete_A)
Sucessos_A = sum(Dados1$UsoCapacete_A)
p_hat_A = mean(Dados1$UsoCapacete_A)
n_B = length(Dados2$UsoCapacete_B)
Sucessos_B = sum(Dados2$UsoCapacete_B)
p_hat_B = mean(Dados2$UsoCapacete_B)

5.2.3 INTERVALOS DE CONFIANÇA

Para comparar duas proporções populacionais \(p_1\) e \(p_2\), queremos construir um intervalo de confiança (IC) para a diferença \(p_1 - p_2\), que quantifica a incerteza da estimativa amostral \(\hat{p}_1 - \hat{p}_2\).

O IC clássico para a diferença de proporções é dado por:

\[ (\hat{p}_1 - \hat{p}_2) \pm z_{\alpha/2} \sqrt{\frac{\hat{p}_1(1 - \hat{p}_1)}{n_1} + \frac{\hat{p}_2(1 - \hat{p}_2)}{n_2}} \]

  • \(\hat{p}_1, \hat{p}_2\): proporções observadas nas amostras 1 e 2
  • \(z_{\alpha/2}\): valor crítico da Normal padrão (ex.: 1.96 para 95%)
  • \(n_1, n_2\): tamanhos das amostras 1 e 2

A função prop.test usa o IC clássico e quando correct = TRUE, o R aplica a correção de continuidade de Yates, que ajusta o cálculo para tornar o teste (e o intervalo obtido por inversão) mais conservador. Isso é útil quando:

  • os tamanhos amostrais são pequenos;
  • as proporções observadas estão próximas de 0 ou 1;
  • deseja-se um intervalo mais conservador (maior garantia de cobertura).

No nosso exemplo prático com os setores A e B, como temos tamanhos amostrais razoáveis e proporções não extremas, não vamos aplicar a correção. Podemos calcular o intervalo de confiança para a diferença de proporções com:

# Intervalo de confiança bilateral para a diferença de proporções (Setor A - Setor B)
prop.test(
  x = c(Sucessos_A, Sucessos_B),
  n = c(n_A, n_B),
  conf.level = 0.95,
  correct = FALSE
)$conf.int
## [1] -0.153018  0.213018
## attr(,"conf.level")
## [1] 0.95
# Intervalo de confiança unilateral à esquerda (p_A - p_B < 0)
prop.test(
  x = c(Sucessos_A, Sucessos_B),
  n = c(n_A, n_B),
  conf.level = 0.95,
  correct = FALSE,
  alternative = "less"
)$conf.int
## [1] -1.0000000  0.1835936
## attr(,"conf.level")
## [1] 0.95
# Intervalo de confiança unilateral à direita (p_A - p_B > 0)
prop.test(
  x = c(Sucessos_A, Sucessos_B),
  n = c(n_A, n_B),
  conf.level = 0.95,
  correct = FALSE,
  alternative = "greater"
)$conf.int
## [1] -0.1235936  1.0000000
## attr(,"conf.level")
## [1] 0.95

5.2.4 TESTES DE HIPÓTESE

Para duas proporções populacionais \(p_1\) e \(p_2\), podemos testar hipóteses do tipo:

\[ H_0: p_1 = p_2 \quad \text{vs} \quad H_1: p_1 \neq p_2, \ p_1 > p_2 \text{ ou } p_1 < p_2 \]

ou seja, o teste verifica se as proporções de sucesso nas duas populações são iguais ou diferentes.

Quando os tamanhos amostrais \(n_1\) e \(n_2\) são suficientemente grandes, podemos usar a aproximação normal para a estatística de teste da diferença de proporções:

\[ Z = = \frac{\hat{p}_1 - \hat{p}_2}{\sqrt{\hat{p}(1-\hat{p})\left(\frac{1}{n_1} + \frac{1}{n_2}\right)}} \]

  • \(\hat{p} = \frac{x_1 + x_2}{n_1 + n_2}\)
  • \(\hat{p}_1, \hat{p}_2\): proporções observadas nas amostras
  • \(n_1, n_2\): tamanhos das amostras

O valor de \(Z\) é então comparado com a distribuição normal padrão para obter o p-valor.

A função prop.test realiza o teste de score, que é equivalente à estatística de teste \(Z^2\), que tem uma distribuição \(\chi^2_1\), sob \(H_0\). Quando correct = TRUE, o termo \(-0.5\) é acrescido na estatística de teste.

  • Por padrão, prop.test aplica a correção de continuidade de Yates (correct = TRUE), tornando o teste mais conservador.
  • Em situações com \(\hat{p}\) não extremo e tamanho amostral razoável, podemos desativar a correção: correct = FALSE.

No nosso exemplo prático, com os setores A e B, podemos testar se há diferença significativa no uso correto do capacete usando:

# Teste bilateral para duas proporções (Setor A vs Setor B)
prop.test(
  x = c(Sucessos_A, Sucessos_B),
  n = c(n_A, n_B),
  alternative = "two.sided",
  correct = FALSE
)
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  c(Sucessos_A, Sucessos_B) out of c(n_A, n_B)
## X-squared = 0.10227, df = 1, p-value = 0.7491
## alternative hypothesis: two.sided
## 95 percent confidence interval:
##  -0.153018  0.213018
## sample estimates:
## prop 1 prop 2 
##   0.75   0.72
# Teste unilateral à esquerda (p_A - p_B < 0)
prop.test(
  x = c(Sucessos_A, Sucessos_B),
  n = c(n_A, n_B),
  alternative = "less",
  correct = FALSE
)
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  c(Sucessos_A, Sucessos_B) out of c(n_A, n_B)
## X-squared = 0.10227, df = 1, p-value = 0.6254
## alternative hypothesis: less
## 95 percent confidence interval:
##  -1.0000000  0.1835936
## sample estimates:
## prop 1 prop 2 
##   0.75   0.72
# Teste unilateral à direita (p_A - p_B > 0)
prop.test(
  x = c(Sucessos_A, Sucessos_B),
  n = c(n_A, n_B),
  alternative = "greater",
  correct = FALSE
)
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  c(Sucessos_A, Sucessos_B) out of c(n_A, n_B)
## X-squared = 0.10227, df = 1, p-value = 0.3746
## alternative hypothesis: greater
## 95 percent confidence interval:
##  -0.1235936  1.0000000
## sample estimates:
## prop 1 prop 2 
##   0.75   0.72

5.2.5 EXERCÍCIO

Duas fábricas, Fábrica A e Fábrica B, produzem o mesmo componente. Uma amostra de componentes em cada fábrica foi coletada e os resultados estão a seguir (1 = peça defeituosa, 0 = peça ok):

# Dados (amostras independentes)
FabricaA <- c(
  1,0,1,0,1,0,0,1,0,1,
  0,1,0,0,1,1,0,1,0,0,
  1,0,1,0,0,1,0,1,0,1,
  1,0,1,0,0,1,0,1,0,1
)

FabricaB <- c(
  0,1,0,0,1,0,0,0,1,0,
  1,0,0,1,0,0,0,1,0,0,
  0,1,0,0,0,1,0,0,1,0
)

Dados1 = data.frame(FabricaA = FabricaA)
Dados2 = data.frame(FabricaB = FabricaB)
  1. Construa um intervalo de confiança de 95% bilateral para a diferença das proporções de itens defeituosos entre as fábricas. Interprete o intervalo.

  2. A empresa acredita que a proporção de itens defeituosos da fabrica A é maior que a proporção de itens defeituosos da fábrica B. Com base no p-valor, decida se há evidências suficientes para rejeitar \(H_0\) ao nível de 5%.

6 CASO 3: VARIÂNCIAS EM POPULAÇÕES NORMAIS

Na prática estatística, muitas vezes precisamos avaliar a variabilidade de uma população ou comparar a variabilidade entre duas populações. Estamos interessados no parâmetro \(\sigma^2\), a variância populacional, que mede o grau de dispersão dos dados em torno da média.

A análise das variâncias é especialmente relevante quando:

  • Queremos testar se duas populações têm a mesma variabilidade antes de aplicar testes paramétricos de média.
  • Desejamos construir intervalos de confiança para a variância de uma população.

Podemos considerar dois cenários principais:

  1. Uma população
    Testes de hipótese ou intervalos de confiança para \(\sigma^2\).

  2. Duas populações independentes
    Comparação de variâncias \(\sigma_1^2\) e \(\sigma_2^2\) usando testes de igualdade de variâncias ou intervalos de confiança.

Em ambos os casos, supomos que os dados sigam uma distribuição normal. Este é um requisito essencial, pois a estatística de teste usada (qui-quadrado para uma população, F para duas populações) depende da normalidade.

O R implementa testes de variância de forma prática por meio da função VarTest() do pacote DescTools. Esta função permite:

  • Realizar testes de hipótese para a variância de uma população.
  • Comparar variâncias entre duas populações.
  • Obter intervalos de confiança para uma única variância e para a razão de duas variâncias.

Os argumentos da função VarTest() são:

  • x = vetor com os dados da amostra da primeira população;
  • y = vetor com os dados da amostra da segunda população (opcional, para comparação entre duas populações);
  • alternative = hipótese alternativa: "greater" para hipótese alternativa unilateral à direita, "less" para hipótese unilateral à esquerda, e "two.sided" para testar desigualdade bilateral;
  • ratio = valor numérico que representa a razão das variâncias sob a hipótese nula (padrão é 1);
  • sigma.squared = valor numérico que representa a variância populacional sob a hipótese nula (utilizado para uma população);
  • conf.level = nível de confiança para o intervalo de confiança.

As saídas da função VarTest() são:

  • statistic: a estatística X (uma população) ou F (duas populações) do teste;
  • p.value: valor-p do teste;
  • conf.int: intervalo de confiança. Se a hipótese alternativa for unilateral, o intervalo será unilateral;
  • estimate: estimativa da variância populacional (uma população) ou razão das variâncias amostrais (duas populações) ;
  • null.value: valor sob a hipótese nula;
  • alternative: hipótese alternativa.

Para retornar somente o intervalo de confiança, basta fazer VarTest(...)$conf.level.

6.1 UMA POPULAÇÃO

Quando trabalhamos com a variância de uma única população normal, nosso objetivo é realizar inferência sobre o parâmetro \(\sigma^2\), que representa a verdadeira variabilidade da população. Construiremos:

  • intervalos de confiança para \(\sigma^2\);
  • testes de hipótese sobre \(\sigma^2\).

A lógica da inferência é inteiramente baseada na variabilidade natural da amostra, que surge porque estamos observando apenas um subconjunto da população. Por isso, compreender a distribuição da estatística amostral associada à variância é fundamental para aplicar corretamente os métodos inferenciais.

Antes, porém, precisamos garantir que certas suposições mínimas são atendidas.

6.1.1 SUPOSIÇÕES NECESSÁRIAS

Para aplicar intervalos de confiança e testes clássicos para a variância, assumimos que:

  1. As observações são independentes.
  2. A população é normalmente distribuída.
  3. A amostra representa corretamente a população.

6.1.2 SITUAÇÃO PRÁTICA MOTIVADORA

Imagine que uma fábrica deseja avaliar a consistência na produção de peças metálicas. O objetivo é estimar a variância do diâmetro das peças, pois isso afeta diretamente a qualidade final e o encaixe em montagens subsequentes.

Para um estudo piloto, foram coletadas 15 peças produzidas durante um turno. Cada peça foi medida em milímetros quanto ao diâmetro externo. Os dados observados foram:

Diametros <- c(
  10.12,  9.94, 10.08,  9.97, 10.05,
   9.92, 10.11, 10.03, 10.07,  9.96,
  10.15, 10.02,  9.98, 10.09,  9.93
)
Dados <- data.frame(Diametros = Diametros)

O objetivo agora é construir intervalos de confiança e realizar testes de hipótese para o parâmetro populacional \(\sigma^2\), a verdadeira variância do diâmetro das peças produzidas pela fábrica.

Entretanto, antes precisamos verificar se há indícios de que os dados são normalmente distribuídos. Vamos aos diagnósticos:

ggplot(Dados, aes(x = Diametros)) +
  geom_density(fill="blue") +
  xlab("Diâmetros") + 
  ylab("Densidade") +
  theme_bw() +
  theme(text = element_text(size = 14))

ggplot(Dados, aes(sample=Diametros)) +
    stat_qq_band(fill="lightblue") +
    stat_qq_line() +
    stat_qq_point() +
    xlab("Quantis Teoricos")+
    ylab("Quantis Amostrais")+
    theme_bw() +
    theme(text = element_text(size = 14))

shapiro.test(Dados$Diametros)
## 
##  Shapiro-Wilk normality test
## 
## data:  Dados$Diametros
## W = 0.94705, p-value = 0.4793

O gráfico de densidade não aponta sérios desvios da simetria. O gráfico qq-plot aponta para a normalidade dos dados, que também é corroborada pelo teste de normalidade de Shapiro Wilk, a um nível de 5%. Então temos indícios de que os dados são normalmente distribuídos.

6.1.3 INTERVALOS DE CONFIANÇA

Para a variância de uma população normal \(\sigma^2\), queremos construir um intervalo de confiança (IC) que quantifique a incerteza da estimativa amostral \(s^2\).

O IC clássico para a variância populacional, baseado na distribuição qui-quadrado, é dado por:

\[ \left( \frac{(n-1)s^2}{\chi^2_{1-\alpha/2,\, n-1}},\; \frac{(n-1)s^2}{\chi^2_{\alpha/2,\, n-1}} \right) \]

  • \(s^2\): variância amostral
  • \(n\): tamanho da amostra
  • \(\chi^2_{\alpha/2,\, n-1}\) e \(\chi^2_{1-\alpha/2,\, n-1}\): valores críticos da distribuição qui-quadrado com \(n-1\) graus de liberdade

Este intervalo é exatamente derivado da distribuição amostral da estatística \((n-1)s^2/\sigma^2 \sim \chi^2_{n-1}\) e, portanto, fornece uma estimativa precisa da variância populacional quando a população é normal.

A função VarTest() calcula automaticamente este intervalo e também permite as versões unilaterais. Seguem os comandos para os cálculos dos intervalos:

# Intervalo de confiança bilateral (default)
VarTest(x=Dados$Diametros, 
        conf.level = 0.95)$conf.int
## [1] 0.002995526 0.013900126
## attr(,"conf.level")
## [1] 0.95
# Intervalo de confiança unilateral à esquerda (sigma^2 < sigma0^2)
VarTest(x=Dados$Diametros, conf.level = 0.95, alternative = "less")$conf.int
## [1] 0.00000000 0.01190753
## attr(,"conf.level")
## [1] 0.95
# Intervalo de confiança unilateral à direita (sigma^2 > sigma0^2)
VarTest(x=Dados$Diametros, conf.level = 0.95, alternative = "greater")$conf.int
## [1] 0.003303386         Inf
## attr(,"conf.level")
## [1] 0.95

As saídas apresentam o intervalo de confiança e o nível estabelecído.

6.1.4 TESTES DE HIPÓTESE

Para a variância populacional \(\sigma^2\), podemos testar hipóteses do tipo:

\[ H_0: \sigma^2 = \sigma_0^2 \quad \text{vs} \quad H_1: \sigma^2 \neq \sigma_0^2, \ \sigma^2 > \sigma_0^2 \text{ ou } \sigma^2 < \sigma_0^2 \]

onde \(\sigma_0^2\) é a variância de referência ou meta da população.

A estatística de teste clássica para a variância de uma população normal é baseada na distribuição qui-quadrado:

\[ \chi^2 = \frac{(n-1)s^2}{\sigma_0^2} \]

  • \(s^2\): variância amostral
  • \(\sigma_0^2\): variância de referência
  • \(n\): tamanho da amostra

O valor de \(\chi^2\) é comparado com a distribuição qui-quadrado com \(n-1\) graus de liberdade para obter o p-valor.

A função VarTest() realiza esse teste automaticamente, permitindo:

  • Teste bilateral (alternative = "two.sided")
  • Teste unilateral à esquerda (alternative = "less")
  • Teste unilateral à direita (alternative = "greater")

Exemplo prático na nossa situação:

Suponha que queremos testar se a variância do diâmetro das peças é igual a uma meta de \(\sigma_0^2 = 0.006\) mm² versus diferentes hipóteses alternativas:

# Teste bilateral (H0: sigma^2 dif 0.006)
VarTest(x=Dados$Diametros, 
        sigma.squared = 0.006, 
        alternative = "two.sided")
## 
##  One Sample Chi-Square test on variance
## 
## data:  Dados$Diametros
## X-squared = 13.04, df = 14, p-value = 0.8387
## alternative hypothesis: true variance is not equal to 0.006
## 95 percent confidence interval:
##  0.002995526 0.013900126
## sample estimates:
## variance of x 
##   0.005588571
# Teste unilateral à esquerda (H0: sigma^2 < 0.006)
VarTest(x=Dados$Diametros, 
        sigma.squared = 0.006, 
        alternative = "less")
## 
##  One Sample Chi-Square test on variance
## 
## data:  Dados$Diametros
## X-squared = 13.04, df = 14, p-value = 0.4766
## alternative hypothesis: true variance is less than 0.006
## 95 percent confidence interval:
##  0.00000000 0.01190753
## sample estimates:
## variance of x 
##   0.005588571
# Teste unilateral à direita (H0: sigma^2 > 0.006)
VarTest(x=Dados$Diametros, 
        sigma.squared = 0.006, 
        alternative = "greater")
## 
##  One Sample Chi-Square test on variance
## 
## data:  Dados$Diametros
## X-squared = 13.04, df = 14, p-value = 0.5234
## alternative hypothesis: true variance is greater than 0.006
## 95 percent confidence interval:
##  0.003303386         Inf
## sample estimates:
## variance of x 
##   0.005588571

6.1.5 EXERCÍCIO

Imagine que uma empresa de alimentos deseja avaliar a consistência do processo de envase de café moído. Cada pacote deveria conter exatamente 500 gramas, mas o maquinário apresentou sinais de instabilidade, sugerindo maior dispersão nos pesos embalados.

Para investigar essa inconsistência, foram coletados 20 pacotes consecutivos e pesados com alta precisão.

Os dados observados (em gramas) foram:

Pesos <- c(
  498.6, 501.2, 499.4, 500.8, 497.9,
  501.5, 499.1, 502.0, 498.8, 500.3,
  501.1, 499.0, 500.7, 498.5, 501.8,
  499.6, 500.9, 498.3, 501.4, 499.2
)

Dados <- data.frame(Pesos = Pesos)
  1. Construa um intervalo de 95% de confiança para a verdadeira variância populacional.
  2. Teste a hipótese de a variância populacional ser diferente de 2, a um nível de 5%.

6.2 DUAS POPULAÇÕES INDEPENDENTES

Quando trabalhamos com variâncias de duas populações normais independentes, nosso objetivo é realizar inferência sobre os parâmetros \(\sigma_1^2\) e \(\sigma_2^2\), que representam as verdadeiras variâncias nas populações 1 e 2, respectivamente. Construiremos:

  • intervalos de confiança para a razão \(\sigma_1^2 / \sigma_2^2\);
  • testes de hipótese sobre \(\sigma_1^2 / \sigma_2^2\), incluindo verificações de igualdade de variâncias.

A lógica da inferência é inteiramente baseada na variabilidade natural das variâncias amostrais \(s_1^2\) e \(s_2^2\), que surge porque estamos observando apenas amostras das populações. Por isso, compreender a distribuição conjunta dessas variâncias (razão \(s_1^2 / s_2^2\)) é fundamental para aplicar corretamente os métodos inferenciais.

Antes, porém, precisamos garantir que certas suposições mínimas são atendidas.

6.2.1 SUPOSIÇÕES NECESSÁRIAS

Para aplicar intervalos e testes clássicos para a comparação de variâncias, assumimos que:

  1. As observações são independentes dentro de cada população e entre populações.
  2. As populações seguem distribuições normais.
  3. As amostras representam corretamente suas populações.

6.2.2 SITUAÇÃO PRÁTICA MOTIVADORA

Imagine que uma fábrica deseja avaliar a consistência da produção em duas máquinas diferentes: Máquina A e Máquina B. O objetivo é comparar a variabilidade no diâmetro das peças produzidas por cada máquina.

Foram coletadas 15 peças da Máquina A e 18 peças da Máquina B, medindo o diâmetro em milímetros:

# Máquina A
Diametros_A <- c(
  10.12,  9.94, 10.08, 10.01,  9.92,
  10.15,  9.98, 10.05,  9.90, 10.06,
  10.11,  9.96, 10.09, 10.03, 10.14
)

# Máquina B
Diametros_B <- c(
  9.88, 10.07,  9.95, 10.12,  9.90,
 10.10, 10.04, 10.15,  9.93, 10.08,
 10.11,  9.92, 10.05, 10.09,  9.97,
 10.13, 10.02,  9.94
)

Dados1 = data.frame(Diametros_A=Diametros_A)
Dados2 = data.frame(Diametros_B=Diametros_B)

O objetivo agora é construir intervalos de confiança e realizar testes de hipótese para a razão \(\sigma1^2/\sigma_2^2\), a verdadeira razão entre as variâncias dos diâmetros das peças produzidas pelas duas empresas.

Entretanto, antes, precisamos verificar se há indícios de que os dados de ambas as amostras são normalmente distribuídos. Vamos aos diagnósticos:

Para a primeira amostra:

ggplot(Dados1, aes(x = Diametros_A)) +
  geom_density(fill="blue") +
  xlab("Diâmetros") + 
  ylab("Densidade") +
  theme_bw() +
  theme(text = element_text(size = 14))

ggplot(Dados1, aes(sample=Diametros_A)) +
    stat_qq_band(fill="lightblue") +
    stat_qq_line() +
    stat_qq_point() +
    xlab("Quantis Teoricos")+
    ylab("Quantis Amostrais")+
    theme_bw() +
    theme(text = element_text(size = 14))

shapiro.test(Dados1$Diametros_A)
## 
##  Shapiro-Wilk normality test
## 
## data:  Dados1$Diametros_A
## W = 0.95042, p-value = 0.5311

Para a segunda amostra:

ggplot(Dados2, aes(x = Diametros_B)) +
  geom_density(fill="blue") +
  xlab("Diâmetros") + 
  ylab("Densidade") +
  theme_bw() +
  theme(text = element_text(size = 14))

ggplot(Dados2, aes(sample=Diametros_B)) +
    stat_qq_band(fill="lightblue") +
    stat_qq_line() +
    stat_qq_point() +
    xlab("Quantis Teoricos")+
    ylab("Quantis Amostrais")+
    theme_bw() +
    theme(text = element_text(size = 14))

shapiro.test(Dados2$Diametros_B)
## 
##  Shapiro-Wilk normality test
## 
## data:  Dados2$Diametros_B
## W = 0.92416, p-value = 0.1532

Em ambas as amostras, os gráficos de densidade não apontam sérios desvios da simetria. Os gráficos qq-plot apontam para a normalidade dos dados, que também é corroborada pelos testes de normalidade de Shapiro Wilk, a um nível de 5%. Então temos indícios de que os dados das duas populações são normalmente distribuídos.

6.2.3 INTERVALOS DE CONFIANÇA

Para comparar as variâncias de duas populações normais \(\sigma_1^2\) e \(\sigma_2^2\), queremos construir um intervalo de confiança (IC) para a razão de variâncias \(\sigma_1^2 / \sigma_2^2\), que quantifica a incerteza da estimativa amostral \(s_1^2 / s_2^2\).

O IC clássico para a razão de variâncias é baseado na distribuição F:

\[ \left( \frac{s_1^2}{s_2^2} \cdot \frac{1}{F_{1-\alpha/2,\, n_1-1,\, n_2-1}}, \quad \frac{s_1^2}{s_2^2} \cdot F_{\alpha/2,\, n_1-1,\, n_2-1} \right) \]

  • \(s_1^2, s_2^2\): variâncias amostrais das populações 1 e 2
  • \(n_1, n_2\): tamanhos das amostras
  • \(F_{\alpha/2,\, n_1-1,\, n_2-1}\) e \(F_{1-\alpha/2,\, n_1-1,\, n_2-1}\): valores críticos da distribuição F com \(n_1-1\) e \(n_2-1\) graus de liberdade

A função VarTest() calcula automaticamente este intervalo e também permite IC unilateral à esquerda ou à direita, útil quando o interesse é avaliar se a variância de uma população é maior ou menor que a outra.

No nosso exemplo prático com as Máquinas A e B, como as distribuições são aproximadamente normais, podemos calcular o IC para a razão de variâncias com:

# Intervalo de confiança bilateral para a razão de variâncias (Máquina A / Máquina B)
VarTest(x=Dados1$Diametros_A,
        y=Dados2$Diametros_B,
        conf.level = 0.95)$conf.int
## [1] 0.3117689 2.4889663
## attr(,"conf.level")
## [1] 0.95
# Intervalo de confiança unilateral à esquerda (sigma_A^2 / sigma_B^2 < 1)
VarTest(x=Dados1$Diametros_A,
        y=Dados2$Diametros_B, 
        conf.level = 0.95, 
        alternative = "less")$conf.int
## [1] 0.000000 2.083833
## attr(,"conf.level")
## [1] 0.95
# Intervalo de confiança unilateral à direita (sigma_A^2 / sigma_B^2 > 1)
VarTest(x=Dados1$Diametros_A,
        y=Dados2$Diametros_B, 
        conf.level = 0.95, 
        alternative = "greater")$conf.int
## [1] 0.3684867       Inf
## attr(,"conf.level")
## [1] 0.95

6.2.4 TESTES DE HIPÓTESE

Para comparar as variâncias de duas populações normais independentes \(\sigma_1^2\) e \(\sigma_2^2\), podemos testar hipóteses do tipo:

\[ H_0: \sigma_1^2 = \sigma_2^2 \quad \text{vs} \quad H_1: \sigma_1^2 \neq \sigma_2^2, \ \sigma_1^2 > \sigma_2^2 \text{ ou } \sigma_1^2 < \sigma_2^2 \]

A estatística de teste clássica para comparar duas variâncias é baseada na distribuição F:

\[ F = \frac{s_1^2}{s_2^2} \sim F_{n_1-1,\, n_2-1} \quad \text{sob } H_0: \sigma_1^2 = \sigma_2^2 \]

  • \(s_1^2, s_2^2\): variâncias amostrais das populações 1 e 2
  • \(n_1, n_2\): tamanhos das amostras

O valor de \(F\) é comparado com a distribuição F com \(n_1-1\) e \(n_2-1\) graus de liberdade para obter o p-valor.

A função VarTest() realiza esse teste automaticamente, permitindo:

  • Teste bilateral (alternative = "two.sided")
  • Teste unilateral à esquerda (alternative = "less")
  • Teste unilateral à direita (alternative = "greater")

Exemplo prático na nossa situação (Máquinas A e B):

# Teste bilateral (H0: sigma_A^2 = sigma_B^2)
VarTest(x=Dados1$Diametros_A,
        y=Dados2$Diametros_B)
## 
##  F test to compare two variances
## 
## data:  x and y
## F = 0.85819, num df = 14, denom df = 17, p-value = 0.7815
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.3117689 2.4889663
## sample estimates:
## ratio of variances 
##          0.8581878
# Teste unilateral à esquerda (H0: sigma_A^2 < sigma_B^2)
VarTest(x=Dados1$Diametros_A,
        y=Dados2$Diametros_B,
        alternative="less")
## 
##  F test to compare two variances
## 
## data:  x and y
## F = 0.85819, num df = 14, denom df = 17, p-value = 0.3908
## alternative hypothesis: true ratio of variances is less than 1
## 95 percent confidence interval:
##  0.000000 2.083833
## sample estimates:
## ratio of variances 
##          0.8581878
# Teste unilateral à direita (H0: sigma_A^2 > sigma_B^2)
VarTest(x=Dados1$Diametros_A,
        y=Dados2$Diametros_B,
        alternative="greater")
## 
##  F test to compare two variances
## 
## data:  x and y
## F = 0.85819, num df = 14, denom df = 17, p-value = 0.6092
## alternative hypothesis: true ratio of variances is greater than 1
## 95 percent confidence interval:
##  0.3684867       Inf
## sample estimates:
## ratio of variances 
##          0.8581878

6.2.5 EXERCÍCIO

Uma empresa produz baterias de íons de lítio em duas linhas de montagem distintas:
- Linha X (processo mais antigo)
- Linha Y (processo modernizado e mais automatizado)

Foram coletadas:

  • 40 baterias da Linha X
  • 50 baterias da Linha Y

Os dados são:

# Linha X (maior variabilidade)
Cap_X <- c(
  2998, 3012, 3005, 2987, 3021, 3009, 3018, 2994, 2979, 3030,
  3011, 3002, 2988, 3024, 2993, 3020, 2985, 3007, 3015, 2990,
  3001, 3022, 3010, 2996, 2989, 3008, 3027, 2978, 3003, 3019,
  2986, 3025, 2992, 3006, 3014, 2984, 3032, 3004, 2991, 3023
)

# Linha Y (menor variabilidade)
Cap_Y <- c(
  3005, 3010, 3001, 3007, 2998, 3012, 3003, 3004, 3008, 2999,
  3006, 3011, 2997, 3002, 3009, 3013, 3000, 3005, 3006, 2998,
  3010, 3001, 2999, 3004, 3007, 2997, 3002, 3011, 3003, 3012,
  3004, 2998, 3006, 3005, 3010, 3007, 2999, 3008, 3002, 3013,
  3001, 3000, 3009, 3004, 2997, 3006, 3012, 3003, 3005, 2998
)

DadosX <- data.frame(Capacidade = Cap_X)
DadosY <- data.frame(Capacidade = Cap_Y)
  1. Construa um intervalo de confiança 95% para a razão das variâncias.
  2. Teste a hipótese de que a nova linha (Y) apresenta menor variabilidade na capacidade das baterias. Considere \(\alpha=5\%\)

7 CASO 4: POPULAÇÕES NORMAIS COM VARIÂNCIAS DESCONHECIDAS

Na prática estatística, muitas vezes precisamos comparar médias de populações normais quando as variâncias são desconhecidas. Nesse contexto, o parâmetro de interesse é \(\mu\), a média populacional, enquanto a variabilidade é estimada a partir dos dados amostrais.

A análise de médias com variâncias desconhecidas é especialmente relevante quando:

  1. Uma população
    • Podemos construir intervalos de confiança para a média usando a distribuição t de Student.
    • Podemos realizar testes de hipótese para a média quando a variância é desconhecida.
  2. Duas populações dependentes (pareadas)
    • Quando as observações de uma população estão naturalmente pareadas com as da outra (ex.: antes e depois de um tratamento no mesmo indivíduo), usamos o teste t pareado.
    • Neste caso, calculamos a diferença para cada par e aplicamos o teste t de uma amostra sobre essas diferenças.
    • Podemos construir intervalos de confiança e testes de hipótese para a diferença das médias das duas populações.
  3. Duas populações independentes
    • Podemos comparar médias de duas populações independentes .
    • Existem duas abordagens dependendo se assumimos variâncias iguais ou diferentes.
    • Em todos os casos, podemos construir intervalos de confiança e testes de hipótese para a diferença das médias.

Em todos os casos, supomos que os dados sigam uma distribuição normal, pois a estatística de teste t depende dessa suposição.

Os argumentos da função t.test() são:

  • x = vetor com os dados da amostra da primeira população (utilize este argumento se você tiver somente uma população);
  • y = vetor com os dados da amostra da segunda população (opcional);
  • alternative = hipótese alternativa: "greater" para teste unilateral à direita, "less" para teste unilateral à esquerda e "two.sided" para teste bilateral (padrão);
  • mu = número que representa o valor da média ou da diferença das médias sob a hipótese nula (padrão é 0);
  • conf.level = nível de confiança do intervalo (padrão é 0.95);
  • paired = se TRUE, realiza o teste t pareado (quando x e y são dependentes);
  • var.equal = se TRUE, assume variâncias populacionais iguais (caso de teste t com variâncias iguais); se FALSE, realiza o teste t de Welch (variâncias desiguais).

As saídas da função t.test() são:

  • statistic: a estatística T;
  • p.value: valor-p do teste;
  • conf.int: intervalo de confiança para a média ou diferença de médias;
  • estimate: estimativa da média ou da diferença das médias;
  • null.value: valor de \(\mu_0\) sob a hipótese nula;
  • alternative: hipótese alternativa;
  • method: tipo de teste t realizado (uma amostra, duas amostras, pareado, Welch etc.);
  • data.name: nome dos objetos analisados.

Para retornar o intervalo de confiança somente, basta usar t.test(...)$conf.int.

7.1 UMA POPULAÇÃO

Quando trabalhamos com a média de uma única população normal e variância desconhecida, nosso objetivo é realizar inferência sobre o parâmetro \(\mu\), que representa a média verdadeira da população. Podemos construir:

  • intervalos de confiança para \(\mu\);
  • testes de hipótese sobre \(\mu\).

A lógica da inferência é baseada na variabilidade observada na amostra, que surge porque estamos observando apenas um subconjunto da população. Por isso, compreender a distribuição da estatística amostral associada à média (distribuição t de Student) é fundamental para aplicar corretamente os métodos inferenciais.

Antes de prosseguir, é importante garantir que certas suposições mínimas são atendidas.

7.1.1 SUPOSIÇÕES NECESSÁRIAS

Para aplicar intervalos de confiança e testes t para a média, assumimos que:

  1. As observações são independentes.
  2. A população é normalmente distribuída.
  3. A amostra representa corretamente a população.

7.1.2 SITUAÇÃO PRÁTICA MOTIVADORA

Um laboratório de análises clínicas deseja avaliar a concentração de glicose no sangue de pacientes em jejum. Os valores medidos têm variação natural entre os indivíduos.

Para um estudo piloto, foram coletadas 12 medições de diferentes pacientes. Os dados observados (em mg/dL) foram:

Glicose <- c(
  92.5, 105.2, 98.7, 110.3, 101.6, 97.4,
  104.1, 99.8, 108.7, 95.3, 102.9, 100.5
)
Dados <- data.frame(Glicose = Glicose)

O objetivo agora é construir intervalos de confiança e realizar testes de hipótese para o parâmetro populacional \(\mu\), a verdadeira média da concentração de glicose em jejum.

Entretanto, antes precisamos verificar se há indícios de que os dados são normalmente distribuídos. Vamos aos diagnósticos:

ggplot(Dados, aes(x = Glicose)) +
  geom_density(fill="blue") +
  xlab("Diâmetros") + 
  ylab("Densidade") +
  theme_bw() +
  theme(text = element_text(size = 14))

ggplot(Dados, aes(sample=Glicose)) +
    stat_qq_band(fill="lightblue") +
    stat_qq_line() +
    stat_qq_point() +
    xlab("Quantis Teoricos")+
    ylab("Quantis Amostrais")+
    theme_bw() +
    theme(text = element_text(size = 14))

shapiro.test(Dados$Glicose)
## 
##  Shapiro-Wilk normality test
## 
## data:  Dados$Glicose
## W = 0.98838, p-value = 0.9993

O gráfico de densidade não aponta sérios desvios da simetria. O gráfico qq-plot aponta para a normalidade dos dados, que também é corroborada pelo teste de normalidade de Shapiro Wilk, a um nível de 5%. Então temos indícios de que os dados são normalmente distribuídos.

7.1.3 INTERVALOS DE CONFIANÇA

Quando a variância populacional \(\sigma^2\) é desconhecida, queremos construir um intervalo de confiança (IC) para a média populacional \(\mu\), que quantifique a incerteza da estimativa amostral \(\bar{x}\).

O IC clássico para a média, baseado na distribuição t de Student, é dado por:

\[ \left( \bar{x} - t_{1-\alpha/2,\, n-1} \frac{s}{\sqrt{n}}, \;\; \bar{x} + t_{1-\alpha/2,\, n-1} \frac{s}{\sqrt{n}} \right) \]

  • \(\bar{x}\): média amostral
  • \(s\): desvio padrão amostral
  • \(n\): tamanho da amostra
  • \(t_{1-\alpha/2,\, n-1}\): valor crítico da distribuição t de Student com \(n-1\) graus de liberdade

Este intervalo é derivado da estatística:

\[ t = \frac{\bar{x} - \mu}{s/\sqrt{n}} \sim t_{n-1} \]

Portanto, fornece uma estimativa precisa da média populacional mesmo quando a variância não é conhecida.

No R, a função t.test() calcula automaticamente intervalos de confiança bilaterais e unilaterais. Seguem exemplos usando os dados de exemplo:

# Intervalo de confiança bilateral (default)
t.test(Dados$Glicose, 
       conf.level = 0.95)$conf.int
## [1]  98.10079 104.73255
## attr(,"conf.level")
## [1] 0.95
# Intervalo de confiança unilateral à esquerda (mu < mu0)
t.test(Dados$Glicose, 
       alternative = "less")$conf.int
## [1]     -Inf 104.1222
## attr(,"conf.level")
## [1] 0.95
# Intervalo de confiança unilateral à direita (mu > mu0)
t.test(Dados$Glicose, 
       alternative = "greater")$conf.int
## [1] 98.71109      Inf
## attr(,"conf.level")
## [1] 0.95

As saídas apresentam o intervalo de confiança e o nível estabelecido.

7.1.4 TESTES DE HIPÓTESE

Quando a variância populacional \(\sigma^2\) é desconhecida, podemos testar hipóteses sobre a média populacional \(\mu\):

\[ H_0: \mu = \mu_0 \quad \text{vs} \quad H_1: \mu \neq \mu_0, \ \mu > \mu_0 \text{ ou } \mu < \mu_0 \]

onde \(\mu_0\) é a média de referência ou meta da população.

A estatística de teste é a estatística t de Student:

\[ t = \frac{\bar{x} - \mu_0}{s/\sqrt{n}} \sim t_{n-1} \]

  • \(\bar{x}\): média amostral
  • \(s\): desvio padrão amostral
  • \(n\): tamanho da amostra

O valor de \(t\) é comparado com a distribuição t com \(n-1\) graus de liberdade para obter o p-valor.

A função t.test() realiza esse teste automaticamente, permitindo:

  • Teste bilateral (alternative = "two.sided")
  • Teste unilateral à esquerda (alternative = "less")
  • Teste unilateral à direita (alternative = "greater")

Suponha que queremos testar se a média da glicose em jejum é igual a um valor de \(\mu_0 = 98\) mg/dL contra todas as hipóteses alternativas possíveis:

# Teste bilateral (H0: mu = 98)
t.test(Dados$Glicose, 
       mu = 98, 
       alternative = "two.sided")
## 
##  One Sample t-test
## 
## data:  Dados$Glicose
## t = 2.2679, df = 11, p-value = 0.04447
## alternative hypothesis: true mean is not equal to 98
## 95 percent confidence interval:
##   98.10079 104.73255
## sample estimates:
## mean of x 
##  101.4167
# Teste unilateral à esquerda (H0: mu < 98)
t.test(Dados$Glicose, 
       mu = 98, 
       alternative = "less")
## 
##  One Sample t-test
## 
## data:  Dados$Glicose
## t = 2.2679, df = 11, p-value = 0.9778
## alternative hypothesis: true mean is less than 98
## 95 percent confidence interval:
##      -Inf 104.1222
## sample estimates:
## mean of x 
##  101.4167
# Teste unilateral à direita (H0: mu > 98)
t.test(Dados$Glicose, 
       mu = 98, 
       alternative = "greater")
## 
##  One Sample t-test
## 
## data:  Dados$Glicose
## t = 2.2679, df = 11, p-value = 0.02224
## alternative hypothesis: true mean is greater than 98
## 95 percent confidence interval:
##  98.71109      Inf
## sample estimates:
## mean of x 
##  101.4167

7.1.5 EXERCÍCIO

Uma pesquisadora em nutrição esportiva deseja avaliar o nível de creatina sérica de atletas amadores que iniciaram recentemente um programa de suplementação. Sabe-se que há variação natural entre indivíduos, e a pesquisadora quer verificar se os níveis médios observados estão próximos dos valores esperados em indivíduos saudáveis.

Para isso, ela coleta 10 medições independentes de creatina sérica (em mg/dL) após quatro semanas de suplementação.

Os dados observados foram:

Creatina <- c(
  0.75, 1.12, 0.94, 1.08, 0.74,
  0.97, 1.04, 1.18, 0.91, 1.10
)
Dados <- data.frame(Creatina = Creatina)
  1. Construa o intervalo de confiança bilateral para a média de concentração de creatina sérica.

  2. Teste a hipótese de que a concentração média de creatina sérica é diferente de 1 mg/dL. Use um nível de significância de 5%.

7.2 DUAS POPULAÇÕES DEPENDENTES (AMOSTRAS PAREADAS)

Quando trabalhamos com duas populações dependentes (isto é, duas medições pareadas nos mesmos indivíduos, como antes/depois de um tratamento), nosso objetivo é realizar inferência sobre o parâmetro \(\mu_d\), que representa a média verdadeira das diferenças entre as duas medições. Podemos construir:

  • intervalos de confiança para \(\mu_d\);
  • testes de hipótese sobre \(\mu_d\) usando o teste t pareado.

A inferência é baseada na variabilidade das diferenças dentro de cada par, e a estatística relevante é a média das diferenças \(\bar{D}\), cuja distribuição sob normalidade das diferenças segue uma t de Student com \(n-1\) graus de liberdade. Assim, é como se construíssemos um teste t para uma única amostra (a amostra das diferenças).

7.2.1 SUPOSIÇÕES NECESSÁRIAS

Para aplicar o intervalo de confiança e o teste t pareado, assumimos:

  1. As medições são pareadas corretamente (mesmo indivíduo antes/depois, ou dois métodos aplicados na mesma unidade).
  2. As diferenças são independentes entre os pares.
  3. As diferenças \(D_i = X_{i1} - X_{i2}\) são aproximadamente normais.
  4. A amostra de pares representa adequadamente a população.

Importante: não é necessário que as duas variáveis originais sejam normais, apenas as diferenças.

7.2.2 SITUAÇÃO PRÁTICA MOTIVADORA

Um fisioterapeuta esportivo deseja avaliar se um programa de fortalecimento muscular de 6 semanas melhora o tempo de reação de atletas amadores. O tempo de reação foi medido em milissegundos (ms) usando o mesmo equipamento, antes e depois do programa de treinamento. Como cada atleta é avaliado duas vezes, trata-se de um caso de amostras pareadas.

Abaixo estão os dados coletados de 12 atletas:

Tempo_antes <- c(255, 240, 262, 274, 248, 260,
251, 243, 270, 258, 266, 249)

Tempo_depois <- c(238, 231, 250, 260, 240, 252,
243, 237, 259, 249, 255, 241)

Dados <- data.frame(antes = Tempo_antes, depois = Tempo_depois)
Dados$Diferenca = Dados$antes - Dados$depois

Considere o objetivo de investigar, a partir de intervalos de confiança e teste de hipótese, o comportamento da diferença das médias populacionais de desempenho desses atletas.

Entretanto, antes precisamos verificar se há indícios de que as diferenças são normalmente distribuídas. Vamos aos diagnósticos:

ggplot(Dados, aes(x = Diferenca)) +
  geom_density(fill="blue") +
  xlab("Diâmetros") + 
  ylab("Densidade") +
  theme_bw() +
  theme(text = element_text(size = 14))

ggplot(Dados, aes(sample=Diferenca)) +
    stat_qq_band(fill="lightblue") +
    stat_qq_line() +
    stat_qq_point() +
    xlab("Quantis Teoricos")+
    ylab("Quantis Amostrais")+
    theme_bw() +
    theme(text = element_text(size = 14))

shapiro.test(Dados$Diferenca)
## 
##  Shapiro-Wilk normality test
## 
## data:  Dados$Diferenca
## W = 0.89851, p-value = 0.1518

O gráfico de densidade não aponta um desvio muito sério de simetria. O gráfico qq-plot aponta para a normalidade dos dados (exceto por um desvio que não é grave), que também é corroborada pelo teste de normalidade de Shapiro Wilk, a um nível de 5%. Então temos indícios de que as diferenças são normalmente distribuídas.

7.2.3 INTERVALOS DE CONFIANÇA

Quando trabalhamos com duas populações dependentes, isto é, duas medições pareadas sobre os mesmos indivíduos, queremos construir um intervalo de confiança (IC) para a média das diferenças \(\mu_d\). Essa quantidade representa a diferença média verdadeira entre as duas condições.

Para cada par, definimos:

\[ D_i = X_{i1} - X_{i2} \]

e usamos a média das diferenças \(\bar{D}\), o desvio padrão das diferenças \(s_D\) e o número de pares \(n\).
O IC clássico baseado na distribuição t de Student é:

\[ \left( \bar{D} - t_{1-\alpha/2,\, n-1}\frac{s_D}{\sqrt{n}},\; \bar{D} + t_{1-\alpha/2,\, n-1}\frac{s_D}{\sqrt{n}} \right) \]

onde:

  • \(\bar{D}\): média das diferenças
  • \(s_D\): desvio padrão das diferenças
  • \(n\): número de pares
  • \(t_{1-\alpha/2,\, n-1}\): valor crítico da distribuição t com \(n-1\) g.l.

Esse intervalo deriva da estatística:

\[ t = \frac{\bar{D} - \mu_d}{s_D/\sqrt{n}} \sim t_{n-1} \]

e fornece uma estimativa inferencial válida mesmo quando a variância populacional das diferenças é desconhecida.

No R, a função t.test() calcula automaticamente intervalos de confiança bilaterais e unilaterais no contexto pareado.

#Intervalo de confiança bilateral 
t.test(Dados$antes, 
       Dados$depois, 
       paired = TRUE, 
       conf.level = 0.95)$conf.int
## [1]  8.121092 12.045575
## attr(,"conf.level")
## [1] 0.95
#Intervalo unilateral à esquerda
t.test(Dados$antes, 
       Dados$depois, 
       paired = TRUE, 
       alternative = "less",
       conf.level = 0.95)$conf.int
## [1]     -Inf 11.68442
## attr(,"conf.level")
## [1] 0.95
#Intervalo unilateral à direita
t.test(Dados$antes, 
       Dados$depois, 
       paired = TRUE, 
       alternative = "greater",
       conf.level = 0.95)$conf.int
## [1] 8.482251      Inf
## attr(,"conf.level")
## [1] 0.95

As saídas apresentam o intervalo de confiança adequado ao tipo de hipótese escolhido.

7.2.4 TESTES DE HIPÓTESE

Quando temos duas populações dependentes, isto é, duas medições pareadas sobre os mesmos indivíduos, podemos testar hipóteses sobre a média das diferenças:

\[ H_0: \mu_d = 0 \qquad \text{vs} \qquad H_1: \mu_d \neq 0,\ \mu_d > 0\ \text{ou}\ \mu_d < 0 \]

onde:

  • \(\mu_d\) é a média populacional das diferenças
  • \(D_i = X_{i1} - X_{i2}\) é a diferença para cada par

A estatística de teste é a estatística t de Student aplicada às diferenças:

\[ t = \frac{\bar{D} - \mu_{d,0}}{s_D / \sqrt{n}} \sim t_{n-1} \]

  • \(\bar{D}\): média das diferenças
  • \(s_D\): desvio padrão das diferenças
  • \(n\): número de pares
  • \(\mu_{d,0}\): valor hipotético da diferença média (geralmente 0)

O valor da estatística t é comparado com a distribuição t com \(n-1\) graus de liberdade para obter o p-valor.

A função t.test() realiza automaticamente o teste t pareado, permitindo:

  • Teste bilateral (alternative = "two.sided")
  • Teste unilateral à esquerda (alternative = "less")
  • Teste unilateral à direita (alternative = "greater")

Suponha agora que queremos testar se o valor médio antes é igual ao valor médio depois, contra todas as alternativas possíveis. Considerando os vetores antes e depois:

#Teste bilateral (H0: mu_d dif 0)
t.test(Dados$antes,
       Dados$depois,
       paired = TRUE,
       alternative = "two.sided")
## 
##  Paired t-test
## 
## data:  Dados$antes and Dados$depois
## t = 11.31, df = 11, p-value = 2.133e-07
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
##   8.121092 12.045575
## sample estimates:
## mean difference 
##        10.08333
#Teste unilateral à esquerda (H1: mu_d < 0)
t.test(Dados$antes,
       Dados$depois,
       paired = TRUE,
       alternative = "less")
## 
##  Paired t-test
## 
## data:  Dados$antes and Dados$depois
## t = 11.31, df = 11, p-value = 1
## alternative hypothesis: true mean difference is less than 0
## 95 percent confidence interval:
##      -Inf 11.68442
## sample estimates:
## mean difference 
##        10.08333
#Teste unilateral à direita (H1: mu_d > 0)
t.test(Dados$antes,
       Dados$depois,
       paired = TRUE,
       alternative = "greater")
## 
##  Paired t-test
## 
## data:  Dados$antes and Dados$depois
## t = 11.31, df = 11, p-value = 1.066e-07
## alternative hypothesis: true mean difference is greater than 0
## 95 percent confidence interval:
##  8.482251      Inf
## sample estimates:
## mean difference 
##        10.08333

7.2.5 EXERCÍCIO

Imagine que a Secretaria de Saúde de um estado está implementando um novo curso de capacitação para aplicação de vacinas. A ideia é verificar se esse treinamento realmente melhora o tempo médio de atendimento dos profissionais em uma sala de vacinação. Foram selecionados 15 profissionais, e o tempo (em minutos) para aplicar uma dose em um paciente foi medido antes e depois do treinamento. Os dados coletados são:

dados_treinamento <- data.frame(
  Profissional = 1:15,
  Tempo_Antes = c(12.1, 11.3, 13.5, 14.2, 12.8, 11.9, 13.0, 14.5, 12.2, 13.7,
                  11.5, 12.9, 13.1, 14.0, 12.4),
  Tempo_Depois = c(10.4, 10.7, 11.9, 12.8, 11.2, 11.0, 12.5, 12.7, 11.1, 12.6,
                   10.9, 11.7, 12.2, 12.3, 11.5)
)

A um nível de 5%, teste se o treinamento reduziu significativamente o tempo médio de aplicação de vacinas.

7.3 DUAS POPULAÇÕES INDEPENDENTES

Quando trabalhamos com duas populações independentes (isto é, observações do Grupo 1 não têm relação com observações do Grupo 2), nosso objetivo é realizar inferência sobre o parâmetro
\[ \mu_1 - \mu_2, \]
que representa a diferença verdadeira entre as médias populacionais dos dois grupos.

Quando as duas populações são normais e as variâncias populacionais são desconhecidas, utilizamos o teste t para duas amostras independentes (com variâncias iguais ou desiguais). O R faz essa escolha automaticamente via var.equal = TRUE ou FALSE na função t.test().

Podemos construir:

  • intervalos de confiança para \(\mu_1 - \mu_2\);
  • testes de hipótese sobre \(\mu_1 - \mu_2\) usando o teste t de duas amostras independentes.

7.3.1 SUPOSIÇÕES NECESSÁRIAS

Para aplicar o intervalo de confiança e o teste t para duas populações independentes, assumimos:

  1. Independência entre observações dentro de cada grupo e entre os grupos.
  2. Amostras aleatórias representativas das duas populações.
  3. As populações de cada grupo são aproximadamente normais, especialmente se \(n\) é pequeno.
  4. As variâncias podem ser consideradas:
    • iguais → teste t com variâncias iguais (pooled);
    • desiguais → teste t de Welch (padrão do R).

7.3.2 SITUAÇÃO PRÁTICA MOTIVADORA

Um pesquisador deseja avaliar se um novo suplemento nutricional melhora o desempenho de atletas em um teste de força máxima.
Dois grupos independentes foram avaliados:

  • Grupo 1 – Controle: não recebeu suplemento
  • Grupo 2 – Tratamento: recebeu suplemento por 8 semanas

A variável medida foi a força máxima (kg) obtida no teste.

Abaixo estão os dados coletados (22 atletas no total):

Controle <- c(124, 118, 130, 122, 127, 119, 125, 121, 128, 123, 129, 130)
Tratamento <- c(127, 124, 128, 133, 138, 129, 130, 132, 129, 134)

Dados1 <- data.frame(Controle = Controle) 
Dados2 <- data.frame(Tratamento = Tratamento) 

O objetivo agora é construir intervalos de confiança e realizar testes de hipótese para a diferença entre as duas médias populacionais.

Entretanto, antes precisamos verificar se há indícios de que os dados das duas amostras são provenientes de populações normais e, caso positivo, verificar a igualdade das variâncias. Vamos aos diagnósticos de normalidade. Na primeira amostra:

ggplot(Dados1, aes(x = Controle)) +
  geom_density(fill="blue") +
  xlab("Diâmetros") + 
  ylab("Densidade") +
  theme_bw() +
  theme(text = element_text(size = 14))

ggplot(Dados1, aes(sample=Controle)) +
    stat_qq_band(fill="lightblue") +
    stat_qq_line() +
    stat_qq_point() +
    xlab("Quantis Teoricos")+
    ylab("Quantis Amostrais")+
    theme_bw() +
    theme(text = element_text(size = 14))

shapiro.test(Dados1$Controle)
## 
##  Shapiro-Wilk normality test
## 
## data:  Dados1$Controle
## W = 0.93993, p-value = 0.4971

Na segunda amostra:

ggplot(Dados2, aes(x = Tratamento)) +
  geom_density(fill="blue") +
  xlab("Diâmetros") + 
  ylab("Densidade") +
  theme_bw() +
  theme(text = element_text(size = 14))

ggplot(Dados2, aes(sample=Tratamento)) +
    stat_qq_band(fill="lightblue") +
    stat_qq_line() +
    stat_qq_point() +
    xlab("Quantis Teoricos")+
    ylab("Quantis Amostrais")+
    theme_bw() +
    theme(text = element_text(size = 14))

shapiro.test(Dados2$Tratamento)
## 
##  Shapiro-Wilk normality test
## 
## data:  Dados2$Tratamento
## W = 0.9803, p-value = 0.9667

Em ambas as amostras, os gráficos de densidade não apontam sérios desvios da simetria. Os gráficos qq-plot apontam para a normalidade dos dados, que também é corroborada pelos testes de normalidade de Shapiro Wilk, a um nível de 5%. Então temos indícios de que os dados das duas populações são normalmente distribuídos.

Agora verificamos se as variâncias são iguais ou diferentes:

VarTest(x=Dados1$Controle,
        y=Dados2$Tratamento)
## 
##  F test to compare two variances
## 
## data:  x and y
## F = 1.107, num df = 11, denom df = 9, p-value = 0.8932
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.2829693 3.9717928
## sample estimates:
## ratio of variances 
##           1.106997

Logo, ao nível de 5% de significância, temos evidências de que as variâncias são iguais. Assim, essa informção deverá ser levada para a função t.test

7.3.3 INTERVALOS DE CONFIANÇA

Quando trabalhamos com duas populações independentes, queremos construir um intervalo de confiança (IC) para a diferença entre as médias populacionais:

\[ \mu_1 - \mu_2. \]

A inferência depende do comportamento das variâncias amostrais. Existem duas versões clássicas do intervalo:

7.3.3.1 VARIÂNCIAS IGUAIS

Assumimos que as duas populações têm variâncias iguais:
\[ \sigma_1^2 = \sigma_2^2. \]

Sejam:

  • \(\bar{X}_1\), \(\bar{X}_2\): médias amostrais
  • \(s_1^2\), \(s_2^2\): variâncias amostrais
  • \(n_1\), \(n_2\): tamanhos das amostras

A variância combinada (pooled) é:

\[ s_p^2 = \frac{ (n_1 - 1)s_1^2 + (n_2 - 1)s_2^2 } { n_1 + n_2 - 2 }. \]

O intervalo de confiança é:

\[ \left( (\bar{X}_1 - \bar{X}_2) - t_{1-\alpha/2,\, n_1+n_2-2} \cdot s_p \sqrt{\frac{1}{n_1} + \frac{1}{n_2}}, \; (\bar{X}_1 - \bar{X}_2) + t_{1-\alpha/2,\, n_1+n_2-2} \cdot s_p \sqrt{\frac{1}{n_1} + \frac{1}{n_2}} \right) \]

7.3.3.2 VARIÂNCIAS DIFERENTES

Quando as variâncias populacionais são distintas:

\[ \sigma_1^2 \neq \sigma_2^2, \]

não é adequado combinar variâncias. Nesse caso, o erro padrão é

\[ SE = \sqrt{ \frac{s_1^2}{n_1} + \frac{s_2^2}{n_2} }. \]

E os graus de liberdade aproximados são dados por

\[ gl = \frac{ \left( \frac{s_1^2}{n_1} + \frac{s_2^2}{n_2} \right)^2 }{ \frac{(s_1^2/n_1)^2}{n_1 - 1} + \frac{(s_2^2/n_2)^2}{n_2 - 1} }. \]

O intervalo de confiança é:

\[ (\bar{X}_1 - \bar{X}_2) \pm t_{1-\alpha/2,\, gl} \cdot SE. \]

Essa versão é mais conservadora e é o padrão do R, pois não assume igualdade de variâncias.

A função t.test() calcula automaticamente intervalos bilaterais e unilaterais e permite escolher entre as duas versões usando var.equal. Como no nosso exemplo, assumimos as variâncias iguais, seguem os códigos:

# Intervalo de confiança bilateral (variâncias iguais)
t.test(Dados1$Controle,
       Dados2$Tratamento,
       var.equal = TRUE,
       conf.level = 0.95)$conf.int
## [1] -9.389096 -2.077570
## attr(,"conf.level")
## [1] 0.95
# Intervalo unilateral à esquerda (mu1 - mu2 < 0)
t.test(Dados1$Controle,
       Dados2$Tratamento,
       alternative = "less",
       var.equal = TRUE,
       conf.level = 0.95)$conf.int
## [1]      -Inf -2.710672
## attr(,"conf.level")
## [1] 0.95
# Intervalo unilateral à direita (mu1 - mu2 > 0)
t.test(Dados1$Controle,
       Dados2$Tratamento,
       alternative = "greater",
       var.equal = TRUE,
       conf.level = 0.95)$conf.int
## [1] -8.755995       Inf
## attr(,"conf.level")
## [1] 0.95

7.3.4 TESTES DE HIPÓTESE

Quando trabalhamos com duas populações independentes, podemos testar hipóteses sobre a diferença entre as médias populacionais:

\[ H_0: \mu_1 - \mu_2 = 0 \qquad \text{vs} \qquad H_1: \mu_1 - \mu_2 \neq 0,\ \mu_1 - \mu_2 > 0,\ \mu_1 - \mu_2 < 0 \]

onde:

  • \(\mu_1\): média populacional do Grupo 1
  • \(\mu_2\): média populacional do Grupo 2

A estatística de teste depende da suposição sobre as variâncias populacionais.

7.3.4.1 VARIÂNCIAS IGUAIS

Quando assumimos:

\[ \sigma_1^2 = \sigma_2^2, \]

utilizamos a variância combinada:

\[ s_p^2 = \frac{ (n_1-1)s_1^2 + (n_2-1)s_2^2 }{ n_1+n_2-2 }. \]

A estatística t é:

\[ t = \frac{ (\bar{X}_1 - \bar{X}_2) - (\mu_1 - \mu_2)_0 }{ s_p \sqrt{\frac{1}{n_1} + \frac{1}{n_2}} } \sim t_{n_1+n_2-2}, \]

onde:

  • \((\mu_1 - \mu_2)_0\): geralmente 0
  • \(n_1+n_2-2\): graus de liberdade

7.3.4.2 VARIÂNCIAS DIFERENTES

Quando permitimos:

\[ \sigma_1^2 \neq \sigma_2^2, \]

a estatística t é:

\[ t = \frac{ (\bar{X}_1 - \bar{X}_2) - (\mu_1 - \mu_2)_0 }{ \sqrt{ \frac{s_1^2}{n_1} + \frac{s_2^2}{n_2} } }. \]

Os graus de liberdade são aproximados por:

\[ gl = \frac{ \left( \frac{s_1^2}{n_1} + \frac{s_2^2}{n_2} \right)^2 }{ \frac{(s_1^2/n_1)^2}{n_1 - 1} + \frac{(s_2^2/n_2)^2}{n_2 - 1} }. \]

A seguir, segue o nosso exemplo testando várias hipóteses alternativas, considerando que as variâncias são iguais:

# Teste bilateral (H0: mu1 - mu2 = 0)
t.test(Dados1$Controle,
       Dados2$Tratamento,
       var.equal = TRUE,
       alternative = "two.sided")
## 
##  Two Sample t-test
## 
## data:  Dados1$Controle and Dados2$Tratamento
## t = -3.2714, df = 20, p-value = 0.003819
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -9.389096 -2.077570
## sample estimates:
## mean of x mean of y 
##  124.6667  130.4000
# Teste unilateral a esquerda (H0: mu1 - mu2 < 0)
t.test(Dados1$Controle,
       Dados2$Tratamento,
       var.equal = TRUE,
       alternative = "less")
## 
##  Two Sample t-test
## 
## data:  Dados1$Controle and Dados2$Tratamento
## t = -3.2714, df = 20, p-value = 0.001909
## alternative hypothesis: true difference in means is less than 0
## 95 percent confidence interval:
##       -Inf -2.710672
## sample estimates:
## mean of x mean of y 
##  124.6667  130.4000
# Teste unilateral a direita (H0: mu1 - mu2 > 0)
t.test(Dados1$Controle,
       Dados2$Tratamento,
       var.equal = TRUE,
       alternative = "greater")
## 
##  Two Sample t-test
## 
## data:  Dados1$Controle and Dados2$Tratamento
## t = -3.2714, df = 20, p-value = 0.9981
## alternative hypothesis: true difference in means is greater than 0
## 95 percent confidence interval:
##  -8.755995       Inf
## sample estimates:
## mean of x mean of y 
##  124.6667  130.4000

7.3.5 EXERCÍCIO

A Secretaria de Saúde quer comparar a cobertura da vacina DTP entre municípios de Minas Gerais (MG) e municípios de outros estados (Fora de MG) para saber se as ações locais em MG resultaram em cobertura média maior. Foram selecionados 20 municípios de MG e 25 municípios fora de MG aleatoriamente. Os dados coletados foram:

MG <- c(86.1, 84.5, 88.2, 85.0, 87.3, 83.9, 89.0, 86.7, 84.2, 88.8, 85.5, 87.8, 86.0, 84.9, 88.1, 85.7, 87.0, 86.9, 83.6, 89.3)

Fora_de_MG <- c(81.4, 79.8, 80.5, 82.0, 78.9, 80.1, 77.6, 81.0, 79.3, 80.8, 78.4, 82.2, 79.9, 80.6, 78.7, 81.5, 79.1, 80.0, 77.8, 82.4, 75.7, 74.5, 75, 85.7,77.5)

Dados1 = data.frame(MG = MG)
Dados2 = data.frame(Fora_de_MG = Fora_de_MG)
  1. Construa um intervalo de confiança de 95% para a diferença das médias de cobertura.
  2. Teste, ao nível de 5%, se a média de cobertura em MG é maior do que Fora de MG.

8 CASO 5: AMOSTRAS GRANDES

Quando trabalhamos com amostras pequenas, a aplicação do teste t exige atenção especial à normalidade e, no caso de duas populações independentes, à igualdade de variâncias.
Agora, entrando no cenário de amostras grandes, algumas dessas exigências tornam-se menos rígidas, especialmente por causa do Teorema Central do Limite. Ainda assim, existem verificações importantes que devem ser feitas antes de aplicar o teste t.

Em todos os cenários analisados — uma população, duas populações dependentes e duas independentes (com ou sem variâncias iguais) — a função recomendada no R continua sendo t.test. Isso ocorre porque, com amostras grandes, a distribuição t se aproxima da distribuição normal padrão, de modo que o teste t e o teste z tornam-se praticamente equivalentes. Por isso, não há necessidade de usar um teste z separado: o próprio t.test já é totalmente adequado e robusto para esses casos.

A seguir, detalhamos os cuidados necessários nos contextos clássicos.

8.1 UMA POPULAÇÃO

O que verificar antes do teste:

  • Normalidade não é mais exigida para a média amostral.
  • Inspecionar possíveis outliers, pois eles influenciam a média e a variância.
  • Verificar assimetria extrema ou caudas muito longas.
  • Garantir independência das observações; essa condição não pode ser violada.

8.2 DUAS POPULAÇÕES DEPENDENTES

O que verificar antes do teste:

  • O teste é aplicado às diferenças, então verifique a presença de outliers nessas diferenças.
  • Normalidade não é obrigatória para as diferenças quando \(n\) é grande.
  • Confirmar o pareamento correto (medidas antes/depois ou pares naturais).
  • Verificar independência entre os pares, mesmo que haja dependência dentro de cada par.

8.3 DUAS POPULAÇÕES INDEPENDENTES

O que verificar antes do teste:

  • Independência entre as amostras — condição essencial.
  • Presença de outliers em cada grupo, pois podem influenciar a média.
  • Tamanhos amostrais grandes (\(n \gtrsim 30\) por grupo), garantindo a normalidade aproximada da média pelo Teorema Central do Limite.
  • Normalidade não é exigida quando as amostras são grandes.
  • Sobre testar igualdade das variâncias:
    • O teste F (var.test) exige normalidade estrita e não é recomendado em duas amostras grandes.
    • Testes robustos, como Levene ou Brown–Forsythe, até podem ser usados, mas tornam-se hipersensíveis com amostras grandes, detectando diferenças irrelevantes.
    • Por isso, não se recomenda testar igualdade de variâncias para grandes amostras.
  • Use diretamente o teste t de Welch, que não exige igualdade de variâncias e é robusto mesmo quando elas diferem.
  • Se as variâncias forem realmente iguais, a perda de eficiência em Welch é mínima.
  • Além disso, com graus de liberdade grandes, a aproximação para a normal é uma consequência.