Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
| 02_tutoriais:tutorial6:start [2020/09/30 01:40] – [6a. Teste de Hipótese] rafael.melhem | 02_tutoriais:tutorial6:start [2023/08/29 19:22] (atual) – edição externa 127.0.0.1 | ||
|---|---|---|---|
| Linha 1: | Linha 1: | ||
| + | <WRAP tabs> | ||
| + | * [[02_tutoriais: | ||
| + | * [[01_curso_atual: | ||
| + | * [[03_apostila: | ||
| + | </ | ||
| + | ====== 6a. Teste de Hipótese ====== | ||
| + | <WRAP center round box 60%> | ||
| + | === Vídeo de aula síncrona gravada no google meet em 28/09/2020, não editado. === | ||
| + | |||
| + | {{ youtube> | ||
| + | |||
| + | </ | ||
| + | |||
| + | O teste de hipótese é um instrumento poderoso para a tomada de decisão e é parte fundamental do procedimento científico de experimentos. Os testes estão baseados no conceito de variável aleatória, que são aquelas em que o resultado de um evento pode variar. Ou seja, quase tudo o que nos rodeia. Por exemplo, // | ||
| + | |||
| + | No teste de hipótese, assumimos que os dados variam e avaliamos se o resultado encontrado pode ter sido gerado pelo acaso e não pelo tratamento que estamos testando. No caso do // | ||
| + | Vamos visitar estes e outros conceitos associados aos testes de hipóteses, utilizando as ferramentas disponíveis no R. | ||
| + | |||
| + | /* | ||
| + | [[https:// | ||
| + | */ | ||
| + | |||
| + | |||
| + | ===== Chacal Dourado ===== | ||
| + | |||
| + | {{: | ||
| + | Os dados são provenientes da coleção do Museu Britânico de História Natural em Londres e foram publicados em um artigo de 1980. Aqui estamos interessados apenas nos <wrap hi> | ||
| + | | ||
| + | Como foram avaliados apenas 10 machos e 10 fêmeas, vamos entrar esses dados diretamente no R: | ||
| + | |||
| + | <code rsplus> | ||
| + | |||
| + | macho <- c(120, 107, 110, 116, 114, 111, 113, 117, 114, 112) | ||
| + | femea <- c(110, 111, 107, 108, 110, 105, 107, 106, 111, 111) | ||
| + | chacal <- c(macho, femea) | ||
| + | sexo <- factor(rep(c(" | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Dois Gráficos para ver os mesmos dados ===== | ||
| + | |||
| + | Vamos avaliar esses dados graficamente. O código abaixo produz um gráfico de caixa (boxplot) e também um gráfico, pouco usual, mas que nos permite visualizar a variação que existe nos dados. Vamos usar esse tipo de representação gráfica ao longo desse tutorial. Tenha certeza que entendeu o que está representado nessa figura! | ||
| + | |||
| + | <code rsplus> | ||
| + | x11(width = 12, heigh = 6) | ||
| + | par(mfrow = c(1, 2), cex = 1.5) | ||
| + | boxplot(chacal ~ sexo, ylab = " | ||
| + | plot(1:20, chacal, pch = rep(c(15, 16), each = 10), col = rep(1:2, each = 10), xlab = " | ||
| + | medsex <- c(mean(macho), | ||
| + | segments(x0 = 1:20, y0 = chacal, y1 = rep(medsex, each = 10), col= rep(1:2, each = 10)) | ||
| + | lines(c(1, | ||
| + | lines(c(11, | ||
| + | </ | ||
| + | |||
| + | <WRAP center round box 90%> | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | </ | ||
| + | |||
| + | Agora que já visualizou o gráfico, vamos retornar os parâmetros globais para o padrão e fechar o dispositivo de tela: | ||
| + | |||
| + | <code rsplus> | ||
| + | par(mfrow = c(1,1), cex = 1) | ||
| + | dev.off() | ||
| + | </ | ||
| + | |||
| + | ===== Pergunta ===== | ||
| + | |||
| + | {{: | ||
| + | Por que estamos olhando para esses dados? Por que estou fazendo esse curso? Podemos nos perguntar tantas coisas... O importante é saber o que estamos fazendo e para quê. Qual a nossa hipótese?! Neste tutorial, a pergunta é usada para ilustrar o teste de hipótese. Mesmo assim, a pergunta é a condutora de toda a lógica do teste. Podemos fazer uma pergunta simples, por exemplo: se o tamanho da mandíbula difere entre machos e fêmeas. Uma outra pergunta poderia ser se os <wrap em> | ||
| + | Nesse tutotial, vamos nos ater à segunda. Nesse caso, uma medida que nos fornece informações sobre nossa pergunta é a diferença entre as mandíbulas de machos e fêmeas. Mas qual valor iremos usar para calcular essa diferença? Há várias possibilidades, | ||
| + | |||
| + | Vamos olhar para esses valores e armazenar essa diferença entre médias: | ||
| + | |||
| + | <code rsplus> | ||
| + | tapply(chacal, | ||
| + | tapply(chacal, | ||
| + | tapply(chacal, | ||
| + | diff(tapply(chacal, | ||
| + | difsex <- diff(tapply(chacal, | ||
| + | </ | ||
| + | |||
| + | ==== Estatísticas de interesse ==== | ||
| + | |||
| + | A estatística de interesse é um valor que resume nossa hipótese, nesse caso, a diferença do tamanho médio entre sexo. Nossa resposta está dada: as mandíbulas de machos são em média maiores que as das fêmeas! | ||
| + | Além disso, temos uma estimativa do efeito associado: em média os machos têm mandíbulas '' | ||
| + | Algumas indagações emergem a partir desta afirmação: | ||
| + | | ||
| + | * **Essa diferença pode ser gerada pelo acaso?** | ||
| + | |||
| + | Ou ainda mais precisamente: | ||
| + | |||
| + | * <wrap em>Qual a possibilidade desta diferença ser gerada pelo acaso?</ | ||
| + | |||
| + | |||
| + | ==== Variável Aleatória ==== | ||
| + | |||
| + | A pergunta acima pode ser respondida se assumirmos alguns pressupostos sobre a variabilidade dos dados. Por exemplo, que a variável aleatória, tamanho de mandíbula, se ajusta a uma distribuição normal. Vamos olhar os valores e compará-los com a distribuição normal com mesma média e desvio padrão dos dados. | ||
| + | |||
| + | |||
| + | <code rsplus> | ||
| + | hist(chacal, | ||
| + | curve(exp=dnorm(x, | ||
| + | </ | ||
| + | |||
| + | Como só temos 20 valores, vamos ser generosos com os dados e considerar que estão bem acoplados a uma distribuição probabilística normal, para fins didáticos((Este é um pressuposto sério e deve ser avaliado para definir o tipo de análise que será usada)). | ||
| + | |||
| + | |||
| + | ===== Simulando Dados ===== | ||
| + | |||
| + | Tendo a premissa acima podemos utilizar a função '' | ||
| + | |||
| + | <code rsplus> | ||
| + | ## 10 valores de um distribuicao normal | ||
| + | rnorm(10, | ||
| + | ## diferenca entre as medias de 10 valores | ||
| + | mean(rnorm(10, | ||
| + | |||
| + | </ | ||
| + | |||
| + | Para deixar o código mais compacto, vamos atribuir a média e o desvio padrão dos dados ao objeto '' | ||
| + | |||
| + | <code rsplus> | ||
| + | (mch <- mean(chacal)) | ||
| + | (sdch <- sd(chacal)) | ||
| + | (mean(rnorm(10, | ||
| + | </ | ||
| + | ===== Cenário Nulo ===== | ||
| + | {{: | ||
| + | O cenário acima simula a situação em que os valores de machos e fêmeas são provenientes da mesma distribuição normal. Portanto, qualquer diferença encontrada é devida apenas ao acaso. A fonte nesse caso é o procedimento de amostra. Justamente o caso descrito na abertura desse tutorial. Percebam como os valores resultantes variam: | ||
| + | |||
| + | <code rsplus> | ||
| + | mean(rnorm(10, | ||
| + | mean(rnorm(10, | ||
| + | mean(rnorm(10, | ||
| + | mean(rnorm(10, | ||
| + | mean(rnorm(10, | ||
| + | mean(rnorm(10, | ||
| + | mean(rnorm(10, | ||
| + | mean(rnorm(10, | ||
| + | mean(rnorm(10, | ||
| + | mean(rnorm(10, | ||
| + | </ | ||
| + | |||
| + | Fazendo isso muitas vezes podemos comparar o valor observado com a distribuição esperada devido ao acaso. Com isso podemos responder nossa pergunta: será que o acaso poderia gerar a diferença observada? Copiar essa linha de comando 1000 vezes seria tedioso! Para resolver isso, vamos aprender uma ferramenta poderosa e um clássico na linguagem de programação: | ||
| + | |||
| + | ==== Criando Ciclos ==== | ||
| + | |||
| + | A função '' | ||
| + | |||
| + | Veja o efeito do código abaixo. A função '' | ||
| + | |||
| + | |||
| + | |||
| + | <code rsplus> | ||
| + | for(i in 1:10) | ||
| + | { | ||
| + | cat(" | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Pronto! <wrap em> | ||
| + | |||
| + | |||
| + | Vamos utilizá-la então para simular, muitas e muitas vezes, o nosso cenário nulo. Aqui, o pulo do gato é preparar um objeto, antes de iniciar o ciclo, para guardar os resultados de cada iteração. | ||
| + | A variável '' | ||
| + | |||
| + | <code rsplus> | ||
| + | nsim <- 1000 | ||
| + | ## criando o objeto para guardar o resultado | ||
| + | cenaNula <- rep(NA, nsim) | ||
| + | ## ciclo de iteração | ||
| + | cenaNula[1] <- difsex | ||
| + | for(i in 2:nsim) | ||
| + | { | ||
| + | cenaNula[i] <- mean(rnorm(10, | ||
| + | |||
| + | } | ||
| + | str(cenaNula) | ||
| + | </ | ||
| + | |||
| + | É comum no R haver mais de uma maneira de fazer a mesma coisa. Dê uma olhada na função '' | ||
| + | ==== Visualizando a simulação ==== | ||
| + | |||
| + | Vamos agora usar a ** animada** função chamada {{ : | ||
| + | |||
| + | <WRAP center round alert 60%> | ||
| + | Atenção usuários do RStudio: a função '' | ||
| + | </ | ||
| + | |||
| + | * Baixe o arquivo {{ : | ||
| + | * Carregue o arquivo no seu espaço de trabalho: | ||
| + | * com o comando '' | ||
| + | * abrindo o arquivo de código((o código dentro do arquivo cria um objeto da classe '' | ||
| + | * Em seguida, rode a última linha do código abaixo para simular o teste de diferença entre as médias. | ||
| + | |||
| + | <code rsplus> | ||
| + | x11(width = 10, height = 10) | ||
| + | source(" | ||
| + | simulaT(chacal[sexo == " | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ==== Probabilidade do Acaso ==== | ||
| + | |||
| + | Vamos usar os valores que produzimos para gerar um histograma da nossa simulação. | ||
| + | |||
| + | <code rsplus> | ||
| + | par(las = 1, cex = 1.2) | ||
| + | hist(cenaNula, | ||
| + | </ | ||
| + | Agora, podemos calcular agora quantas vezes o cenário nulo, ou o acaso, gerou diferenças iguais ou maiores que à diferença observada nos dados: | ||
| + | |||
| + | <code rplus> | ||
| + | sum(cenaNula >= difsex) | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | Vamos indicar esses valores no gráfico: | ||
| + | |||
| + | <code rplus> | ||
| + | histNull <- hist(cenaNula, | ||
| + | str(histNull) | ||
| + | histNull$breaks | ||
| + | cols <- rep(c(rgb(0, | ||
| + | plot(histNull, | ||
| + | abline(v = difsex, lty = 2) | ||
| + | </ | ||
| + | |||
| + | <WRAP center round box 40%> | ||
| + | {{ : | ||
| + | </ | ||
| + | |||
| + | Dividindo esse valor pelo número de simulações que foram feitas temos uma estimativa da **probabilidade do acaso**. | ||
| + | |||
| + | <code rsplus> | ||
| + | sum(cenaNula >= difsex)/ | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | <WRAP center round tip 90%> | ||
| + | |||
| + | <WRAP center round box 90%> | ||
| + | |||
| + | ==== Interpretado o resultado ==== | ||
| + | |||
| + | O cenário nulo, onde não há diferenças entre os sexos, gerou valores maiores ou iguais à diferença observada em 3 casos((no caso da minha simulação. Esse valor irá variar tendo em vista que o cenário nulo é construído com valores aleatórios, | ||
| + | |||
| + | </ | ||
| + | |||
| + | </ | ||
| + | |||
| + | Como essa probabilidade é muito baixa, eu particularmente, | ||
| + | |||
| + | <wrap em>Os machos de chacal dourado apresentam mandíbulas maiores, em média, que as fêmeas.</ | ||
| + | |||
| + | E posso dizer ainda, que posso estar errado, mas a probabilidade de incorrer em erro ao fazer essa afirmação é pequena, cerca de '' | ||
| + | |||
| + | O valor de probabilidade que acabamos de calcular é, sem dúvida, a estatística mais famosa e polêmica do teste de hipótese: o <wrap em> | ||
| + | |||
| + | |||
| + | <WRAP center round box 90%> | ||
| + | |||
| + | ===== I CAN SEE CLEAR NOW! ===== | ||
| + | {{: | ||
| + | O p-valor está em crise! Muitos artigos têm sido publicados recentemente discutindo o <wrap em> | ||
| + | <wrap em> | ||
| + | Aqui uma seleção de artigos sobre o tema: | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | ===== Bicaudal e Unicaudal ===== | ||
| + | |||
| + | A outra pergunta simples que poderíamos fazer sobre esses dados é: | ||
| + | * <wrap em> | ||
| + | |||
| + | Neste caso, não estamos preocupados se a diferença é macho maior que fêmea ou fêmea maior que macho. Apenas nos perguntamos se há diferença entre os sexos. Nesse caso, o cálculo do '' | ||
| + | |||
| + | <code rsplus> | ||
| + | sum(Mod(cenaNula) >= abs(difsex)) | ||
| + | sum(Mod(cenaNula) >= abs(difsex))/ | ||
| + | </ | ||
| + | |||
| + | O resultado deve ser por volta de '' | ||
| + | |||
| + | <code rsplus> | ||
| + | cols <- rep(c(rgb(1, | ||
| + | plot(histNull, | ||
| + | abline(v = c(difsex, -1* difsex), lty = 2) | ||
| + | savePlot(" | ||
| + | </ | ||
| + | |||
| + | <WRAP center round box 40%> | ||
| + | {{ : | ||
| + | </ | ||
| + | |||
| + | |||
| + | Acabamos de recriar um dos teste mais famosos da estatística frequentista clássica: <wrap em>o teste t de Student</ | ||
| + | |||
| + | ===== O teste t de Gosset ===== | ||
| + | |||
| + | William Gosset trabalhava na cervejaria [[https:// | ||
| + | |||
| + | |||
| + | |||
| + | A estatística '' | ||
| + | |||
| + | <WRAP center round box 40%> | ||
| + | {{: | ||
| + | </ | ||
| + | |||
| + | |||
| + | Vamos calcular a estatística '' | ||
| + | |||
| + | <code rsplus> | ||
| + | ## variancias | ||
| + | (varMacho <- var(macho)) | ||
| + | (varFemea <- var(femea)) | ||
| + | ## residuos medios | ||
| + | (resMF <- sqrt((varMacho/ | ||
| + | ## statistica t | ||
| + | (tsex <- difsex/ | ||
| + | </ | ||
| + | |||
| + | Vamos agora calcular a probabilidade associada ao teste t, para este valor, usando a função '' | ||
| + | |||
| + | <code rsplus> | ||
| + | pt(tsex, df = 8, lower.tail = FALSE) | ||
| + | </ | ||
| + | |||
| + | Podemos também fazer o teste usando a função '' | ||
| + | |||
| + | <code rsplus> | ||
| + | sexoFator <- factor(sexo, | ||
| + | t.test(chacal ~ sexo, alternative = " | ||
| + | </ | ||
| + | |||
| + | |||
| + | As diferenças entre o valor do '' | ||
| + | |||
| + | <WRAP center round todo 60%> | ||
| + | Agora, siga para os [[01_curso_atual: | ||
| + | </ | ||
| + | |||