Testes para normalidade e igualdade de variâncias

EST212 - Bioestatística

Helgem de Souza

Introdução

Antes de iniciar nossa aula:

  1. Abra o RStudio.

  2. Crie um novo script.

  3. Crie uma pasta na área de trabalho com seu nome.

  4. Defina a pasta como diretório de trabalho

  5. Salve o script criado na pasta com o nome "aula9_est212.R".

  6. Baixe do Moodle os arquivos gordura_corporal.csv e pesonasc.csv e salve na pasta criada.

  7. Leia o arquivo gordura_corporal.csv para o objeto gordura.

  8. Leia o arquivo pesonasc.csv para o objeto peso.

Introdução

Em Estatística, temos vários objetivos ao efetuar uma análise de dados. Alguns deles são:

  • Verificar a existência de relação entre dados.

  • Explicar o comportamento de uma variável por meio de modelos.

  • Comparar dados e seu comportamento.

  • Estimar possíveis valores para uma população com base em uma amostra.

Nesse sentido, as técnicas podem ser enquadradas em duas categorias principais:

  • Estatística Paramétrica.

  • Estatística não Paramétrica.

Estatística Paramétrica e Não Paramétrica

A Estatística Paramétrica compreende um conjunto de técnicas em que a distribuição de probabilidade dos dados é conhecida.

Já a Estatística não Paramétrica compreende as técnicas em que a distribuição de probabilidade dos dados não é conhecida, ou menos não é significativa para a modelagem.

Nesse curso, aprenderemos técnicas de ambas as categorias. Entretanto, algumas das técnicas já vistas são paramétricas:

  • Regressão: Os resíduos devem possuir distribuição normal com média 0 e variância igual (constante).

  • Teste t: a variável aleatória deve possuir distribuição normal.

Estatística Paramétrica

Dentro da estatística paramétrica, existem métodos para diversas finalidades. Para muitas dessas finalidades, temos requisitos bastante presentes, que são relacionados à duas características:

  • Normalidade dos dados.

  • Variância.

A normalidade dos dados é a base de muitos modelos. Já em relação à variância, geralmente é necessário verificar se populações apresentam variâncias iguais (homocedasticidade) ou diferentes (heterocedasticidade).

Vamos aprender a verificar ambos os requisitos nessa aula.

Verificação de Normalidade

A distribuição Normal é considerada a mais importante na Estatística, por alguns motivos:

  • Muitas variáveis observadas cotidianamente apresentam distribuição normal.

  • Apresenta boas propriedades matemáticas.

  • Consequentemente, um grande volume de técnicas é baseado em sua formulação.

Por esse motivo, antes de aplicar determinadas técnicas baseadas na distribuição normal, é necessário verificar se os dados em estudo se adequam a ela.

Distribuição Normal

Conforme visto em Bioestatística I, uma variável aleatória é dita normal se apresenta a seguinte função de densidade de probabilidade:

\[ f(x) \dfrac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{(x - \mu)^2}{2\sigma^2}},~~-\infty<x<\infty, ~~~ \infty<\mu<\infty,~~\sigma2>0, \]

Algumas características:

  • Sua distribuição apresenta forma de sino.

  • Simétrica em torno da média.

  • Distribuição tabelada (Tabela Z).

Para verificar a normalidade existem alguns métodos. Os principais são baseados em gráficos ou testes de hipóteses.

Testes de Normalidade

  • Podemos verificar a normalidade de um conjunto de dados por meio de testes de hipóteses.
  • O mais utilizado, sobretudo por ser mais poderoso para pequenas amostras, é o teste de Shapiro-Wilk.
  • O teste de Shapiro-Wilk possui as seguintes hipóteses:
    • \(H_0\) - Os dados em estudo seguem distribuição normal

    • \(H_1\) - Os dados em estudo não seguem distribuição normal

  • Assim como nos demais testes, não rejeitaremos \(H_0\) se o p-valor for menor que o nível de significância pré-definido. Nesse teste, é comum trabalhar com um nível de significãncia \(\alpha = 0,1\).
  • Não entraremos em detalhes teóricos. O artigo completo com o teste pode ser visto em ROYSTON (1982).

Teste de Normalidade de Shapiro-Wilk

  • O teste de Shapiro-Wilk está implementado no R por meio da função shapiro.test. Nela deve ser informada a variável para a qual se pretende verificar a normalidade.

  • Vamos testar a normalidade para as seguintes variáveis: altura e peso. Utilizaremos um nível de significância \(\alpha = 0,1\).

