A maior rede de estudos do Brasil

Grátis
224 pág.
Estatistica usado o R

Pré-visualização | Página 50 de 50

que se formos comparar pro exemplo uma variável com 10 grupos, teríamos
45 pares de grupos, e poderíamos ter então 0.05x(45) = 2.25, ou seja, cerca de 2 pares que tenham
uma diferença estatisticamente significante apenas devido ao acaso, só porque eu multipliquei o
meu erro.
Existem então várias maneiras de se corrigir esse fenômeno e uma das mais comuns é a
correção de Bonferroni, que é também a mais simples e a mais conservativa. O procedimento é
apenas multiplicar o p-valor calculado pelo número de combinações. A única diferença é que a
variância conjunta dos grupos (que é igual à soma dos quadrados média dentro dos grupos) é usada
para todos os pares, sob a pré-suposição que as variâncias são homogêneas.
Vamos ver como fica a variância conjunta para mais de duas amostras (para duas nós já
vimos na aula 5, lembra?): sconj
2 =
n1−1 s12n2−1 s22
n1n2−2
. Mas repare que se temos k grupos em
vez de 2, poderíamos reescrever essa equação:
sconj
2 =
∑
i=1
k
ni−1 si2
∑
i=1
k
ni−1
. 
Mas podemos expandir essa equação para si
2 :
sconj
2 =
∑
i=1
k
ni−1∑
j=1
n i
xij−

x j2/ni−1
n−k
. Veja que o denominador foi também alterado
(só fiz a conta, é o somatório dos n's de todos os grupos, que nada mais é do que o próprio n total,
menos k vezes 1, que é k.) Agora, vamos deslocar esses somatórios e cortar os ni−1 :
sconj
2 =
∑
i=1
k
∑
j=1
n i
xij−

x j2
n−k
Hummmm. Isso está parecendo a doma dos quadrados entre os grupos, dividido pelos seus
graus de liberdade. E é isso mesmo!!! A variância conjunta é igual àquela saída da tabela da
ANOVA, e podemos usá-la para os nossos cálculos. Podemos até conferir isso numericamente para
7
o nosso exemplo aqui. Vamos calcular sconj
2 =
∑
i=1
k
ni−1 si2
∑
i=1
k
ni−1
 no R e comparar com a tabela da
ANOVA. Vamos primeiro criar um vetor para os ni's e outro para os si
2 's:
ni<-c(8,9,5)
si<-tapply(folate, ventilation, var)
Agora podemos facilmente calcular:
> sum((ni-1)*si)/sum((ni-1))
[1] 2090.321
Arredondando confere, né? Bem, é essa variância que temos que usar para fazer os nossos
cálculos 2 a 2. Mas agora, vamos ver o que acontece quando fazemos o nosso teste no R com a
correção de Bonferroni:
> pairwise.t.test(folate, ventilation, p.adj="bonferroni")
 Pairwise comparisons using t tests with pooled SD 
data: folate and ventilation 
 N2O+O2,24h N2O+O2,op
N2O+O2,op 0.042 - 
O2,24h 0.464 1.000 
P value adjustment method: bonferroni 
Usamos então a função pairwise.t.test() com o argumento p.adj="bonferroni", já
que como você percebeu no livro o default não é esse.
Bem, o que essa correção faz na verdade é multiplicar o p-valor originalmente calculado
pelo número de combinações. No nosso caso, para 3 grupos:
> choose(3,2)
[1] 3
Legal, então vamos ver quais seriam os p-valores sem a correção. Para isso basta usar o
argumento p.adj="none":
> pairwise.t.test(folate,ventilation, p.adj="none")
 Pairwise comparisons using t tests with pooled SD 
data: folate and ventilation 
 N2O+O2,24h N2O+O2,op
N2O+O2,op 0.014 - 
O2,24h 0.155 0.408 
P value adjustment method: none 
8
Confira se valores corrigidos são esses valores aqui multiplicados por 3. Um deles não é,
por que?
Bem, é claro que esses p-valores podem ser facilmente obtidos a mão, e esse será um
exercício para você
Relaxando a pressuposição de homoscedasticidade
Como você deve ter aprendido, a ANOVA também exige que as variâncias entre os grupos
seja homogênea, ou seja que haja homoscedasticidade entre os grupos. Assim como no caso do este
t para duas amostras, e também graças a Welch, é possível fazermos um teste que não leva a
homoscedaticidade em conta. Seria muito longo e tedioso mostrar, como fizemos para o teste t o
caminho a ser seguido para essas contas, e portanto nos limitaremos a mostrar como o R faz esse
teste.
Para o caso da comparação geral da ANOVA, teremos que usar uma função diferente da que
usamos anteriormente. Trata-se da oneway.test() que implementa a correção de Welch. Vamos
ver como fica:
> oneway.test(folate~ventilation)
 One-way analysis of means (not assuming equal variances)
