Para esta sexta aula prática de Estatística Não Paramétrica, precisaremos dos seguintes pacotes:
require(DescTools) # Faz o teste de Jonckheere-Terpstra e Dunn
require(multcompView) # Auxilia nas comparações múltiplas
Para executar o teste de Jonckheere-Terpstra no
R, utilizaremos a função
JonckheereTerpstraTest do pacote DescTools. A
função JonckheereTerpstraTest precisa dos seguintes
argumentos:
A função JonckheereTerpstraTest retorna as seguintes saídas:
Uma equipe de pesquisa queria determinar se havia uma tendência significativa entre a capacidade de quatro ingredientes comuns de limpeza doméstica ao matar bactérias. A expectativa deles era que a ordem do menos para o mais eficaz fosse detergente, amônia, vinagre e um alvejante. Eles então realizaram uma série de experimentos e contaram a porcentagem de bactérias mortas conforme mostrado na figura abaixo:
Perceba como os grupos formados pelos tipos de produtos de limpeza configuram amostras independentes. Com base nesses dados, determine se há uma tendência crescente no percentual de bactérias mortas ao longo do uso destes produtos. Para isto, utilize o teste de Jonckheere-Terpstra com um nível de significância de 5% para investigar se há uma tendência crescente.
As hipóteses de interesse serão, portanto:
Inicialmente, precisamos salvar a base de dados em um
objeto. Como podemos ter dados desbalanceados,
uma estratégia interessante é salvar a base em um
objeto list. Os comandos a seguir fazem
isso:
Dados <- list(
Detergente = c(45,35,51,31,62),
Amônia = c(59,53,31,47,42,59),
Vinagre = c(49,69,52,55,63),
Alvejante = c(72,55,65,58,61,51)
)
Como a hipótese alternativa objetiva verificar uma tendência crescente e, com os dados armazenados, o teste é realizado com o seguinte comando:
TesteJT = JonckheereTerpstraTest(Dados, alternative = "increasing")
TesteJT
##
## Jonckheere-Terpstra test
##
## data: Dados
## JT = 133.5, p-value = 0.005922
## alternative hypothesis: increasing
Com um valor-p bem 0.005922, a hipótese nula é rejeitada e há evidências de que o a porcentagem de bactérias mortas é crescente ao longo dos produtos de limpeza.
Se fosse necessário testar uma tendência
decrescente, basta utilizar o argumento
alternative = "decreasing" na função principal.
Um pesquisador quer avaliar a eficácia de três diferentes programas de relaxamento no alívio do estresse em estudantes universitários durante o período de provas. Os programas são os seguintes:
Após um mês participando dos programas, os estudantes foram avaliados quanto ao nível de redução de estresse percebido, em uma escala ordinal:
Devido à disponibilidade de recursos e horários, os grupos possuem tamanhos desbalanceados:
Os dados observados são os seguintes:
O objetivo é testar se há uma tendência crescente nos níveis de redução de estresse entre os programas (do A ao C), dado que o Programa C é o mais intensivo e o Programa A o menos intensivo.
Os dados no R podem ser armazenados assim:
Dados <- list(
Programa_A = c(1,2,1,1,2,1,2,1,3),
Programa_B = c(2,2,3,2,3,1,2,1,3,2),
Programa_C = c(3,2,3,2,1,2,3,3,2,3,2)
)
Queremos verificar, com o teste de Jonckheere Terpstra, se há uma tendência crescente no indicador ao nível de significância de \(\alpha = 5%\)
Para fazer o teste de no R, basta
utilizar a função kruskal.test() do pacote
base do R. Essa função tem o seguinte
argumento:
A função kruskal.test() retorna as seguintes saídas:
Considere o objetivo de avaliar o desempenho do marcador de células endoteliais anti-CD34 em neoplasia cervical uterina, em lesões intra-epiteliais e no colo normal. São 4 grupos observados:
Para cada mulher em cada grupo, foi coletada o número de vasos corados com anti cd34. Os dados são:
Considerando um nível de significância de 5%, deseja-se saber se há diferença significativa na mediana da contagem de vasos corados com anti cd34.
As hipóteses de interesse serão, portanto:
Inicialmente, precisamos salvar a base de dados em um objeto. Os comandos a seguir fazem isso:
Dados <- list(
Grupo_A = c(161,160,128,168,131,107,219,147,175,
119,190,203,107,153,128,209,142,124),
Grupo_B = c(128,131,125,141,157,132,143,112,131,
128,139,135,127,121,168),
Grupo_C = c(121,98,81,128,91,117,136,95,105,128,
90,151,129,95,112),
Grupo_D = c(109,65,97,96,110,67,106,102,80,96)
)
com os dados armazenados, o teste é realizado com o seguinte comando:
TesteKW = kruskal.test(Dados)
TesteKW
##
## Kruskal-Wallis rank sum test
##
## data: Dados
## Kruskal-Wallis chi-squared = 29.628, df = 3, p-value = 1.653e-06
Com um valor p bem próximo de 0 rejeita-se a hipótese nula. Isto é, há evidências de que **pelo menos um dos grupos possui uma mediana das contagens de vasos corados com anti d34* diferente de algum dos demais.
Como o exemplo anterior indicou que há diferenças na medianas das contagens de vasos corados com anti d34, é importante conduzir mais um passo na análise e fazer as comparações múltiplas segundo o teste de Dunn em cada par de combinações dos métodos.
O pacote PMCMRplus possui a função
DunnTest() que já faz todas as comparações
múltiplas necessárias. Basta colocar os dados como
argumento e a correção necessária
(method = "holm","bonferroni","bh")
matriz_p_value_bonf = DunnTest(Dados, method = "bonferroni")$pmat
matriz_p_value_holm = DunnTest(Dados, method = "holm")$pmat
matriz_p_value_bh = DunnTest(Dados, method = "BH")$pmat
Para obter as letras, tem-se os seguintes comandos:
letras_bonf = multcompLetters(matriz_p_value_bonf)
letras_holm = multcompLetters(matriz_p_value_bonf)
letras_bh = multcompLetters(matriz_p_value_bh)
letras_bonf
## 1 2 3 4
## "a" "ab" "bc" "c"
letras_holm
## 1 2 3 4
## "a" "ab" "bc" "c"
letras_bh
## 1 2 3 4
## "a" "a" "b" "b"
Como não temos um número muito grande de comparações múltiplas, podemos utilizar Bonferroni ou Holm-Bonferroni. Ambos concordam que o grupo A é diferente do grupo D. Grupos A e B são iguais, Grupos B e C são iguais e os grupos C e D são iguais.
Você quer investigar a eficácia de quatro diferentes técnicas de aprendizado de idiomas em melhorar a velocidade de compreensão de frases em uma nova língua. Os grupos são:
Para cada indivíduo em cada Grupo foi coletada o tempo de reação dos indivíduos, medido em segundos. Esse tempo reflete a velocidade de compreensão de frases em uma nova língua após cada técnica de aprendizado. Os dados observados foram:
Dados <- list(
Grupo_A = c(5.2, 5.5, 5.0, 6.1, 5.7, 5.9, 6.0, 5.4, 5.6, 5.3, 6.2, 5.8), #
Grupo_B = c(4.3, 4.5, 4.1, 4.6, 4.8, 4.4, 4.2, 4.7, 4.6, 4.3), #
Grupo_C = c(3.9, 4.1, 3.8, 4.0, 4.2, 3.7, 3.6, 3.8), #
Grupo_D = c(4.7, 4.8, 5.0, 4.9, 4.6, 4.5, 5.1, 4.8, 4.9) #
)
Na lista prática, resolva os exercícios 10 e 11.