#Teste de normalidade para a altura
shapiro.test(gordura$altura)

    Shapiro-Wilk normality test

data:  gordura$altura
W = 0.99243, p-value = 0.2309
#Teste de normalidade para o peso
shapiro.test(gordura$peso)

    Shapiro-Wilk normality test

data:  gordura$peso
W = 0.98741, p-value = 0.02741

Teste de Normalidade de Shapiro-Wilk

As hipóteses dos testes são:

  • \(H_0\) - A altura segue distribuição normal vs \(H_1\) - A altura não segue distribuição normal.

  • \(H_0\) - O peso segue distribuição normal vs \(H_1\) - O peso não segue distribuição normal.

  • O nível de significância é \(\alpha = 0,1\)

  • Para a altura, obtivemos um p-valor de 0,2309 > 0,1. Logo, ao nível de 10% de significância, existem evidências que indicam a normalidade da variável altura.

  • Já para o peso, obtivemos um p-valor de 0,02741 < 0,1. Logo, ao nível de 10% de significância, não existem evidências suficientes para indicar que a variável peso segue uma distribuição normal.

Exercício Prático 1

Vamos verificar se as seguintes variáveis do nosso banco de dados gordura seguem distribuição normal:

  • gordura_corporal

  • abdomen

  • pescoco

  • tornozelo

Utilizaremos um nível de significância \(\alpha = 0,1\).

Exercício Prático 1 - Solução

\(H_0\) - A variável segue distribuição normal vs \(H_1\) - A variável não segue distribuição normal.

#Teste de normalidade para a variável gordura_corporal
shapiro.test(gordura$gordura_corporal)

    Shapiro-Wilk normality test

data:  gordura$gordura_corporal
W = 0.99169, p-value = 0.1697
#Teste de normalidade para a variável abdomen
shapiro.test(gordura$abdomen)

    Shapiro-Wilk normality test

data:  gordura$abdomen
W = 0.98735, p-value = 0.02662
  • gordura_corporal: p-valor = 0,1697 > 0,1. Ao nível de 10% de significância existem evidências que indicam que a variável segue distribuição normal.

  • abdomen: p-valor = 0,01662 < 0,1. Ao nível de 10% de significância existem evidências que indicam que a variável não segue distribuição normal.

Exercício Prático 1 - Solução

\(H_0\) - A variável segue distribuição normal vs \(H_1\) - A variável não segue distribuição normal.

#Teste de normalidade para a variável pescoço 
shapiro.test(gordura$pescoco)  

    Shapiro-Wilk normality test

data:  gordura$pescoco
W = 0.99385, p-value = 0.3999
#Teste de normalidade para a variável tornozelo 
shapiro.test(gordura$tornozelo)

    Shapiro-Wilk normality test

data:  gordura$tornozelo
W = 0.85451, p-value = 1.322e-14
  • pescoco: p-valor = 0,3999 > 0,1. Ao nível de 10% de significância existem evidências que indicam que a variável segue distribuição normal.

  • tornozelo: p-valor = 1,322e-14 < 0,1. Ao nível de 10% de significância existem evidências que indicam que a variável não segue distribuição normal.

Igualdade de Variâncias

Nas próximas aulas, aprenderemos testes que comparam populações entre si em relação à sua média. Esse tipo de teste é bastante útil pois permite a comparação de efeitos diferentes em populações semelhantes. Vejamos alguns exemplos:

  • Para verificar se um novo medicamento para diabetes é eficiente, pacientes foram divididos em 3 grupos: um recebeu o novo medicamento, outro recebeu o medicamento de referência e um terceiro recebeu um placebo. Caso o novo medicamento seja eficiente, o que se espera que ocorra com a glicemia média dos pacientes?

  • Dois cultivares de cana foram submetidos a regimes de adubação diferentes. Será que um deles produzirá mais?

  • O peso de recém-nascidos com baixo peso foi registrado e durante uma semana foi oferecida uma fórmula pediátrica. Houve ganho de peso significativo entre eles?

Igualdade de Variâncias

Todos os exemplos apresentados tem em comum a necessidade de comparar grupos.

Existem diversos testes paramétricos para realizar tal comparação. Porém a escolha do teste adequado depende de alguns fatores. Um deles está relacionado com a variância das populações.

Podemos ter as seguintes situações:

  • Duas ou mais populações com variâncias iguais.

  • Duas ou mais populações com variâncias diferentes.

