Ferramentas do usuário

Ferramentas do site


03_apostila:05-exploratoria

Diferenças

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

Link para esta página de comparações

03_apostila:05-exploratoria [2023/08/15 20:55]
127.0.0.1 edição externa
03_apostila:05-exploratoria [2023/08/15 21:45]
Linha 1: Linha 1:
-<WRAP tabs> 
-  * [[02_tutoriais:​tutorial4:​start|Tutorial]] 
-  * [[01_curso_atual:​exercicios4| Exercícios]] 
-  * [[03_apostila:​05-exploratoria| Apostila]] ​ 
-</​WRAP>​ 
-====== 4. Análise Exploratória de Dados ====== ​ 
  
- 
-Podemos conduzir a análise exploratória de dados de duas formas: 
-  * análise numérica: computar estatísticas descritivas;​ 
-  * análise gráfica: explorar o comportamento e a relação entre as variáveis através de gráficos. 
- 
-Nesse tópico utilizaremos os arquivos de dados: 
-  * [[dados:​dados-caixeta| Levantamento em caixetais:​]] {{dados:​caixeta.csv|caixeta.csv}} 
-  * [[dados:​dados-esaligna| Dados de biomassa de árvores:]] {{:​dados:​esaligna.csv|esaligna.csv}} 
-  * [[dados:​dados-egrandis| Inventário em florestas plantadas:​]]{{:​dados:​egrandis.csv|egrandis.csv }} 
- 
- 
- 
- 
- 
- 
- 
-===== Estatísticas Descritivas ===== 
- 
- 
-A forma mais direta de se obter um resumo estatístico das variáveis num ''​data.frame''​ é através da função ''​summary''​. Ela apresenta estatísticas descritivas para as variáveis numéricas. 
-<code rsplus> 
-> cax = read.csv("​caixeta.csv",​ header=TRUE,​ as.is=TRUE) 
-> 
-> summary(cax) 
-    local              parcela ​         arvore ​         fuste             ​cap ​              h 
- ​Length:​1027 ​       Min.   :​1.000 ​  ​Min. ​  : ​ 1.0   ​Min. ​  : 1.000   ​Min. ​  : ​ 20.0   ​Min. ​  : ​ 5.00 
- Class :​character ​  1st Qu.:​2.000 ​  1st Qu.: 51.0   1st Qu.: 1.000   1st Qu.: 190.0   1st Qu.: 60.00 
- ​Mode ​ :​character ​  ​Median :​3.000 ​  ​Median : 99.0   ​Median : 1.000   ​Median : 270.0   ​Median : 90.00 
-                    Mean   :​2.821 ​  ​Mean ​  :​108.5 ​  ​Mean ​  : 1.711   ​Mean ​  : 299.7   ​Mean ​  : 90.28 
-                    3rd Qu.:​4.000 ​  3rd Qu.:​159.0 ​  3rd Qu.: 2.000   3rd Qu.: 360.0   3rd Qu.:110.00 
-                    Max.   :​5.000 ​  ​Max. ​  :​291.0 ​  ​Max. ​  :​11.000 ​  ​Max. ​  :​2100.0 ​  ​Max. ​  :​480.00 
-   ​especie 
- ​Length:​1027 
- Class :character 
- ​Mode ​ :character 
- 
- 
- 
->                                                                                      
-</​code>​ 
- 
-Outras estatísticas devem ser calculadas individualmente pelo analista: 
-<code rsplus> 
-> resumo1 = aggregate( cax[ , c("​cap","​h"​)],​ list(local=cax$local),​ mean ) 
-> resumo2 = aggregate( cax[ , c("​cap","​h"​)],​ list(local=cax$local),​ sd ) 
-> 
-> resumo = merge( resumo1, resumo2, by="​local",​ suffixes=c("​.mean","​.sd"​) ) 
-> resumo 
-   local cap.mean ​   h.mean ​  ​cap.sd ​    h.sd 
-1 chauas 293.6385 ​ 89.60094 139.8761 37.00023 
-2 jureia 404.4813 109.70954 213.8512 31.68068 
-3 retiro 236.5972 ​ 78.08333 137.2203 30.46426 
-</​code>​ 
- 
- 
- 
-=== Exercícios === 
- 
- 
-<box left red | //​**Exercício:​** Estatísticas do Caixetal// > 
-Construa um ''​data.frame''​ com os dados de **área basal** por ''​local''​ e ''​parcela''​. 
- 
-Encontre a média e desvio padrão da área basal por ''​local''​. 
- 
-Calcule o intervalo de confiança de 95% da área basal por ''​local''​. 
-</​box>​ 
- 
- 
- 
-===== Analisando a Distribuição das Variáveis: Gráficos Univariados ===== 
- 
- 
- 
- 
- 
-==== Histogramas ==== 
- 
-A primeira abordagem ao se estudar a distribuição de uma variável é o uso de **histogramas**:​ 
-<code rsplus> 
-> cax$dap = (pi/4)* (cax$cap/​10) 
-> hist( cax$dap ) 
-> hist( cax$dap[ cax$local == "​chauas"​ ] ) 
-> hist( cax$dap[ cax$local == "​jureia"​ ] ) 
-> hist( cax$dap[ cax$local == "​retiro"​ ] ) 
-</​code>​ 
- 
-A função ''​hist''​ também pode fornecer os dados do histograma, sem gerar o histograma propriamente dito: 
-<code rsplus> 
-> hist( cax$dap, plot=FALSE ) 
-$breaks 
- ​[1] ​  ​0 ​ 10  20  30  40  50  60  70  80  90 100 110 120 130 140 150 160 170 
- 
-$counts 
- ​[1] ​ 72 408 329 116  62  20  10   ​3 ​  ​4 ​  ​1 ​  ​1 ​  ​0 ​  ​0 ​  ​0 ​  ​0 ​  ​0 ​  1 
- 
-$intensities 
- [1] 7.010709e-03 3.972736e-02 3.203505e-02 1.129503e-02 6.037001e-03 
- [6] 1.947420e-03 9.737098e-04 2.921130e-04 3.894839e-04 9.737098e-05 
-[11] 9.737098e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 
-[16] 0.000000e+00 9.737098e-05 
- 
-$density 
- [1] 7.010709e-03 3.972736e-02 3.203505e-02 1.129503e-02 6.037001e-03 
- [6] 1.947420e-03 9.737098e-04 2.921130e-04 3.894839e-04 9.737098e-05 
-[11] 9.737098e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 
-[16] 0.000000e+00 9.737098e-05 
- 
-$mids 
- ​[1] ​  ​5 ​ 15  25  35  45  55  65  75  85  95 105 115 125 135 145 155 165 
- 
-$xname 
-[1] "​cax$dap"​ 
- 
-$equidist 
-[1] TRUE 
- 
-attr(,"​class"​) 
-[1] "​histogram"​ 
-> 
-</​code>​ 
- 
-Note que o objeto gerado pela função ''​hist''​ tem a classe ''​histogram'',​ logo ele pode ser guardado e grafado posteriormente:​ 
-<code rsplus> 
-> dap.hist = hist( cax$dap, plot=FALSE ) 
-> class(dap.hist) 
-[1] "​histogram"​ 
-> 
-> plot(dap.hist) 
-</​code>​ 
- 
-Alguns parâmetros gráficos podem tornar o gráfico mais apresentável. Esses parâmetros gráficos pode ser utilizados como //​argumentos//​ em diversas funções gráficas onde são pertinentes:​ 
-  *  ''​xlab''​ e ''​ylab''​ = nomes dos eixos X e Y, respectivamente;​ 
-  * ''​main''​ = nome do título do histograma; ​ 
-  *  ''​col''​ = cor da barra (histograma),​ ou de linhas e símbolos plotados; 
-<code rsplus> 
-> hist( cax$dap[ cax$local=="​chauas"​ ], 
-+ xlab="​Diâmetro à Altura do Peito - DAP (cm)", 
-+ ylab="​Freqüência",​ 
-+ main="​Histograma DAP - Chauás",​ 
-+ col = "​blue"​ ) 
-> 
-</​code>​ 
- 
-Muitas vezes desejamos comparar gráficos, sendo útil termos mais de uma janela gráfica. A função ''​X11()''​ abre janelas gráficas, 
-sendo que podemos abrir várias janelas: 
-<code rsplus> 
-> hist( cax$dap[ cax$local=="​chauas"​ ] , main="​Chauás"​ ) 
-> X11() 
-> hist( cax$dap[ cax$local=="​jureia"​ ] , main="​Juréia"​ ) 
-> X11() 
-> hist( cax$dap[ cax$local=="​retiro"​ ] , main="​Retiro"​ ) 
-> 
-> dev.off() 
-X11 
-  2 
-> dev.off() 
-X11 
-  3 
->    ​ 
-</​code>​ 
- 
-A função ''​dev.off()''​ fecha uma janela gráfica e faz parte de um conjunto de funções que manipula as janelas gráficas. Nessa manipulação,​ somente uma janela gráfica pode estar '''​ACTIVE'''​ de cada vez, e as janelas são consideradas como estando num círculo, onde podemos passar de uma para outra: 
-  * ''​dev.off()''​ - fecha a janela gráfica; 
-  * ''​dev.cur()''​ - diz qual janela gráfica está ''​ACTIVE'';​ 
-  * ''​dev.set(which=dev.cur())''​ - define qual janela deverá ficar ativa, o argumento ''​which''​ deve ser o número da janela; ​ 
-  * ''​dev.next(which=dev.cur())''​ - informa o número da próxima janela gráfica; 
-  * ''​dev.prev(which=dev.cur())''​ - informa o número da janela gráfica anterior; 
-  * ''​graphics.off()''​ - fecha todas as janelas gráficas. 
-<code rsplus> 
-> X11() 
-> hist( cax$dap[ cax$local=="​retiro"​ ] , main="​Retiro"​ ) 
-> X11() 
-> hist( cax$dap[ cax$local=="​jureia"​ ] , main="​Juréia"​ ) 
-> dev.cur() 
-X11 
-  3 
-> dev.set(2) 
-X11 
-  2 
-> hist( cax$dap[ cax$local=="​retiro"​ ] , main="​Retiro"​ , col="​blue"​) 
-> dev.set(3) 
-X11 
-  3 
-> hist( cax$dap[ cax$local=="​jureia"​ ] , main="​Juréia"​ , col="​green"​) 
-> 
-> graphics.off() 
-> 
-</​code>​ 
- 
- 
-=== Exercício === 
- 
-<box left red | //​**Exercício:​** Altura de Árvores em Caixetais I // > 
-Construa um histograma da altura das árvores do caixetal. 
- 
-Construa histogramas da altura das árvores para os diferentes caixetais (''​local''​). 
- 
-Há diferenças entre as estruturas (distribuição de tamanhos) dos caixetais? 
-</​box>​ 
- 
-<box left red | //​**Exercício:​** Diâmetros de Árvores de Eucalipto// > 
-Construa um histograma do DAP das árvores de //E. saligna//. Procure interpretar o histograma. 
-</​box>​ 
- 
- 
- 
- 
- 
-==== Gráficos de Densidade ==== 
- 
-Uma outra forma de explorar a distribuição de uma variável é trabalharmos com um gráfico de //​densidade//​. O gráfico de densidade é gerado como se fosse um histograma com uma classe móvel, isto é, a classe que tem uma certa amplitude, se move da esquerda para direita e em cada ponto estima a //densidade probabilística da variável//​. Tecnicamente,​ a função ''​density''​ é um **estimador de densidade de kernel gaussiano**. 
- 
-A função ''​density''​ faz a análise da densidade, mas não faz o gráfico, devendo ser utilizada juntamente com a função ''​plot'',​ 
-para criar o gráfico, ou a função ''​lines'',​ para adicionar uma linha a um gráfico já criado: 
-<code rsplus> 
-> plot( density(cax$dap) ) 
-> 
-</​code>​ 
- 
-O parâmetro que controla o comportamento do estimador de densidade é a amplitude da janela de observação //​bandwidth//​ (''​bw''​). Janela pequenas geram estimativas de densidade com viés pequeno, mas com variância grande. Janelas grandes geram estimativas de densidade com viés grande, mas pequena variância. O ideal é o equilíbrio entre os extremos e o R possui algumas funções que buscam automaticamente da //​bandwidth//​ apropriada, mas o analista tem controle sobre esse parâmetro: 
-<code rsplus> 
-> plot( density(cax$dap,​ bw=0.5), col="​red"​ ) 
-> lines( density(cax$dap,​ bw=5), col="​blue"​ ) 
-> lines( density(cax$dap,​ bw=1.5), col="​green"​ ) 
-> 
-</​code>​ 
- 
- 
-=== Exercícios === 
- 
-<box left red | //​**Exercício:​** Distribuição de DAP nos Caixetais// > 
-Realize uma análise de densidade do DAP para cada um dos caixetais. Os resultados confirmam o que foi visto nos histogramas?​ 
-</​box>​ 
- 
- 
- 
- 
- 
-==== Boxplot ==== 
- 
-**Boxplot** é um gráfico estatístico também utilizado para estudar o comportamento de variáveis. Ele é composto dos elementos: 
-  * Uma caixa (//box//) que representa a região entre o primeiro e o terceiro quartis (quantis 25% e 75%), ou seja, 50% dos dados estão dentro da caixa. 
-  * Uma linha dentro da caixa que representa a posição da mediana (segundo quartil ou quantil 50%). 
-  * Linhas que se prolongam a partir da caixa até no máximo 1,5 vezes a distância interquartil (diferença entre o 1o. e 3o. quartis). 
-  * As observações que passarem essa distância são representadas individualmente por pontos. 
- 
-<code rsplus> 
-> 
->​boxplot( cax$dap ) 
-> 
-> esa = read.csv("​dados/​esaligna.csv",​header=TRUE) 
-> boxplot( esa$dap ) 
-> 
-</​code>​ 
- 
-O **boxplot** é útil para analisar a //​simetria//​ de uma distribuição,​ o //​espalhamento//​ das observações e a presença de observações discrepantes. 
-Ele é problemático quando a variável analisada **não é unimodal**. Ele também é uma ferramenta útil para comparar distribuições,​ isso é realizado 
-quando desejamos um **boxplot** para cada situação: 
-<code rsplus> 
-> boxplot( dap ~ local, data=cax ) 
-> 
-</​code>​ 
- 
-Note que o primeiro argumento da função ''​boxplot''​ não é um vetor nesse caso: 
-<code rsplus> 
-> class( dap ~ local ) 
-[1] "​formula"​ 
- 
-</​code>​ 
- 
-O primeiro argumento é uma ''​formula''​ estatística onde o símbolo **~** tem um significado especial. ​ 
- 
-A fórmula ''​dap ~ local''​ deve ser lida como: //modele a variável// ''​dap''​ //como função da variável// ''​local''​. 
- 
-O argumento ''​data''​ informa em qual ''​data.frame''​ estão as variáveis citadas na fórmula e é um argumento essencial toda vez que se utiliza uma fórmula. 
- 
- 
-A utilização da fórmula permite a construção de gráficos mais complexos, pensando na **interação** entre dois fatores influenciando a variável DAP: 
-<code rsplus> 
-> boxplot( dap ~ local * parcela, data=cax) 
-> 
-</​code>​ 
- 
-Mas os gráficos no R podem ficar realmente //​sofisticados//,​ mas é necessário um pouco mais de programação:​ 
-<code rsplus> 
-> boxname = paste( sort(rep(unique(cax$local),​5)),​ rep(1:5,3) ) 
-> boxcor = sort(rep(c("​navy","​darkgreen","​salmon1"​),​5)) 
-> boxplot( dap ~ local * parcela, data=cax , names=boxname,​ col=boxcor, horizontal=T,​ las=1, xlab="​DAP (cm)") 
- 
-</​code>​ 
- 
- 
-=== Exercícios === 
- 
-<box left red | //​**Exercício:​** Altura de Árvores em Caixetais II // > 
-Utilize o gráfico boxplot para analisar a altura das árvores em caixetais. 
-</​box>​ 
- 
-<box left red | //​**Exercício:​** Estrutura de Eucaliptais // > 
-Utilize o gráfico boxplot para analisar o DAP de árvores de //E. grandis// em função das variáveis região (''​regiao''​) e rotação (''​rot''​). 
-</​box>​ 
- 
- 
- 
- 
- 
- 
- 
- 
-==== Gráficos Quantil-Quantil ==== 
- 
-Gráficos Quantil-Quantil também são uma forma de estudar o comportamento de variáveis, mas utilizando as propriedades que emergem de uma variável quando trabalhamos com os seus quantis. 
- 
-O gráfico quantil-quantil mais tradicional é aquele usado para verificar se uma variável possui distribuição Normal. No R isso é realizado com a função ''​qqnorm'',​ associada à função ''​qqline''​ que adiciona uma linha ao gráfico: 
-<code rsplus> 
-> qqnorm( cax$dap ) 
-> qqline( cax$dap ) 
- 
-</​code>​ 
- 
- 
-A idéia central do gráfico quantil-quantil é a seguinte: quando um variável segue uma dada distribuição (como a distribuição Normal) os **quantis empíricos**,​ isto é, calculados a partir de uma amostra, formam uma linha reta contra os **quantis teóricos**,​ calculados a partir das estimativas dos parâmetros da distribuição (no caso da Normal: média e desvio padrão). ​ 
- 
-É isso que a função ''​qqnorm''​ faz para distribuição Normal: 
-<code rsplus> 
-> vn1 = rnorm( 10000 ) 
-> qqnorm( vn1 ) 
-> qqline( vn1 ) 
-> 
-> ve1 = rexp( 100000 ) 
-> qqnorm( ve1 ) 
-> qqline( ve1 ) 
-> 
-> ve2 = apply( matrix(ve1, ncol=100), 1, mean) 
-> qqnorm( ve2 ) 
-> qqline( ve2 ) 
- 
-</​code>​ 
- 
-Também é possível comparar duas distribuições a partir dos **quantis empíricos**:​ 
-<code rsplus> 
-> qqplot( cax$dap[ cax$local=="​retiro"​ ], cax$dap[ cax$local=="​jureia"​ ] ) 
-> abline( 0, 1, col="​red"​ ) 
-> 
-> a = min( cax$dap[ cax$local=="​jureia"​ ] ) 
-> abline( a, 1, col="​navy"​ ) 
- 
-</​code>​ 
- 
-**Nota:** a função ''​abline( a, b)''​ adiciona a um gráfico uma reta com intercepto //a// e inclinação //b//. 
- 
- 
- 
-=== Exercícios === 
- 
-<box left red | //​**Exercício:​** Inventário em Floresta Plantada // > 
-Verifique se as variáveis quantitativas obtidas no inventário de florestas plantadas tem distribuição Normal: ''​dap'',​ ''​ht''​ e ''​hdom''​. 
-</​box>​ 
- 
-<box left red | //​**Exercício:​** Altura de Árvores em Caixetais III // > 
-Verifique se a distribuição da altura das árvores tem o mesmo comportamento nos diferentes caixetais. 
-</​box>​ 
- 
- 
-==== Gráfico de Variável Quantitativa por Classes ==== 
- 
-A maneira clássica de se apresentar uma variável quantitativa associada a uma classe é o famoso gráfico de barras. 
- 
-Vejamos um exemplo comum em //​fitossociologia//​ que é apresentar a densidade relativa das espécies: 
-<code rsplus> 
-> da = table( cax$especie[ cax$local=="​jureia"​ ] ) 
-> da = sort(da, decreasing=TRUE ) 
-> dr = da/sum(da) * 100 
-</​code>​ 
- 
-Para obter o gráfico de barras basta usar a função ''​barplot'':​ 
-<code rsplus> 
-> barplot( dr ) 
-</​code>​ 
- 
-O resultado não é muito apropriado para interpretações,​ mas podemos fazer algumas melhoras: 
-<code rsplus> 
-> barplot( dr , xlab="​Densidade Relativa (%)", horiz=T, las=1) 
-</​code>​ 
- 
-Os nomes das espécies precisam de mais espaço. É possível alterar o espaço trabalhando os parâmetros da função ''​par''​ que controla todos os parâmetros gráficos de uma janela gráfica. ​ 
-Nesse caso, o parâmetro ''​omd=c(x1,​x2,​y1,​y2)''​ define o início e final da região de plotagem em termos relativos. O valor //default// é ''​omd=c(0,​ 1, 0, 1)''​. ​ 
-<code rsplus> 
-> par( omd=c(0.2,​1,​0,​1) ) 
-> barplot( dr , xlab="​Densidade Relativa (%)", horiz=T, las=1) 
- 
-</​code>​ 
- 
-Na verdade, o gráfico de barras não é um gráfico muito apropriado para o que se propõe, apesar do uso generalizado que se faz dele na comunidade científica. 
- 
-No gráfico de barras, somos levados a comparar o comprimento das barras para estabelecer um julgamento entre as categorias. No gráfico de densidade relativa, comparamos os comprimentos de barra para obter uma visão das densidades relativas das espécies. 
- 
-Existe no R, um gráfico que faz a mesma coisa de modo muito mais simples e direto: 
-<code rsplus> 
-> par( omd=c(0,​1,​0,​1) )     # Primeiro é necessário re-estabelecer o parâmetro omd 
- 
-> dotchart( dr ) 
-> 
-</​code>​ 
- 
-No ''​dotchart'',​ somos levados a comparar a posição relativa dos pontos, e a relação entre as categorias fica muito mais rápida e direta. 
- 
-Como nessa floresta a //Tabebuia cassinoides//​ (caixeta) é a espécie dominante, é interessantes fazer o gráfico na escala logarítmica para enfatizar a diferença entre as outras espécies: 
-<code rsplus> 
-> dotchart( log(dr), xlab="​Logaritmo Natural da Densidade Relativa (%)") 
-</​code>​ 
- 
- 
-=== Exercícios === 
- 
-<box left red | //​**Exercício:​** Dominância em Caixetais// > 
-Construa um gráfico da dominância das espécies nos caixetais. 
-</​box>​ 
- 
- 
-<box left red | //​**Exercício:​** Inventário em Floresta Plantada // > 
-Utilizando a função ''​dotchart''​ investigue o número de árvores no inventário em função da região (''​regiao''​) e rotação (''​rot''​). 
-</​box>​ 
- 
- 
- 
- 
- 
-===== Análise Gráfica: Relação entre Variáveis ===== 
- 
-==== Gráfico de Dispersão ==== 
- 
-Os gráficos de dispersão (ou gráficos x-y) são os gráficos mais utilizados para estudar a relação entre duas variáveis. 
- 
-A função genérica no R para gráficos de dispersão é a função ''​plot'':​ 
-<code rsplus> 
-> plot( x = cax$dap, y = cax$h ) 
-</​code>​ 
- 
-Na função ''​plot'',​ o primeiro argumento é plotado nas //​abscissas//​ (eixo-x) e o segundo argumento nas //​ordenadas//​ (eixo-y). ​ 
- 
-Ao investigar a relação entre duas variáveis, frequentemente a densidade de pontos no gráfico torna o julgamento da relação problemática,​ pois é muito difícil considerar a variação da densidade ao se julgar a relação no gráfico de dispersão. 
- 
-Há no R uma função adicional que auxilia o julgamento adicionando ao gráfico de dispersão uma linha não-paramétrica de tendência (**smooth** ou suavização):​ 
-<code rsplus> 
-> scatter.smooth( cax$dap, cax$h , col="​red"​) 
-</​code>​ 
- 
-Uma série de parâmetros gráficos podem ser utilizados diretamente nas funções ''​plot''​ e ''​scatter.smooth'':​ 
-<code rsplus> 
-> scatter.smooth( cax$dap, cax$h , col="​red",​ xlab="​DAP (cm)", ylab="​Altura (dm)", main="​Caixetais"​) 
-> scatter.smooth( cax$dap, cax$h , col="​red",​ xlab="​DAP (cm)", ylab="​Altura (dm)", log="​x"​) 
-> scatter.smooth( cax$dap, cax$h , col="​red",​ xlab="​DAP (cm)", ylab="​Altura (dm)", log="​y"​) 
-> scatter.smooth( cax$dap, cax$h , col="​red",​ xlab="​DAP (cm)", ylab="​Altura (dm)", log="​xy"​) 
-</​code>​ 
- 
- 
-O R também permite um certo grau de **interação** com gráficos de dispersão. Uma delas é a identificação de observações no gráfico: 
-<code rsplus> 
-> scatter.smooth( cax$dap, cax$h ) 
-> dim( cax ) 
-[1] 1027    8 
-> identify( cax$dap, cax$h, 1:1027 ) 
-[1] 362 556 557 
- 
-> 
-> cax[ c(362, 556, 557), ] 
-     local parcela arvore fuste  cap   ​h ​                 especie ​      dap 
-362 chauas ​      ​5 ​   232     ​1 ​ 130 480     ​Tabebuia cassinoides ​ 10.21018 
-556 jureia ​      ​4 ​   105     1 1400 100     ​Tabebuia cassinoides 109.95574 
-557 jureia ​      ​4 ​   106     1 2100 160 Calophyllum brasiliensis 164.93361 
-> 
-</​code>​ 
- 
-A função ''​identify''​ atua sobre um gráfico produzido (plot) e possui três argumentos. Os dois primeiros são os mesmos argumentos que geraram o gráfico. O terceiro argumento é uma variável de identificação. ​ No exemplo acima a variável de identificação é o índice que identifica a observação (linha do ''​data.frame''​). 
- 
-Ao executar a função ''​identify'',​ o R entra num modo interativo com o gráfico. Ao posicionar o //mouse// sobre uma observação no gráfico e pressionar o **botão esquerdo**, o R identifica a observação. É possível identificar tantas observações quanto se desejar. Para sair do modo interativo, pressiona-se o **botão direito** do //mouse//. 
- 
- 
-No exemplo acima, as três observações discrepantes do gráfico parecem de fato muito erradas. Assim, podemos eliminá-las e continuar o estudo da relação: 
-<code rsplus> 
-> cax2 = cax[ -c(362, 556, 557), ] 
-> scatter.smooth( cax2$dap, cax2$h , col="​red"​ ) 
-</​code>​ 
- 
- 
-Também na função ''​plot''​ é possível se utilizar como argumento inicial uma ''​formula'',​ seguida do ''​data.frame''​ que contém as variáveis: 
-<code rsplus> 
-> plot( h ~ dap, data=cax2 ) 
-</​code>​ 
- 
-Nesse caso, para adicionar a linha não-paramétrica de tendência é necessário um segundo comando: 
-<code rsplus> 
-> plot( h ~ dap, data=cax2 ) 
-> lines( lowess( cax2$dap, cax2$h ) , col="​red"​) 
-</​code>​ 
- 
-O uso da ''​formula''​ permite a utilização da função ''​coplot''​ para formação de gráficos de dispersão em função de variáveis categóricas:​ 
-<code rsplus> 
-> coplot( h ~ dap | local , data=cax2 ) 
-> coplot( h ~ dap | local*parcela , data=cax2 ) 
-</​code>​ 
- 
-Também é possível adicionar uma linha de tendência em cada gráfico gerado pela função ''​coplot'':​ 
-<code rsplus> 
-> coplot( h ~ dap | local , data=cax2 , panel= panel.smooth) 
-> coplot( h ~ dap | local*parcela , data=cax2 , panel=panel.smooth) 
-</​code>​ 
- 
-Na ''​formula''​ acima, surgiram elementos novos: 
-  * A barra vertical indica uma situação condicional,​ no caso fazer um gráfico de dispersão para cada ''​local''​. 
-  * O asterísco (''​*''​) indica **interação**,​ no caso o gráfico de dispersão é realizado para cada interação entre as variáveis ''​local''​ e ''​parcela''​. 
- 
-A função ''​coplot''​ atua de forma diferente, se as variáveis que classificam o gráfico de dispersão são variáveis categóricas (''​factor''​) ou numéricas (''​numeric''​):​ 
-<code rsplus> 
-> egr = read.table("​dados/​egrandis.csv",​header=TRUE,​sep=";"​) 
-> coplot( ht ~ dap | idade, data=egr, panel = panel.smooth ) 
-> coplot( ht ~ dap | idade * rot , data=egr, panel = panel.smooth ) 
-> coplot( ht ~ dap | idade * as.factor(rot) , data=egr, panel = panel.smooth ) 
-</​code>​ 
- 
- 
- 
- 
-=== Exercícios === 
- 
-<box left red | //​**Exercício:​** Relação Hipsométrica da Caixeta // > 
-Analise a relação dap-altura (''​dap''​ e ''​h''​) em função do caixetal, mas **somente** para as árvores de caixeta (//Tabebuia cassinoides//​). 
-</​box>​ 
- 
- 
-<box left red | //​**Exercício:​** Inventário em Floresta Plantada II // > 
-Analise a relação entre as variáveis ''​hdom''​ (altura das árvores dominantes) e ''​dap''​ para diferentes regiões (''​regiao''​) e rotações (''​rot''​). 
-</​box>​ 
- 
-==== Painel de Gráficos de Dispersão ==== 
- 
-Quando o objetivo é explorar a relação entre variáveis quantitativas com o objetivo de construir modelos ou analisar a estrutura de correlação é útil poder fazer gráficos de dispersão das variáveis duas-a-duas. A função **pairs** realiza essa operação automaticamente:​ 
-<code rsplus> 
-> pairs( egr[ , c("​dap","​ht","​hdom","​idade"​)] ) 
-</​code>​ 
- 
-Sempre é possível sofisticar os gráficos. No exemplo abaixo o painel apresenta a relação entre as variáveis quantitativas utilizando cores para mostrar as variáveis região e rotação: 
-<code rsplus> 
- 
-> pairs( egr[ , c("​dap","​ht","​hdom","​idade"​)] , pch=21, bg=c("​red","​blue","​green"​)[unclass(egr$regiao)] ) 
-> pairs( egr[ , c("​dap","​ht","​hdom","​idade"​)] , pch=21, bg=c("​red","​green"​)[unclass(egr$rot)] ) 
- 
-</​code> ​   ​ 
- 
- 
-=== Exercícios === 
- 
-<box 100% left red | //​**Exercício:​** Biomassa de Árvores de Eucalipto // > 
-Analise a relação entre as variáveis quantitativas do conjunto de dados sobre biomassa das árvores de //E. saligna//. 
- 
-Qual a influência da variável classe (''​classe''​) sobre a relação entre as variáveis? 
-</​box>​ 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-===== Gráficos em Painel: O Pacote Lattice ===== 
- 
-Para ampliar a capacidade de análise gráfica exploratória e mesmo //modelagem gráfica// dos dados, existe no R o pacote **lattice**. Para carregar o pacote usa-se o comando: 
-<code rsplus> 
-> library(lattice) 
-</​code>​ 
- 
-O pacote **lattice** oferece uma série de funções análogas às funções gráficas do R, mas permite a construção de **paineis**. Um painel é um série de gráficos de mesmo tipo (dispersão,​ histograma, etc.) colocados lado-a-lado acompanhando uma variável categórica ou quantitativa. 
- 
-==== Gráficos de Dispersão ===== 
- 
-Para construir gráficos de dispersão no lattice usa-se a função **xyplot**: 
-<code rsplus> 
-> egr = read.csv("​egrandis.csv",​header=T) 
-> xyplot( ht ~ dap, data=egr ) 
-</​code>​ 
- 
-Note que no lattice, os gráficos são construídos com base em fórmulas. Essas fórmulas permitem estrutura mais complexas de análise: 
-<code rsplus> 
-> xyplot( ht ~ dap | regiao , data=egr ) 
-> xyplot( ht ~ dap | regiao * rot , data=egr ) 
-</​code>​ 
- 
-Também é possível construir gráficos com suavização:​ 
-<code rsplus> 
-> xyplot( ht ~ dap | regiao * rot , data=egr, 
-+ panel = function(x,​y) 
-+ { 
-+         ​panel.xyplot(x,​y) 
-+         ​panel.loess(x,​y,​ span=1, col="​red"​) 
-+ } ) 
->    
-</​code>​ 
- 
- 
- 
-=== Exercícios === 
- 
-<box left red | //​**Exercício:​** Relação Hipsométrica da Caixeta II // > 
-Utilizando o pacote lattice, analise a relação dap-altura (''​dap''​ e ''​h''​) em função do caixetal, mas **somente** para as árvores de caixeta (//Tabebuia cassinoides//​). 
-</​box>​ 
- 
-<box left red | //​**Exercício:​** Relação Altura das Dominantes - Idade em Florestas Plantadas // > 
-Utilizando os dados de floresta plantada (//E. grandis//), analise a relação entre altura das árvores dominantes (''​hdom''​) e idade (''​idade''​) por rotação (''​rot''​) e região (''​regiao''​). 
-</​box>​ 
- 
- 
- 
-==== Painel de Gráficos de Dispersão ===== 
- 
-O pacote lattice também possui uma função específica para fazer um painel de gráficos de dispersão: **splom** (//scatter plot//): 
-<code rsplus> 
-> splom( egr[ , c("​dap","​ht","​hdom","​idade"​)] ​ ) 
-</​code>​ 
- 
-Identificar grupos em cada gráfico de dispersão é mais fácil com a função **splom**, basta utilizar o argumento ''​group'':​ 
-<code rsplus> 
-> splom( egr[ , c("​dap","​ht","​hdom","​idade"​)] , group=egr$regiao ) 
-> splom( egr[ , c("​dap","​ht","​hdom","​idade"​)] , group=egr$rot ) 
-</​code>​ 
- 
-Também é possível adicionar uma //linha de suavização//,​ mas é necessário definir a função de painel (argumento ''​painel''​):​ 
-<code rsplus> 
-> splom( egr[ , c("​dap","​ht","​hdom","​idade"​)] , group=egr$regiao,​ 
-+ panel = function(x,​y,​...) 
-+ { 
-+     ​panel.splom(x,​y,​...) 
-+     ​panel.loess(x,​y,​...) 
-+ } 
-+ ) 
->    ​ 
-</​code>​ 
- 
-A função **panel.loess** é a função que efetivamente faz a suavização em cada gráfico de dispersão. 
- 
- 
- 
-=== Exercícios === 
- 
-<box left red | //​**Exercício:​** Biomassa de Árvores de Eucalipto // > 
-Analise a relação entre as variáveis quantitativas dos dados de biomassa de //E. saligna// utilizando a função **splom**. Inclua na sua análise a variável ''​classe''​. 
-</​box>​ 
- 
- 
- 
-==== Histogramas e Gráficos de Densidade ===== 
- 
-No lattice, todos os tipos de gráficos podem ser construídos na forma de painel. Para estudar a distribuição de variáveis temos a função **histogram** e **densityplot**:​ 
-<code rsplus> 
-> cax = read.csv("​caixeta.csv",​header=T) 
-> cax$dap = cax$cap / pi 
-> 
-> histogram( ~ dap, data=cax ) 
-> histogram( ~ dap | local , data=cax ) 
-> 
-> densityplot( ~ dap, data=cax ) 
-> densityplot( ~ dap | local , data=cax ) 
-</​code>​ 
- 
- 
-Também é possível construir um histograma com linhas de densidade, para isso o tipo do histograma deve ser definido como ''​density'':​ 
-<code rsplus> 
-> histogram( ~ ht | regiao * rot , dat=egr, type="​density",​ 
-+     panel = function(x, ...){ 
-+             ​panel.histogram(x,​ ...) 
-+             ​panel.densityplot(x,​ col="​red",​ ...) 
-+     } 
-+ ) 
-</​code>​ 
- 
- 
-As funções de histograma e densidade podem se tornar mais complexas. No exemplo abaixo, uma curva de densidade assumindo a distribuição Normal é adicionada aos histogramas,​ os quais são construídos com a densidade nas ordenadas: 
-<code rsplus> 
-> histogram( ~ ht | regiao * rot , dat=egr, type="​density",​ 
-+     panel = function(x, ...){ 
-+           ​panel.histogram(x,​ ...) 
-+           ​panel.mathdensity(dmath=dnorm,​ col="​black",​ args=list(mean=mean(x),​sd=sd(x))) 
-+     } 
-+ ) 
-</​code>​ 
- 
-=== Exercícios === 
- 
-<box red left | //​**Exercício:​** Altura das Árvores Dominantes em Florestas Plantadas //> 
-Explore o comportamento da variável altura das árvores dominantes (''​hdom''​) por região (''​regiao''​) e rotação (''​rot''​) na floresta plantada de //E. grandis//. 
-</​box>​ 
- 
-<box red left | //​**Exercício:​** Altura de Árvores de Caixeta //> 
-Analise o comportamento da variável altura (''​h''​) das árvores de caixeta. 
-</​box>​ 
- 
-==== Gráficos Quantil-Quantil ===== 
- 
-O pacote **lattice** implementa a construção de gráficos sempre através de fórmulas, isso pode ser conveniente 
-no caso de se verificar a distribuição de uma variável em várias situações:​ 
-<code rsplus> 
-> qqmath( ~ dap | local, data=cax ) 
-</​code>​ 
- 
-Para adicionar a linha do gráfico qq é necessário editar a função de painel: 
-<code rsplus> 
-> qqmath( ~ dap | local, data=cax, 
-+     panel = function(x, ...) 
-+    { 
-+       ​panel.qqmath(x,​ ...) 
-+       ​panel.qqmathline(x,​ ...) 
-+    } 
-+ ) 
-</​code>​ 
- 
-Uma vantagem do pacote lattice é a possibilidade de gráficos quantil-quantil com outras distribuições além da 
-distribuição normal. Nos gráficos abaixo, a distribuição observada de DAP das árvores dos caixetais é comparada com a distribuição exponencial (''​qexp''​). 
-<code rsplus> 
-> qqmath( ~ dap | local , data=cax, distribution = function(p) qexp(p, 1/mean(x)) ) 
-> 
-> qqmath( ~ dap | local , data=cax, distribution = function(p) qexp(p, 1/mean(x)), 
-+    panel = function(x,​...) 
-+    { 
-+       ​panel.qqmath(x,​...) 
-+       ​panel.qqmathline(x,​...) 
-+    } 
-+ ) 
-> 
-</​code>​ 
- 
-Também é possível fazer gráficos quantil-quantil de um conjuntos de dados empíricos usando a função **qq**: 
-<code rsplus> 
-> qq( local ~ dap, data=cax, subset = ( local=="​chauas"​ | local=="​jureia"​ ) ) 
-> qq( local ~ dap, data=cax, subset = ( local=="​chauas"​ | local=="​retiro"​ ) ) 
-> qq( local ~ dap, data=cax, subset = ( local=="​jureia"​ | local=="​retiro"​ ) ) 
-</​code>​ 
- 
-Dois aspectos devem ser notados no código acima: 
-  - A variável ''​local''​ (categórica) aparece **à esquerda** do sinal de modelagem. 
-  - O argumento ''​subset''​ faz com que a variável ''​local''​ fique com apenas duas categorias. 
- 
- 
- 
-=== Exercícios === 
- 
-<box 100% red left | //​**Exercício:​** Altura das Árvores em Florestas Plantadas //> 
-Verifique se a altura das árvores (''​ht''​) nas florestas plantadas de //E. grandis// segue distribuição Normal. 
- 
-Faça uma análise geral e depois por região (''​regiao''​) e rotação (''​rot''​). 
-</​box>​ 
- 
-<box 100% red left | //​**Exercício:​** Biomassa de Árvores de Eucalipto //> 
-Verifique se biomassa total (''​total''​) e a biomassa do tronco (''​tronco''​) das árvores de //E. saligna// possuem distribuição semelhante. E a biomassa das folhas (''​folha''​),​ tem distribuição semelhante à biomassa do tronco? 
-</​box>​ 
03_apostila/05-exploratoria.txt · Última modificação: 2023/08/15 21:45 (edição externa)