Estatistica usado o R
224 pág.

Estatistica usado o R


DisciplinaBioestatística I4.649 materiais34.927 seguidores
Pré-visualização50 páginas
da F) até este ponto e depois, claro, multiplicar por dois, para obtermos um p-valor
bicaudal. Veja no gráfico abaixo.
A área hachurada representa a área de zero até 0.784, o valor da nossa estatística. Para
calcular essa área, basta então usarmos uma função para calcular a função de densidade acumulada
de uma F com esses parâmetros e multiplicar por 2:
> 2*pf(s2/s1, df1=n2-1, df2=n1-1)
[1] 0.679746
Confere? Ótimo. Repare que tanto faz qual variância está no numerador e qual está no
denominador. Você vai conferir como o resultado é o mesmo como um exercício.
10
Testes para normalidade
Muito embora o teste t seja bastante robusto em relação à normalidade da população de
onde provém a amostra, especialmente pra um tamanho de amostra suficientemente grande, muitas
vezes desejamos verificar se a amostra vem ou não de uma distribuição Normal.
Nós já aprendemos a fazer essa verificação visualmente, através especialmente do Q-Q plot,
mas ainda não definimos nenhum teste formal para isso.
Um dos testes mais usados para esse fim é o teste de Shapiro-Wilk, que nada mais faz do
que testar a linearidade de um Q-Q plot. O R tem uma implementação desse teste. Vamos ver como
se comporta o nosso banco energy para cada uma das classes:
> shapiro.test(expend[stature=='lean'])
 Shapiro-Wilk normality test
data: expend[stature == "lean"] 
W = 0.8673, p-value = 0.04818
> shapiro.test(expend[stature=='obese'])
 Shapiro-Wilk normality test
data: expend[stature == "obese"] 
W = 0.876, p-value = 0.1426
Repare que o grupo de magras tem um p-valor que rejeita a normalidade (essa é a hipótese
nula), mas de maneira bem fronteiriça. Compare com o Q-Q plot para esses grupos e vejam se você
se sentiria à vontade de usar um teste paramétrico para esse banco.
Teste de Wilcoxon para duas amostras
11
Assim como a idéia do teste t para duas amostras tem a mesma lógica do que o para uma
amostra, o mesmo acontece com o teste não paramétrico. Para esse teste vamos descrever um pouco
mais detalhdamente o processo de obtenção do p-valor, usando uma aproximação Normal.
Resumindo, você pode lançar mão de um teste não paramétrico caso não se sinta seguro em
assumir a normalidade da população de onde veio a sua amostra, ou a sua amostra é pequena e você
não está muito certo se o TLC vai mesmo ajudar. 
Vamos ver um exemplo com a mesma base acima:
> wilcox.test(expend~stature)
 Wilcoxon rank sum test with continuity correction