Para utilizarmos o teste adequado, é necessário conhecer o comportamento da variância de cada grupo. Para isso, em estatística paramétrica, usamos o Teste F.

Teste F para igualdade de variâncias

Suponha que se deseja verificar se duas populações tem a mesma variância, ou seja, \(\sigma_1^2 = \sigma_2^2\), em que:

  • \(\sigma_1^2\) - Variância da população 1

  • \(\sigma_2^2\) - Variância da população 2

Para testar tal suposição, poderíamos elaborar as seguintes hipóteses:

\[ H_0:\sigma_1^2=\sigma_2^2~~~~vs.~~~~H_1:\sigma_1^2\neq\sigma_2^2 \]

O teste utilizado para testar essas hipóteses é chamado de Teste F para igualdade de variâncias.

Teste F para igualdade de variâncias

Considere duas amostras extraídas de populações normalmente distribuídas, com \(n_1\) e \(n_2\) observações, respectivamente. O teste para igualdade de variâncias é realizado por meio da seguinte estatística de teste:

\[ F = \dfrac{s_1^2}{s_2^2} \]

em que:

  • \(s_1^2\) é a maior variância amostral dentre as duas amostras.

  • \(s_2^2\) é a menor variância amostral dentre as duas amostras.

Se as suposições de normalidade forem atendidas, pode-se demonstrar que a estatística de teste segue uma distribuição \(F\) com \(n_1-1\) e \(n_2-1\) graus de liberdade. A partir dessa distribuição, calcula-se o p-valor do teste.

Teste F para igualdade de variâncias

Conforme visto, antes de aplicar o teste F, é necessário garantir que os dados seguem distribuição normal. Após verificar a normalidade, por meio do teste de Shapiro-Wilk, por exemplo, podemos executar o teste F por meio da função var.test():

var.test(valores ~ grupos, data = dados)

em que:

  • valores: variável que recebe os valores da variável de interesse

  • grupos: variável utilizada para segmentar os dados

  • dados: conjunto de dados em estudo

Note que a estrutura é parecida com a função lm da regressão linear.

Teste F para igualdade de variâncias

Quando queremos testar duas populações e seus dados estão separados em variáveis distintas, utilizamos a seguinte parametrização:

var.test(x = populacao1, y = populacao2, data = dados)

Em que:

  • populacao1 - dados da população 1

  • populacao2 - dados da população 2

  • dados - banco de dados que contém os dados das populações.

Para compreendermos melhor a sintaxe, vamos fazer um exemplo.

Teste F para igualdade de variâncias

Para nosso exemplo utilizaremos o banco de dados pesonasc. São dados sobre o peso de bebês no nascimento, baseado em características da mãe:

  • id - identificação do bebê.

  • baixo - presença ou não de baixo peso (<2,5kg) (0 = não, 1 = sim).

  • idade - idade da mãe.

  • pesom - peso da mãe no último período menstrual.

  • raca - raça da mãe (1 = branco, 2 = afro-americano, 3 = outros).

  • fumo - fumo durante a gestação (0 = não, 1 = sim).

  • partospm - nº de partos prematuros anteriores.

  • hipert - presença de hipertensão (0 = não, 1 = sim).

  • irriut - presença de irritabilidade uterina (0 = não, 1 = sim).

  • nprenatal - número de consultas prenatal.

  • pesobb - peso do bebê em gramas.

Exemplo - Teste F para igualdade de variâncias

Vamos verificar se a variância entre os pesos de bebês de mães que fumaram e não fumaram é igual.

Antes de realizar o teste, precisamos verificar se a variável peso do bebê ao nascer (pesobb) apresenta distribuição normal. O faremos por meio do teste de Shapiro-Wilk, ao nível de 0,1 de significância. As hipóteses do teste são:

  • \(H_0\) - O peso dos bebês segue distribuição normal

  • \(H_1\) - O peso dos bebês não segue distribuição normal.

Vejamos o resultado do teste.

Exemplo - Teste F para igualdade de variâncias

#Teste de normalidade da variável peso
shapiro.test(peso$pesobb)

    Shapiro-Wilk normality test

data:  peso$pesobb
W = 0.99247, p-value = 0.4383

O p-valor do teste foi 0,4383 >0,1. Portanto temos evidências para não rejeitar a hipótese nula. Logo, podemos afirmar que o peso dos bebês ao nascer é normalmente distribuído.

Podemos prosseguir com o teste F para igualdade de variâncias.

Exemplo - Teste F para igualdade de variâncias

