Para esta segunda aula prática de Estatística Não Paramétrica, precisaremos do seguinte pacote:
require(BSDA) # Faz o teste do sinal pareado
Para fazer o teste McNemar no R, basta
utilizar a função mcnemar.test() do pacote
base stats. Essa função tem os seguintes
argumentos:
A função mcnemar.test retorna as seguintes saídas:
Uma cidade realiza uma campanha para aumentar a vacinação contra a gripe em uma amostra de 100 pessoas. Os participantes foram entrevistados antes e após a campanha para verificar se haviam se vacinado. Os dados de pré e pós-campanha foram organizados na tabela 2x2 abaixo:
Utilize o teste de McNemar para investigar se houve mudança no comportamento de vacinação após a campanha com um nível de 5% de significância?
Inicialmente, precisamos construir no R a tabela
de contingência. Seguem os comandos:
Tabela = matrix(c(60, 10, 20, 10), nrow = 2, byrow = TRUE,
dimnames = list("Antes" = c("Vacinaram", "Não vacinaram"),
"Depois" = c("Vacinaram", "Não vacinaram")))
Tabela
## Depois
## Antes Vacinaram Não vacinaram
## Vacinaram 60 10
## Não vacinaram 20 10
Com a tabela construída, nota-se que b+c = 10+20 = 30
>25. Assim, não será necessário fazer
correção. Tem-se, portanto, o seguinte comando no
R para este exemplo:
mcnemar.test(x=Tabela,correct=FALSE)
##
## McNemar's Chi-squared test
##
## data: Tabela
## McNemar's chi-squared = 3.3333, df = 1, p-value = 0.06789
Com um p-valor de 0,06789 não rejeita-se a hipótese nula. Assim, há evidências de que a campanha não exerceu mudanças no comportamento das vacinas.
Para fazer o teste do sinal pareado no
R, basta utilizar a função
SING.test do pacote BSDA. Essa função tem os
seguintes argumentos:
Para um nível de confiança \(1-\alpha\), o objetivo é encontrar os
percentis da distribuição binomial(n,0.5) que delimitam
o intervalo para a verdadeira mediana das diferenças. Entretanto,
como a distribuição binomial é discreta, é difícil obter um
intervalo com o nível de confiança \(1-\alpha\) de forma exata. A
função SIGN.test faz, portanto, uma
interpolação para aproximar o intervalo com o nível de
confiança estipulado.
A SIGN.test retorna as seguintes saídas:
Suponha que um pesquisador deseja testar se um novo medicamento reduz a pressão arterial em pacientes hipertensos. Para isso, ele mede a pressão arterial de 10 pacientes antes e depois de tomar o medicamento. Os dados (em mmHg) estão dispostos da seguinte forma:
Considere o teste do sinal pareado com um nível de significância de 5%.
O teste é unilateral à direita, a mediana das diferenças sob \(H_0\) é 0 e utilizaremos \(\alpha=5\%\). Os comandos a seguir fazem o teste:
Antes = c(150,160,165,155,170,180,145,160,170,175)
Depois = c(140,155,170,152,175,170,140,158,172,172)
Teste = SIGN.test(x=Antes,
y=Depois,
md=0,
alternative = "greater",
conf.int= 0.95)
Teste
##
## Dependent-samples Sign-Test
##
## data: Antes and Depois
## S = 7, p-value = 0.1719
## alternative hypothesis: true median difference is greater than 0
## 95 percent confidence interval:
## -2.32 Inf
## sample estimates:
## median of x-y
## 3
##
## Achieved and Interpolated Confidence Intervals:
##
## Conf.Level L.E.pt U.E.pt
## Lower Achieved CI 0.9453 -2.00 Inf
## Interpolated CI 0.9500 -2.32 Inf
## Upper Achieved CI 0.9893 -5.00 Inf
Com um valor-p de 0,1719, não rejeita-se a hipótese nula. Ou seja, há evidências de que a pressão arterial dos pacientes não dimiuiu com o novo medicamento.
Para fazer o teste de postos com sinais de Wilcoxon pareado
no R, basta utilizar a função
wilcox.test do pacote base do R. Ressalta-se
que essa função precisa do argumento
paired=T para o teste pareado. A
função tem os seguintes argumentos:
Com base na distribuição dos postos e no número de observações, você pode usar tabelas de referência do teste de Wilcoxon ou simulações para determinar os percentis desejados (por exemplo, 95%). O intervalo de confiança é formado por valores que correspondem a esses postos em relação à amostra original, indicando os limites inferior e superior do intervalo de confiança para a mediana das diferenças.
A função wilcox.test retorna as seguintes saídas:
Um grupo de 10 atletas foi avaliado em termos de distância percorrida (em metros) em uma corrida de resistência antes e depois de um novo programa de treinamento. Queremos testar se o programa fez diferença no desempenho deles:
Utilize o teste de postos com sinais de Wilcoxon pareado com \(\alpha=5\%\)
O teste é bilateral, a mediana das diferenças sob \(H_0\) é 0 e utilizaremos \(\alpha=5\%\). Os comandos a seguir fazem o teste:
Antes = c(800,950,890,720,860,940,910,870,780,925)
Depois = c(850,970,880,765,820,1000,950,905,765,920)
Teste = wilcox.test(x=Antes,
y=Depois,
alternative = "two.sided",
paired=T,
mu=0,
conf.int=T,
conf.level=0.95)
Teste
##
## Wilcoxon signed rank test with continuity correction
##
## data: Antes and Depois
## V = 12.5, p-value = 0.1392
## alternative hypothesis: true location shift is not equal to 0
## 95 percent confidence interval:
## -45.000021 9.999964
## sample estimates:
## (pseudo)median
## -17.50003
Note que o teste foi executado de maneira corrigida (houve empates). Assim, com um valor-p de 0,1392 não rejeita-se a hipótese nula. Há evidencias de que não houve diferença na performance depois do treinamento.
Consulte a lista prática com os exercícios de 13 a 15.