Ferramentas do usuário

Ferramentas do site


02_tutoriais:tutorial6b:start

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
Próxima revisão Ambos lados da revisão seguinte
02_tutoriais:tutorial6b:start [2020/09/25 20:41]
adalardo [Graus de Liberdade]
02_tutoriais:tutorial6b:start [2023/08/29 16:59]
127.0.0.1 edição externa
Linha 6: Linha 6:
 ====== 6b. Partição da Variação dos Dados ====== ====== 6b. Partição da Variação dos Dados ======
  
-O teste t, apresentado no [[02_tutoriais:​tutorial6:​start|tutorial 6a]] é usado apenas para o caso de termos uma variável resposta numérica contínua e uma preditora categórica com **dois níveis**. Caso a preditora tenha mais do que dois níveis, precisamos usar um outro teste que é uma generalização do teste t, o teste de <wrap em>​Análise de Variância</​wrap>​ ou <wrap em>​ANOVA</​wrap>​. O teste está baseado no princípio de partição da variação dos dados. A variação total dos dados é particionada nos componentes do que é explicado e aquele que não é explicado pela variável preditora categórica. Esse conceito é aplicado de maneira mais ampla na estatística,​ utilizado em outros tipos de estatística e para a tomada de decisão do modelo que melhor explica a variação nos dados. Por isso, vamos focar este tutorial no <wrap em>​conceito da partição da variação</​wrap>​. ​+<WRAP center round box 60%> 
 +== Vídeo gravado pelo Google Meet em aula síncrona no dia 30 de setembro de 2020. Sem edição. == 
 +{{ youtube>​7ExgVGTbvX0 }} 
 +</​WRAP>​ 
 + 
 + 
 +<WRAP center round box 60%> 
 +{{  :​02_tutoriais:​tutorial6b:​phdStatistics.gif?​600 ​ |[[http://​phdcomics.com/​comics/​archive.php?​comicid=262]]}} 
 + 
 +</​WRAP>​ 
 +O teste t, apresentado no [[02_tutoriais:​tutorial6:​start|tutorial 6a]]é usado apenas para o caso de termos uma variável resposta numérica contínua e uma preditora categórica com **dois níveis**. Caso a preditora tenha mais do que dois níveis, precisamos usar um outro teste que é uma generalização do teste t, o teste de <wrap em>​Análise de Variância</​wrap>​ ou <wrap em>​ANOVA</​wrap>​. O teste está baseado no princípio de partição da variação dos dados. A variação total dos dados é particionada nos componentes do que é explicado e aquele que não é explicado pela variável preditora categórica. Esse conceito é aplicado de maneira mais ampla na estatística,​ utilizado em outros tipos de estatística e para a tomada de decisão do modelo que melhor explica a variação nos dados. Por isso, vamos focar este tutorial no <wrap em>​conceito da partição da variação</​wrap>​. ​
  
-Para exemplificar a partição da variância associada à ANOVA, vamos usar o exemplo de dados de colheita de um cultivar em diferentes tipos de solos, apresentado no livro de Robert Crawley, ​ [[http://​www.bio.ic.ac.uk/​research/​mjcraw/​therbook/​index.htm/​|The R Book]], como segue abaixo:+Para exemplificar a partição da variância associada à ANOVA, vamos usar o exemplo de dados de colheita de um cultivar em diferentes tipos de solos, apresentado no livro de Robert Crawley, [[http://​www.bio.ic.ac.uk/​research/​mjcraw/​therbook/​index.htm/​|The R Book]], como segue abaixo:
  
  
Linha 28: Linha 38:
 <code rsplus> <code rsplus>
 are <- c(6,​10,​8,​6,​14,​17,​ 9, 11, 7, 11) are <- c(6,​10,​8,​6,​14,​17,​ 9, 11, 7, 11)
-arg <-  c(17, 15, 3, 11, 14, 12, 12, 8, 10, 13)+arg <- c(17, 15, 3, 11, 14, 12, 12, 8, 10, 13)
 hum <- c(13, 16, 9, 12, 15, 16, 17, 13, 18, 14) hum <- c(13, 16, 9, 12, 15, 16, 17, 13, 18, 14)
 solo <- rep(c("​arenoso",​ "​argiloso",​ "​humico"​),​ each = 10) solo <- rep(c("​arenoso",​ "​argiloso",​ "​humico"​),​ each = 10)
Linha 61: Linha 71:
 <code rsplus> <code rsplus>
 par(mar = c(4,4,2,1), las = 1, cex = 1.5) par(mar = c(4,4,2,1), las = 1, cex = 1.5)
 +colvector <- rep(cols, each= 10)
 plot(x = 1:30, y = cultivar$producao , ylim = c(0,20), xlim = c(0, 30), pch=(rep(c(15,​16,​17),​ each=10)), col = colvector, ylab = "​Variável Resposta",​ xlab = "​Observações",​ cex = 1.5) plot(x = 1:30, y = cultivar$producao , ylim = c(0,20), xlim = c(0, 30), pch=(rep(c(15,​16,​17),​ each=10)), col = colvector, ylab = "​Variável Resposta",​ xlab = "​Observações",​ cex = 1.5)
  for(i in 1:30)  for(i in 1:30)
Linha 88: Linha 99:
 No gráfico esta variação é representada pelos segmentos verticais coloridos. A grande média é definida como a média de produtividade de todos os campos de cultivo (n=30), independente do tipo de solo, e é representada pela linha preta horizontal tracejada. No gráfico esta variação é representada pelos segmentos verticais coloridos. A grande média é definida como a média de produtividade de todos os campos de cultivo (n=30), independente do tipo de solo, e é representada pela linha preta horizontal tracejada.
  
-Medimos essa variação total  pela ''​soma quadrática'':​ os valores dos desvios dos dados em relação à grande média (segmentos verticais no gráfico) elevados ao quadrado e posteriormente somados. Essa soma quadrática total é nossa medida de variação. ​ +Medimos essa variação total pela ''​soma quadrática'':​ os valores dos desvios dos dados em relação à grande média (segmentos verticais no gráfico) elevados ao quadrado e posteriormente somados. Essa soma quadrática total é nossa medida de variação. ​
  
 $$ SQ_{"​total"​} = \sum_{i=1}^k\sum_{j=1}^n (y_{ij} - \bar{\bar{y}})^2 $$ $$ SQ_{"​total"​} = \sum_{i=1}^k\sum_{j=1}^n (y_{ij} - \bar{\bar{y}})^2 $$
Linha 106: Linha 117:
 </​code>​ </​code>​
  
-Fizemos acima todos os passos isoladamente,​ pois, alguns desse valores intermediários ​iremos utilizar mais à frente. ​+Fizemos acima todos os passos isoladamente,​ pois iremos utilizar mais à frente ​alguns desses valores intermediários
  
 Vamos iniciar a construção da nossa tabela de ANOVA, incluindo a medida de variação total na sua posição: Vamos iniciar a construção da nossa tabela de ANOVA, incluindo a medida de variação total na sua posição:
Linha 137: Linha 148:
 </​code>​ </​code>​
  
-No código acima utilizamos a função ''​segments''​ e não foi necessário utilizar a iteração. Além disso, criamos um vetor de médias com a repetição das médias dos respectivos solos para cada observação no ''​mSolosVetor''​.+No código acima utilizamos a função ''​segments''​ e não foi necessário utilizar a iteração. Além disso, criamos um vetor de médias com a repetição das médias dos respectivos solos para cada observação no ''​mSolosVetor''​, para facilitar a construção do gráfico.
  
 <WRAP center round box 70%> <WRAP center round box 70%>
Linha 168: Linha 179:
 par(mar = c(4,4,2,1), las = 1, cex = 1.5) par(mar = c(4,4,2,1), las = 1, cex = 1.5)
 plot(x = 1:30, y = cultivar$producao , ylim = c(0,20), xlim = c(0, 30), pch=(rep(c(0,​ 1 ,2), each=10)), col = colvector, ylab = "​Produtividade (ton/​ha)",​ xlab = "​Observações",​ cex = 1) plot(x = 1:30, y = cultivar$producao , ylim = c(0,20), xlim = c(0, 30), pch=(rep(c(0,​ 1 ,2), each=10)), col = colvector, ylab = "​Produtividade (ton/​ha)",​ xlab = "​Observações",​ cex = 1)
-points(x = 1:30, y = mSolosVetor,​ pch = rep(c(15,​16,​17),​ each=10), ​ col = colvector, cex = 1.5)+points(x = 1:30, y = mSolosVetor,​ pch = rep(c(15,​16,​17),​ each=10), col = colvector, cex = 1.5)
 segments(x0 = 1, y0 = mGeral, x1= 30, col = 1, lty = 2, lwd = 1.5) segments(x0 = 1, y0 = mGeral, x1= 30, col = 1, lty = 2, lwd = 1.5)
-segments(x0 = 1:30, y0 = mSolosVetor,​ y1 = rep(mGeral, 30), col = cols, lwd =1.5)+segments(x0 = 1:30, y0 = mSolosVetor,​ y1 = rep(mGeral, 30), col = colvector, lwd =1.5)
 legend("​bottomright",​ legend = c("​arenoso",​ "​argiloso",​ "​humico"​),​ pch = 15:17 ,col = cols, title = "​Solos",​ bty = "​n"​) legend("​bottomright",​ legend = c("​arenoso",​ "​argiloso",​ "​humico"​),​ pch = 15:17 ,col = cols, title = "​Solos",​ bty = "​n"​)
  
Linha 200: Linha 211:
 ==== Graus de Liberdade ==== ==== Graus de Liberdade ====
  
-Precisamos agora calcular os **desvios quadráticos médios** que são as somas quadráticas dividido pelos graus de liberdade. ​Calcular o grau de uma estatística pode ser bem complexo. No caso, lógica que vamos usar é mais simples. Vamos pegar o caso do soma quadrática total: para calcular essa soma utilizamos os ''​30''​ valores de produtividade e calculamos a média geral. ​Por termos calculado a média, perdemos um grau de liberdade. Utilizando a mesma lógicapara a soma quadrática não explicada, partimos das mesmas ''​30''​ informações, mas tivemos que calcular ​as ''​3''​ médias de produtividade dos solos, portanto ficamos com ''​27'' ​graus de liberdade. Por fim, na soma quadrática explicada temos ''​3''​ informações e calculamos uma estatística,​ a média geral, ficando com ''​2''​ graus de liberdade. ​Vamos então calcular esses desvios quadráticos médios:+Precisamos agora calcular os **desvios quadráticos médios** que são as somas quadráticas dividido pelos graus de liberdade ​(''​gl''​)Vamos utilizar ​a soma quadrática total para exemplificar o cálculo dos graus de liberdade: para calcular essa soma utilizamos os ''​30''​ valores de produtividade e calculamos a média geral. ​No caso, por termos calculado a média, perdemos um grau de liberdade ​e ficamos com ''​29 gl''​. Utilizando a mesma lógica para a soma quadrática não explicada, partimos das mesmas ''​30''​ informações ​e calculamos ​as ''​3''​ médias de produtividade dos solos, portantoficamos com ''​27 ​gl''​. Por fim, na soma quadrática explicada temos ''​3''​ informações, as médias de cada solo, e calculamos uma estatística,​ a média geral, ficando com ''​2''​ graus de liberdade. ​Com esses informação podemos ​entãocalcular esses desvios quadráticos médios:
  
 <code rsplus> <code rsplus>
Linha 211: Linha 222:
  
 <code rsplus> <code rsplus>
-(fcultiva <-  msq[3]/​msq[2])+(fcultiva <- msq[3]/​msq[2])
 </​code>​ </​code>​
  
Linha 219: Linha 230:
  
  
-Só falta agora o cálculo do p-valor associado à estatística F.  O F-Fisher é uma distribuição probabilística que tem dois parâmetros:​ os graus de liberdade ​do cálculo ​variação média entre e intra. ​+Só falta agora o cálculo do p-valor associado à estatística F. O F-Fisher é uma distribuição probabilística que tem dois parâmetros:​ os graus de liberdade ​dos cálculos da (1) variação média entre e (2) intra. ​
  
 <code rsplus> <code rsplus>
Linha 238: Linha 249:
 === Distribuição de F === === Distribuição de F ===
  
-Os gráficos de outras aulas apresentaram a distribuição de densidade probabilística,​ onde a variável ''​y'' ​ é relacionada à probabilidade de cada valor em intervalos muito pequenos. O valor da probabilidade cumulativa é a área da curva até o valor fornecido, o que é retornado pela função ''​pf''​. No caso, como utilizamos o argumento ''​lower.tail = TRUE'',​ a função retorna a outra área da curva. Representada ​pela figura a seguir:+Os gráficos de outras aulas apresentaram a distribuição de densidade probabilística,​ onde a variável ''​y''​ é relacionada à probabilidade de cada valor em intervalos muito pequenos. O valor da probabilidade cumulativa é a área da curva até o valor fornecido, o que é retornado pela função ''​pf''​. No caso, como utilizamos o argumento ''​lower.tail = FALSE'',​ a função retorna a outra área da curva, representada ​pela figura a seguir:
 <code rsplus> <code rsplus>
  
-curve(expr=df(x,​ 2,27), main="​Distribuição F de Fisher (df=2,​27)",​ xlab="​Valor ​F",​ylab="​Densidade Probabilística (df)", xlim=c(0,​10))+curve(expr=df(x,​ 2,27), main="​Distribuição F de Fisher (df=2,​27)",​ xlab="​Valor ​FALSE",​ylab="​Densidade Probabilística (df)", xlim=c(0,​10))
 abline(v = fcultiva, col="​red"​) abline(v = fcultiva, col="​red"​)
 abline(h = 0, lty = 2) abline(h = 0, lty = 2)
Linha 255: Linha 266:
  
  
-{{:​02_tutoriais:​tutorial6:​denspf.jpeg?​600|}} 
  
-<code rsplus> 
-curve(expr=df(x,​ 2,27), main="​Distribuição F de Fisher (df=2,​27)",​ xlab="​Valor F",​ylab="​Densidade Probabilística (df)", xlim=c(0,​10)) 
-abline(v = fcultiva, col="​red"​) 
-abline(h = 0, lty = 2) 
-xf <- seq (fcultiva, 10, 0.01) 
-ydf <- df(xf, 2, 27) 
-polygon(c(fcultiva,​ xf), c(0, ydf), col="​red"​) 
-text(locator(1),​paste("​pf(x) =",​round(pf(fcultiva,​2,​27,​lower.tail=F),​4)),​ cex = 1.2, col="​red"​) 
-curve(expr=df(x,​ 2,27), main="​Distribuição F de Fisher (df=2,​27)",​ xlab="​Valor F",​ylab="​Densidade Probabilística (df)", xlim=c(0,​10)) 
-abline(v = fcultiva, col="​red"​) 
-abline(h = 0, lty = 2) 
-xf <- seq (fcultiva, 10, 0.01) 
-ydf <- df(xf, 2, 27) 
-polygon(c(fcultiva,​ xf), c(0, ydf), col="​red"​) 
-text(x= 6, y = 0.1, paste("​pf(x) =",​round(pf(fcultiva,​2,​27,​lower.tail=F),​4)),​ cex = 1.2, col="​red"​) 
  
-savePlot("​densPF.jpeg",​ "​jpeg"​) 
-</​code>​ 
  
 +<WRAP center round tip 80%>
 +==== Anova no R ====
 +A tabela de anova é tão importante que a função ''​anova''​ no R retorna a tabela para objetos de modelos. Vamos ver isso no próximo tópico. Para o teste da análise de variância, propriamente dito, a função utilizada é ''​aov''​. No caso do objeto produzido pela função ''​aov''​ a tabela aparece se aplicarmos a função ''​anova''​ ou ''​summary''​ ao objeto ''​aov'',​ que também é um objeto da classe modelo linear ''​lm''​.
  
-===== Cálculo do P =====+<code rsplus>​ 
 +(cultAov <- aov(producao ~ solo, data cultivar)) 
 +class(cultAov) 
 +anova(cultAov) 
 +summary(cultAov)
  
-<code rsplus> 
-p.solos=pf(F.solos,​2,​27,​ lower.tail=FALSE) 
-p.solos 
 </​code>​ </​code>​
 +</​WRAP>​
  
- 
- 
-===== Anova no R ===== 
-<code rsplus> 
-str(solos) 
-var.resp=c(solos$are,​solos$arg,​solos$hum) 
-var.resp 
-solos.f=factor(rep(c("​are",​ "​arg","​hum"​),​each=10)) 
-solos.f 
-res.anova=aov(var.resp~solos.f) 
-res.anova 
-summary(res.anova) 
-</​code>​ 
02_tutoriais/tutorial6b/start.txt · Última modificação: 2023/08/29 19:35 (edição externa)