#Dados a ranquear
x <- c(2.5, 3.6, 1.75, 4.57, 2.98, 5.57, 3.2)
y <- c(2, 3, 1, 4, 2, 5, 3)
#Ranqueamento dos dados
rank(x)
[1] 2 5 1 6 3 7 4
[1] 2.5 4.5 1.0 6.0 2.5 7.0 4.5
EST212 - Bioestatística
Antes de iniciar nossa aula:
Abra o RStudio.
Crie um novo script.
Crie uma pasta na área de trabalho com seu nome.
Defina a pasta como diretório de trabalho
Salve o script criado na pasta com o nome "aula14_est212.R"
.
Baixe do Moodle os arquivos peso_ratos.csv
salve na pasta criada.
Leia o arquivo peso_ratos.csv
para o objeto ratos
.
Conforme vimos, testes paramétricos são baseados em distribuições conhecidas e dependem desse requisito para apresentarem bons resultados.
Entretanto, nem sempre é possível assegurar que os dados seguem uma referida distribuição.
Muitas vezes a natureza dos dados sequer permite tal associação.
Para contornar esse problema, testes não paramétricos foram criados.
Os testes não paramétricos mais clássicos são baseados no ranqueamento dos dados.
Seja \(X_1, X_2, \cdots, X_n\) uma amostra de uma população. O ranqueamento dessa amostra é dado por:
\[ r(X_1), r(X_2), \cdots, r(X_n) \]
Em que
\[ r(X_j) = \#\{X_j | X_j \leq X_i, j = 1, 2, \cdots, n\} \]
Ou seja, o rank de um valor é igual ao número de elementos da amostra que são menores ou iguais a ele.
O rank é atribuído por meio da posição da observação no conjunto de dados ordenados. Em caso de empates, utiliza-se a média dos ranks.
Exemplos:
Valores contínuos | Rank | Valores discretos | Rank | |
---|---|---|---|---|
2,5 | 2 | 2 | 2,5 | |
3,6 | 5 | 3 | 4,5 | |
1,75 | 1 | 1 | 1 | |
4,57 | 6 | 4 | 6 | |
2,98 | 3 | 2 | 2,5 | |
5,57 | 7 | 5 | 7 | |
3,2 | 4 | 3 | 4,5 |
Note que:
\(1,75 \leq 2,5 \leq 2,98 \leq 3,2 \leq 3,6 \leq 4,57 \leq 5,57\)
\(1 \leq 2 \leq 2 \leq 3 \leq 3 \leq 4 \leq 5\)
O R gera o ranqueamento dos dados por meio da função rank
. Vejamos os exemplos acima no R:
#Dados a ranquear
x <- c(2.5, 3.6, 1.75, 4.57, 2.98, 5.57, 3.2)
y <- c(2, 3, 1, 4, 2, 5, 3)
#Ranqueamento dos dados
rank(x)
[1] 2 5 1 6 3 7 4
[1] 2.5 4.5 1.0 6.0 2.5 7.0 4.5
Não utilizaremos o ranqueamento dos dados diretamente. Eles são aplicados na construção dos testes, mas será útil para compreensão dos testes que estudaremos.
Os testes não paramétricos, de modo geral, são baseados em ideias bastante intuitivas. O que não significa que são simples. A matemátiva envolvida na formalização do teste por vezes pode ser bastante complexa.
Para ilustrar, vamos construir o teste não paramétrico mais simples, o Teste do Sinal.
Suponha que se queira testar as seguintes hipóteses:
\(H_0\): A mediana de uma população é igual a \(m_0\). (\(H_0: m = m_0\) )
\(H_1\): A mediana de uma população é diferente de \(m_0\). (\(H_1: m \neq m_0\) )
Como você faria esse teste de uma forma intuitiva?
Pela definição, mediana é o valor que deixa 50% dos itens da amostra abaixo dele e 50% dos elementos acima dele.
Ou seja, se a mediana for \(m_0\), teríamos em uma amostra aleatória dessa população, aproximadamente metade da amostra acima desse valor e metade abaixo.
Se pensarmos na diferença de cada valor para a mediana, a diferença entre valores menores que a mediana e a própria mediana seriam negativos, caso contrário, a diferença seria positiva. Ou seja:
\[ D_i = X_i - m_0 \]
Se \(X_i < m_0 \rightarrow Sinal(D_i) = -\)
Se \(X_i > m_0 \rightarrow Sinal(D_i) = +\)
Se aproximadamente 50% dos sinais forem positivos, temos evidências de que a mediana é igual a \(m_0\). Caso o número de sinais positivos seja muito distante de 50%, temos evidências para rejeitar a hipótese nula.
Para calcular a probabilidade dos sinais positivos (ou negativos) observados serem próximos de 50%, considera-se \(H_0\) verdadeira.
Nesse caso, o número de sinais positivos seguiria uma distribuição binomial com n = número de observações e p = 0,5.
Ou seja: Denote X como o número de sinais positivos. Sob \(H_0\), \(X \sim Bin(n, 0,5)\)
Sabemos que se \(X \sim Bin(n, 0,5)\), então:
\[ P(X = x) = \dfrac{n!}{x!(n-x)!}p^x(1-p)^{n-x} = \dfrac{n!}{x!(n-x)!}0,5^n \]
Para calcular o p-valor do teste, devemos encontrar qual a probabilidade de observar números de sinais positivos tão ou mais extremos que o observado.
A altura esperada de crianças de 10 anos é de 128cm. Em uma turma de ensino básico, suspeita-se que a altura mediana é menor que esse valor. As alturas seguem listadas a seguir:
128 125 126 127 129 125 123 131 130 123 124
Vamos testar as seguintes hipóteses usando o teste do sinal:
\(H_0\): A altura mediana da turma é igual a 128cm
\(H_1\): A altura mediana da turma é menor que 128cm
Vamos construir a tabela de diferenças e sinais. Lembrando que \(D_i = X_i - m_0\), em que \(m_0\) é o valor da mediana sob \(H_0\):
\(X_i\) | \(D_i\) | Sinal |
---|---|---|
128 | 128 - 128 = 0 | sorteia-se o sinal ( + ) |
125 | 125 - 128 = -3 | - |
126 | 126 - 128 = -2 | - |
127 | 127 - 128 = -1 | - |
129 | 129 - 128 = 1 | + |
125 | 125 - 128 = -3 | - |
123 | 123 - 128 = -5 | - |
131 | 131 - 128 = 3 | + |
130 | 130 - 128 = 2 | + |
123 | 123 - 128 = -5 | - |
124 | 124 - 128 = -4 | - |
Obtivemos 4 sinais positivos e 7 negativos. Ou seja, temos mais observações abaixo de 128 do que acima de 128. Será que esses indícios são suficientes para rejeitar \(H_0\)?
Seja X a variável número de sinais positivos. sob \(H_0\), temos que
\[ X \sim Bin(11; 0,5) \implies P(X=x) = \dfrac{11!}{x!(11-x)!}0,5^{11} \]
A probabilidade de obter uma quantidade tão ou mais extremo de sinais positivos do que a obtida, no sentido da diferença, seria obter 0, 1, 2, 3 ou 4 sinais positivos, pois quanto mais distante da igualdade no número de sinais, maiores os indícios de que 128 não divide os dados em seu centro. Esse seria o p-valor do teste, dado por:
\[ \text{p-valor} = P(X \leq 4) = \sum \limits_{x = 0}^4 \dfrac{11!}{x!(11-x)!}0,5^{11} = 0,274 \]
Como o p-valor é grande, maior que 0,05 por exemplo, não temos evidências suficientes para rejeitar a hipótese nula.
Logo, ao nível de 5% de significância, podemos afirmar que a altura mediana da turma é aproximadamente 128cm.
Essa construção do Teste do Sinal teve caráter ilustrativo. Boa parte dos testes não paramétricos para mediana seguem um raciocínio semelhante.
Esse teste não é muito utilizado, mas é bastante importante do ponto de vista didático. Veremos agora um teste que foi baseado no teste do Sinal, mas que apresenta resultados muito mais robustos.
O teste do sinal apresenta uma característica importante: ele desconsidera a magnitude das diferenças.
Vejamos o exemplo anterior. Os valores 123 e 127 apresentam diferenças de -5 e -1 para a mediana 128, respectivamente. Entretanto, para efeitos práticos, tal distância não faz diferença. Ambos recebem sinal negativo.
Uma forma de reduzir essa perda de informação é a incorporação da magnitude das diferenças, via ranqueamento.
O pesquisador Frank Wilcoxon sugeriu tal adaptação, criando o que hoje é conhecido como Teste de Wilcoxon.
Seja \(X_1, X_2, \cdots, X_n\) uma amostra de uma população. Suponha que deseja-se testar as seguintes hipóteses:
\(H_0\): A mediana de uma população é igual a \(m_0\). (\(H_0: m = m_0\) )
\(H_1\): A mediana de uma população é diferente de \(m_0\). (\(H_1: m \neq m_0\) )
Assim como no teste do sinal, podemos definir a seguinte diferença:
\[ D_i = X_i - m_0 \]
e a variável \(S_i\), dada por
\(S_i = 0\text{ se }D_i< 0\)
\(S_i = 1\text{ se }D_i> 0\)
A estatística do Teste de Wilcoxon é dada por
\[ T = 2\sum\limits_{i = 1}^n r(|D_i|)S_i - \frac{n(n+1)}{2} \]
Em que \(r(|D_i|)\) é o rank das diferenças entre o valor observado (\(X_i\)) e a mediana em teste (\(m_0\)).
Os quantis da estatística de teste são tabelados, mas como utilizaremos o R para seu cálculo, não será necessário utilizar tabelas
O Teste de Wilcoxon é uma alternativa ao teste T para uma amostra, quando os dados não apresentam distribuição normal.
A realização do Teste de Wilcoxon para uma amostra no R é feita por meio da função
wilcox.test(x, mu)
, em que:
x
- vetor de dados
mu
- valor da mediana em teste
Vamos como realizar o teste para uma única amostra no exemplo a seguir
Um novo medicamento promete aliviar dores de cabeça em 10 minutos. Para verificar se a afirmação é verdadeira, uma agência reguladora realizou um experimento com 15 voluntários que sofrem com dores de cabeça recorrentes.
Após a ingestão do medicamento, os pacientes acionaram um cronômetro e o paralizaram ao perceber o alívio da dor. Foram obtidos os seguintes resultados:
101, 28, 290, 47, 5, 96, 11, 16, 4, 44, 17, 10, 40, 2, 1
Vamos utilizar o teste de Wilcoxon para verificar se a afirmação da fabricante procede, ao nível de 5% de significância.
Primeiramente, a título de ilustração, vamos verificar que os dados não são normais
#Tempo até o alívio da dor
tempo <- c(101, 28, 29, 47, 5, 96, 11, 16, 4, 44, 17, 10, 40, 2, 1)
shapiro.test(tempo)
Shapiro-Wilk normality test
data: tempo
W = 0.81262, p-value = 0.005362
Como o p-valor é menor que 0,1, temos evidências que indicam que os tempos até o alívio da dor não seguem uma distribuição normal. Logo, não podemos usar o teste t.
Vamos usar o teste de Wilcoxon para testar as seguintes hipóteses:
\(H_0:\) o tempo mediano de alívio é igual a 10 minutos
\(H_1:\) o tempo mediano de alívio é diferente de 10 minutos
O teste é executado da seguinte forma:
Wilcoxon signed rank test with continuity correction
data: tempo
V = 86.5, p-value = 0.03542
alternative hypothesis: true location is not equal to 10
Como o p-valor é menor que o nível de significância definido, podemos afirmar, ao nível de 5% de significância, que o tempo mediano para o alívio das dores de cabeça é diferente de 10 minutos.
Vamos verificar se o tempo até o alívio da dor é igual a 15 minutos
Wilcoxon signed rank test with continuity correction
data: tempo
V = 85, p-value = 0.1639
alternative hypothesis: true location is not equal to 15
Ao nível de 5% de significância, podemos afirmar que o tempo de alívio das dores de cabeça é igual a 15 minutos. Ou seja, a empresa poderia afirmar que seu remédio alivia as dores em 15 minutos, em mediana.
Assim como o teste de Wilcoxon para uma amostra é um substituto para o teste t, quando a amostra não provém de uma distribuição normal, também podemos utilizar o teste de Wilcoxon para verificar se duas amostras pareadas possuem a mesma mediana.
A ideia é análoga ao teste t. Verifica-se se a diferença entre as medianas é igual a 0 ou diferente de 0.
A única diferença para o teste de Wilcoxon para uma única população e para duas populações pareadas é o cálculo das diferenças.
Sejam \(X_1, X_2, \cdots, X_n\) e \(Y_1, Y_2, \cdots, Y_n\) amostras de duas populações pareadas. Suponha que deseja-se testar as seguintes hipóteses:
\(H_0\): A diferença entre as medianas das populações é igual a 0.
(\(H_0: m_X - m_y = 0\) )
\(H_1\): A diferença entre as medianas das populações é diferente de 0.
(\(H_0: m_X - m_y = 0\) )
Assim como no teste do para uma amostra, podemos definir a seguinte diferença:
\[ D_i = X_i - Y_i \]
e a variável \(S_i\), dada por
\(S_i = 0\text{ se }D_i< 0\)
\(S_i = 1\text{ se }D_i> 0\)
Como a mudança ocorreu apenas no cálculo das diferenças, a estatística do Teste de Wilcoxon para duas amostras pareadas segue a mesma, dada por
\[ T = 2\sum\limits_{i = 1}^n r(|D_i|)S_i - \frac{n(n+1)}{2} \]
Em que \(r(|D_i|)\) é o rank das diferenças entre os valores observados (\(X_i\)) e (\(Y_i\)).
NEssa configuração, o Teste de Wilcoxon é uma alternativa ao teste T pareado, quando os dados não apresentam distribuição normal.
A realização do Teste de Wilcoxon paraduas amostras pareadas no R é feita por meio da mesma função utilizada no caso de uma amostra. A diferença é apenas nos parâmetros do teste.
Existem duas possibilidades de aplicação, a depender do formato dos dados.
Vamos ilustrar cada uma delas.
Quando as duas populações estão em colunas distintas do banco de dados, utilizamos a seguinte formulação:
wilcox.test(x, y, paired = T)
, em que:
x
- amostra da população 1
y
-amostra da população 2
paired
- indica que o teste é pareado
Em dados pareados, este é o formato mais comum, pois os dados são medidos em momentos distintos.
Quando as amostras estão em uma mesma coluna e uma segunda variável é utilizada para identificar quais são os grupos, utilizamos a notação de fórmula que já estamos habituados
wilcox.test(x ~ grupo, data = dados, paired = T)
, em que:
x
- amostra da população 1
y
-amostra da população 2
paired
- indica que o teste é pareado
Dois grupos de gêmeos identicos participaram de testes psicológicos para avaliar seu nível de agressividade. O grupo de pesquisa deseja verificar a hipótese de que o primeiro gêmeo a nascer tende a ser mais agressivo que o segundo. Os dados seguem apresentados a seguir
Gêmeo 1 | 86 | 71 | 77 | 68 | 91 | 72 | 77 | 91 | 70 | 71 | 88 | 87 |
Gêmeo 2 | 88 | 77 | 76 | 64 | 96 | 72 | 65 | 90 | 65 | 80 | 81 | 72 |
As hipóteses são as seguintes:
\(H_0\): Não existem diferenças significativas na agressividade entre os gêmeos
\(H_1\): Existem diferenças significativas na agressividade entre os gêmeos
Vejamos como realizar esse teste no R
Primeiramente vamos registrar os dados
Podemos fazer um boxplot para comparar os grupos antes de realizar o teste
O boxplot não indica visualmente a presença de diferenças significativas. Vamos realizar o teste de Wilcoxon ao nível de 5% de significância
Wilcoxon signed rank test with continuity correction
data: g1 and g2
V = 41.5, p-value = 0.4765
alternative hypothesis: true location shift is not equal to 0
Como o p-valor é maior que o nível de significância, podemos afirmar com 5% de significância que não existe diferença significativa na agressividade mediana dos gêmeos devido à ordem de nascimento.
O peso de ratos foi registrado antes e depois de uma dieta de recuperação de peso. Os dados estão registrados no arquivo peso_ratos.csv
. Verifique se o aumento de peso foi significativo ao nível de 1% de significância.
As hipóteses são as seguintes:
\(H_0\): O peso dos ratos antes e depois da dieta é o mesmo.
\(H_1\): O peso dos ratos antes e depois da dieta é diferente.
Visualize o comportamento dos dados utilizando boxplots e na sequência execute o teste de Wilcoxon para dados pareados.
Primeiramente podemos verificar o comportamento dos dados usando um boxplot:
Claramente a dieta de recuperação gerou aumento de peso. Vamos confirmar por meio do teste de Wilcoxon.
Wilcoxon signed rank exact test
data: ratos$antes and ratos$depois
V = 0, p-value = 0.001953
alternative hypothesis: true location shift is not equal to 0
Como o p-valor é menor que o nível de significância (0,01), podemos afirmar, com 1% de significância, que o peso dos ratos antes e depois da dieta de recuperação de peso é de fato diferente.
Nessa aula aprendemos dois testes que substituem o teste t em caso de não normalidade:
Teste de Wilcoxon para 1 amostra - Substitui o teste t para uma amostra
Teste de Wilcoxon para duas amostras pareadas - Substitui o teste t para dados pareados
Na próxima aula, veremos o teste de Mann-Whitney, que substitui o teste t para duas amostras independentes, quando não há normalidade nos dados.