data: expend by stature 
W = 12, p-value = 0.002122
alternative hypothesis: true mu is not equal to 0 
Warning message: 
Cannot compute exact p-value with ties in: wilcox.test.default(x = c(7.53,
7.48, 8.08, 8.09, 10.15, 8.4, 
Repare que essa saída é bastante parecida com aquela do teste para uma amostra somente. A
diferença está na estatística calculada \u2013 agora é W e não mais V. Note também que o problema dos
empates continuam a nos incomodar nesse caso também.
O cálculo da estatística W é um pouco diferente e consiste em ordenar as observações em
ambos os grupos, independentemente do grupo ao qual a observação pertence e então calcular a
soma dos ranks em um dos grupos, diminuindo-se a soma do mínimo teórico para esse mesmo
grupo. Não faz diferença que grupo escolhemos, mas vamos adotar o mesmo que o R usou, que foi
o grupo de magros. Primeiro vamos ordenar a variável expend:
> rank(expend)
 [1] 14.0 5.0 3.5 8.0 9.0 18.0 11.0 19.0 1.0 7.0 20.0 22.0 2.0 21.0
17.0 3.5 12.0 16.0 15.0 6.0 13.0 10.0
Note que existem de fato empates, denotados pelo rank 3.5 presente nesse vetor acima.
Agora, temos que pegar a soma dos ranks no grupo de magros:
> soma.lean <- sum(rank(expend)[stature=='lean'])
> soma.lean
[1] 103
Bem, agora temos que diminuir esse valor da soma do mínimo teórico. Parece enigmático?
Mas não é, isso significa apenas que esse é o caso onde todos os ranks desse grupo são os menores
possíveis, logo esse valor nada mais é do que a soma de um vetor que vai de 1 até o tamanho do
vetor formado apenas pelo grupo de magros, entendeu? É como se os todos os magros tivessem os
menores valores para a variável expend. Vamos ver como fica:
> soma.teorica <- sum(1:length(expend[stature=='lean']))
> soma.teorica
[1] 91
Se você não entendeu o código acima, veja o que acontece dentro dessa soma:
> 1:length(expend[stature=='lean'])
 [1] 1 2 3 4 5 6 7 8 9 10 11 12 13
12
Entendeu? É só um vetor seqüencial de 1 até o número de observações do grupo de magros.
Agora ficou fácil computar a estatística W, não é mesmo?
> soma.lean-soma.teorica
[1] 12
Muito bem. Agora vamos precisar de alguma teoria para podermos obter o p-valor que o R
calculou. Sem entrar em detalhes, pode ser mostrado que para um tamanho de amostra
suficientemente grande \u2013 estamos falando de pelo menos 10 obervações em cada grupo, o que
quase acontece no nosso caso, teremos:
E \ue09eW \ue09f= n1 n2
2
 onde, por convenção n1 é o tamanho da amostra no grupo para o qual
calculamos W e n2 para o outro grupo. Além disso:
Var \ue09eW \ue09f=\ue09e n1 n212 \ue09f\ue09en1\ue083n2\ue0831\ue09f
Existe um pequeno problema, porém. Na presença de empates, a média esperada de W não é
alterada, mas a sua variância tem que sofrer uma correção, que consiste em subtrair um valor,
calculado segundo o número de empates presentes na amostra. Vamos ver como fica, na presença
de empates:
Var \ue09eW \ue09f=\ue09e n1 n212 \ue09f[n1\ue083n2\ue0831\u2212 \u2211i=1
g
ti \ue09e ti2\u22121\ue09f
\ue09en1\ue083 n2\ue09f \ue09en1\ue083 n2\u22121\ue09f
] onde g é o número de grupos
de ranks empatados e t é o número de valores empatados nesse grupo.
Ihhhh! Complicou, né? Mas é mais fácil do que parece. Isso só quer dizer que podemos ter
mais de um grupo de valores iguais em uma mesma amostra. Por exemplo, podemos ter 2 valores
iguais a, digamos 10. Se esses fossem os ranks 3 a 4, cada um deles receberia o valor 3.5. Esses
dois valores seriam um grupo, com 2 valores empatados. Poderíamos então ter outro grupo de
valores, por exemplo 20, que seriam os ranks de 10 a 13, e cada um deles receberia o valor de 5.75,
e teríamos então 4 valores empatados nesse grupo.
Nós já desconfiávamos que havia pelo menos um grupo de empates no nosso banco. Vamos
conferir:
> sort(expend)
 [1] 6.13 7.05 7.48 7.48 7.53 7.58 7.90 8.08 8.09 8.11 8.40
8.79 9.19 9.21 9.68 9.69 9.97 10.15 10.88 11.51 11.85 12.79
Parece que nós só temos mesmo um grupo, correspondendo ao valor 7.48, com o rank de 3.5
e com apenas 2 valores para eles. Ora, então a nossa conta vai ser bem simples, não é verdade?
Vamos ver mais adiante...
Bem, com as informações com essas informações, fica fácil nós calcularmos um z de uma
Normal e calcular um p-valor para esse escore. Vamos aos cálculos. Primeiro vamos colocar os
nossos tamanhos dos grupos em vetores para facilitar a nossa vida:
n1 <- length(expend[stature=='lean'])
n2 <- length(expend[stature=='obese'])
Agora vamos calcular a média de W:
media<-(n1*n2)/2
13
Para facilitar a vida, vamos primeiro calcular aquele fator de correção lá de cima. Observe
que não haverá soma alguma, pois só temos um único grupo, e que o valor de t é 2:
correcao<-(2*((2^2)-1))/((n1+n2)*(n1+n2-1))
Agora vamo à variância, não nos esquecendo de acrescentar (ou melhor, diminuir) o fator de
correção para os empates:
variancia<-(n1*n2/12)*(n1+n2+1-correcao)
Bem, agora o cálculo de z ficou muito fácil , não é mesmo? Todos já cansamos de fazer isso:
> (12-media)/sqrt(variancia)
[1] -3.106057
E agora você deve estar pensando: basta eu ver a área sob a curva da Normal que
corresponde a esse valor de z, multiplicar por 2 e obter o p-valor, certo? Bem, não é bem assim...
Vamos tentar fazer isso:
> 2*pnorm((12-media)/sqrt(variancia))
[1] 0.001896004
Esse valor não bate com o p-valor achado por causa de um detalhe que ainda não vimos,
mas que será abordado em uma outra aula. Repare o que essa linha da saída diz:
Wilcoxon rank sum test with continuity correction
É por causa dessa \u201ccorreção de continuidade\u201d que não obtemos o mesmo resultado.
Rapidamente, o que isso significa é que como estamos aproximando uma distribuição discreta (a
soma dos