Agora que sabemos que os pesos seguem distribuição normal, podemos utilizar o teste F. Queremos testar se os pesos de bebês de mães que fumam e não fumam apresentam variâncias iguais, ou seja:

\[H_0:~\sigma^2_F = \sigma^2_{NF} ~~ vs ~~ H_0:~\sigma^2_{F} \neq \sigma^2_{NF}.\]

Em que

  • \(\sigma^2_F\) - Variância do peso dos bebês de mães fumantes.

  • \(\sigma^2_{NF}\) - Variância do peso dos bebês de mães fumantes.

Vamos testar as hipóteses ao nível de 5% de significância, que é o padrão para esse tipo de teste. Vejamos como executar o teste no R.

Exemplo - Teste F para igualdade de variâncias

Para executar, utilizaremos a função var.test. Os valores são definidos pela variável pesobb. Já os grupos são definidos pela variável fumo. Executamos o teste da seguinte forma:

#Teste para igualdade de variâncias
var.test(pesobb ~ fumo, data = peso)

    F test to compare two variances

data:  pesobb by fumo
F = 1.2993, num df = 114, denom df = 73, p-value = 0.229
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
 0.8469514 1.9550579
sample estimates:
ratio of variances 
          1.299335 

Como o p-valor não é significativo (0,229 > 0,05), temos evidências que nos levam a não rejeitar \(H_0\), portanto, pode-se afirmar ao nível de 5% de significância que as variâncias de pesos de bebês de mães fumantes e não fumantes são iguais.

Visualização de dados contínuos agrupados

Uma forma de verificar visualmente a variabilidade de dados agrupados é por meio da função boxplot. O boxplot é um gráfico gerado pelos percentis 5, 25, 50, 75 e 95 da amostra e nos dá uma noção da forma e da variabilidade dos dados.

Para gerar um boxplot com dados agrupados, seguimos o mesmo formato utilizado na função var.test().

Podemos usar o boxplot antes da execução do teste para compreender melhor a relação entre os dados e respectivos grupos.

Vejamos o resultado gráfico.

Visualização de dados contínuos agrupados

#Boxplot para comparação dos pesos de bebês de mães fumantes e não fumantes
boxplot(pesobb ~ fumo, data = peso)

Observa-se que a disspersão, caracterizada pela altura da caixa, é de fato semelhante, o que corrobora a conclusão do nosso teste.

Exercício Prático 2

Vamos verificar se existem diferenças nas variâncias entre os pesos dos bebês de mães hipertensas e não hipertensas, ao nível de 5% de significância.

Para isso, vamos fazer o boxplot e na sequência o teste de hipóteses. Nossas hipóteses são:

  • \(H_0\): A variância do peso de bebês de mães hipertensas e não hipertensas é a mesma.

  • \(H_1\): A variância do peso de bebês de mães hipertensas e não hipertensas é a diferente.

Como já testamos a normalidade do peso dos bebeês, não será necessário realizar o teste de Shapiro-Wilk novamente.

Exercício Prático 2 - Solução

Primeiramente, faremos o boxplot:

#Boxplot - Peso por hipertensão da mãe
boxplot(pesobb ~ hipert, data = peso)

Aparentemente a variância do peso de bebês de mães hipertensas é maior. Vejamos se é grande o suficiente para ser considerada diferente.

Exercício Prático 2 - Solução

#Teste de hipóteses - Peso por hipertensão da mãe
var.test(pesobb ~ hipert, data = peso)

    F test to compare two variances

data:  pesobb by hipert
F = 0.59774, num df = 176, denom df = 11, p-value = 0.1658
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
 0.2043689 1.2354234
sample estimates:
ratio of variances 
          0.597735 

Nosso teste retornou um p-valor = 0,1658 > 0,05. Logo, apesar da evidência visual, temos evidências suficientes para não rejeitar a hipótese nula, ao nível de 5% de significância. Ou seja, as variâncias entre os dois grupos são iguais.

Atividade Avaliativa

  1. Refaça os exercícios práticos 1 e 2. Não se esqueça de comentar as conclusões dos testes no script.

  2. Verifique se as variáveis pesom e idade, do banco de dados peso seguem distribuição normal. Poderíamos executar o teste F nelas?

  3. Teste ao nível de 5% de significância se o peso dos bebês (pesobb) possui a mesma variância entre mães com irritabilidade uterina (irritut) e entre os bebês de baixo peso ou não (baixo).

Referências

ROYSTON, J. P. Algorithm AS 181: The w test for normality. Applied Statistics, p. 176–180, 1982.