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
02_tutoriais:tutorial6b:start [2020/09/25 20:35]
adalardo [Cálculo do F]
02_tutoriais:tutorial6b:start [2023/08/29 19:35] (atual)
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 ​ao [[https://​pt.wikipedia.org/​wiki/​Teste_F|teste F]] e à 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 grupos
  
 <code rsplus> <code rsplus>
Linha 234: Linha 245:
  
  
 +<WRAP center round box 80%>
  
 === Distribuição de F === === Distribuição de F ===
  
-Os gráficos de outras aulas apresentam ​a distribuição de densidade probabilística,​ onde a área do gráfico ​é relacionada à probabilidade de cada valor em intervalos muito pequenos.O valor de probabilidade cumulativa é a área da curva até o valor fornecido, o que é retornado pela função ''​pf'',​ 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>
  
- +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))
-{{:​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(v = fcultiva, col="​red"​)
 abline(h = 0, lty = 2) abline(h = 0, lty = 2)
Linha 249: Linha 258:
 ydf <- df(xf, 2, 27) ydf <- df(xf, 2, 27)
 polygon(c(fcultiva,​ xf), c(0, ydf), col="​red"​) 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"​) +text(6, 0.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>​ </​code>​
 +{{  :​02_tutoriais:​tutorial6b:​pvalor.png?​400 ​ |}}
  
 +</​WRAP>​
  
-===== Cálculo do P ===== 
  
-<code rsplus> 
-p.solos=pf(F.solos,​2,​27,​ lower.tail=FALSE) 
-p.solos 
-</​code>​ 
  
  
  
-===== Anova no R =====+<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''​. 
 <code rsplus> <code rsplus>
-str(solos) +(cultAov <- aov(producao ~ solodata = cultivar)
-var.resp=c(solos$are,solos$arg,​solos$hum+class(cultAov
-var.resp +anova(cultAov
-solos.f=factor(rep(c("​are",​ "​arg","​hum"​),​each=10)) +summary(cultAov) 
-solos.f +
-res.anova=aov(var.resp~solos.f) +
-res.anova +
-summary(res.anova)+
 </​code>​ </​code>​
 +</​WRAP>​
 +
02_tutoriais/tutorial6b/start.1601076952.txt.gz · Última modificação: 2020/09/25 20:35 por adalardo