data: folate and ventilation 
F = 2.9704, num df = 2.000, denom df = 11.065, p-value = 0.09277
Note que a saída é mais resumida que o teste anterior, mas que agora os graus de liberdade
do denominador são fracionários. Repare que agora o p-valor não é mais significativo, o que pode
significar, como diz o livro que a diferença que estávamos vendo era na verdade devida ao fato de
um dos grupos terem não uma média maior, mas uma variância maior.
Esse mesmo procedimento pode ser usado para comparações múltiplas, usando a mesma
função de antes, mas com um argumento extra, indicando que não queremos a variância (ou o
desvio-padrão) agrupada. Vamos fazer diferente do livro e usar a correção de Bonferroni também:
> pairwise.t.test(folate, ventilation, pool.sd=F, p.adj="bonferroni")
 Pairwise comparisons using t tests with non-pooled SD 
data: folate and ventilation 
 N2O+O2,24h N2O+O2,op
N2O+O2,op 0.087 - 
O2,24h 0.482 0.893 
P value adjustment method: bonferroni 
O argumento pool.sd=F pede então que usemos desvios-padrão não agrupados. Repare que
agora nenhum p-valor é significativo também. O problema das variâncias diferentes entre os grupos
também ocorre aqui, como vimos no teste geral acima.
Apresentação gráfica
Essa seção do livro é mais uma curiosidade de como apresentar esse tipo de dados no R.
Nós já até usamos a função stripchart() no início dessa aula. Vou então fornecer o código para
você não ter que digitar, mas não tenho nada a acrescentar ao texto:
xbar <- tapply(folate, ventilation, mean)
9
s <- tapply(folate, ventilation, sd)
n <- tapply(folate, ventilation, length)
sem <- s/sqrt(n)
stripchart(folate~ventilation, "jitter", jit=0.05,pch=16, vert=T)
arrows(1:3, xbar+sem, 1:3, xbar-sem, angle=90, code=3, length=0.1)
lines(1:3, xbar, pch=4, type="b", cex=2)
O código é bem parecido com o que usamos anteriormente para construir os gráficos dos
intervalos de confiança, e essas funções podem ser melhor entendidas através da ajuda para cada
uma delas, além da explicação do livro.
Teste de Bartlett
Não entendi porque esta seção está aqui e não antes da seção de relaxamento da
homoscedasticidade, mas como estou seguindo o livro, deixa para lá. Como no caso de duas
amostras, você pode querer comparar as variâncias de 3 ou mais amostras ao mesmo tempo para
saber se deve ou não fazer a ANOVA com ou sem homoscedasticidade. O R tem implementado o
teste de Bartlett (usuários do Epiinfo vão se lembrar dele).
Não vamos entrar em detalhes também sobre este teste, mas estaremos testando a
homogeneidade das variâncias entre os grupos, e este teste, assim como o teste F que já tínhamos
visto para duas variâncias na aula 5, também é bastante sensível a distribuições não-normais.
Vamos ver como fica:
> bartlett.test(folate~ventilation)
 Bartlett test for homogeneity of variances
data: folate by ventilation 
Bartlett's K-squared = 2.0951, df = 2, p-value = 0.3508
Surpreendentemente, o teste não nos permite concluir que alguma das variâncias sejam
diferentes, apesar dos nossos testes terem se modificado bastante, quando não assumimos
homoscedasticidade anteriormente e apesar também do primeiro grupo parecer mais disperso que os
demais (veja no livro ou faça o gráfico.) A normalidade pode ter nos atrapalhado aqui...
Teste de Kruskal-Wallis
Também não vamos nos estender muito nesse teste que nada mais é do que uma
generalização do teste de Wilcoxon para mais de duas amostras, ou seja um teste não-paramétrico
para mais de dois grupos independentes.
Os cálculos são na verdade bastante parecidos com o teste de Wilcoxon, mas vamos poupá-
los das contas infindáveis. A idéia dos ranks é a mesma e agora estamos comparando vários
conjuntos de ranks em vez de apenas 2.
A função kruskal.test() implementa esse