Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior | ||
03_apostila:05-exploratoria [2020/09/08 10:05] adalardo [Boxplot] |
03_apostila:05-exploratoria [2023/08/15 21:45] (atual) |
||
---|---|---|---|
Linha 6: | Linha 6: | ||
====== 4. Análise Exploratória de Dados ====== | ====== 4. Análise Exploratória de Dados ====== | ||
- | Podemos pensar a análise exploratório de dados de duas formas: | ||
- | * análise numérica: computa estatísticas descritivas; | ||
- | * análise gráfica: explora o comportamento e a relação entre as variáveis através de gráficos. | ||
- | Nesse tópico utlizaremos os arquivos 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-caixeta| Levantamento em caixetais:]] {{dados:caixeta.csv|caixeta.csv}} | ||
* [[dados:dados-esaligna| Dados de biomassa de árvores:]] {{:dados:esaligna.csv|esaligna.csv}} | * [[dados:dados-esaligna| Dados de biomassa de árvores:]] {{:dados:esaligna.csv|esaligna.csv}} | ||
Linha 24: | Linha 25: | ||
- | 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. | + | 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> | <code rsplus> | ||
> cax = read.csv("caixeta.csv", header=TRUE, as.is=TRUE) | > cax = read.csv("caixeta.csv", header=TRUE, as.is=TRUE) | ||
Linha 64: | Linha 65: | ||
- | <box left red | //**Exercício:** Estatísticas do Caixetal// > | + | <box left red | //**Exercício:** Estatísticas do Caixetal// > |
- | Construa um '''data.frame''' com os dados de **área basal** por '''local''' e '''parcela'''. | + | 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'''. | + | 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'''. | + | Calcule o intervalo de confiança de 95% da área basal por ''local''. |
</box> | </box> | ||
Linha 91: | Linha 92: | ||
</code> | </code> | ||
- | A função '''hist''' também pode fornecer os dados do histograma, sem gerar o histograma propriamente dito: | + | A função ''hist'' também pode fornecer os dados do histograma, sem gerar o histograma propriamente dito: |
<code rsplus> | <code rsplus> | ||
> hist( cax$dap, plot=FALSE ) | > hist( cax$dap, plot=FALSE ) | ||
Linha 126: | Linha 127: | ||
</code> | </code> | ||
- | Note que o objeto gerado pela função '''hist''' tem classes '''histogram''', logo pode ser guardado e grafado posteriormente: | + | Note que o objeto gerado pela função ''hist'' tem a classe ''histogram'', logo ele pode ser guardado e grafado posteriormente: |
<code rsplus> | <code rsplus> | ||
> dap.hist = hist( cax$dap, plot=FALSE ) | > dap.hist = hist( cax$dap, plot=FALSE ) | ||
Linha 135: | Linha 136: | ||
</code> | </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: | + | 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; | + | * ''xlab'' e ''ylab'' = nomes dos eixos X e Y, respectivamente; |
- | * '''main''' = nome do título do histograma; | + | * ''main'' = nome do título do histograma; |
- | * '''col''' = cor da barra (histograma), ou de linhas e símbolos plotados; | + | * ''col'' = cor da barra (histograma), ou de linhas e símbolos plotados; |
<code rsplus> | <code rsplus> | ||
> hist( cax$dap[ cax$local=="chauas" ], | > hist( cax$dap[ cax$local=="chauas" ], | ||
Linha 148: | Linha 149: | ||
</code> | </code> | ||
- | Muitas vêzes desejamos comparar gráficos, sendo útil termos mais de uma janela gráfica. A função '''X11()''' (no UNIX) abre uma janela gráfica, | + | 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: | + | sendo que podemos abrir várias janelas: |
<code rsplus> | <code rsplus> | ||
> hist( cax$dap[ cax$local=="chauas" ] , main="Chauás" ) | > hist( cax$dap[ cax$local=="chauas" ] , main="Chauás" ) | ||
Linha 166: | Linha 167: | ||
</code> | </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: | + | 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.off()'' - fecha a janela gráfica; |
- | * '''dev.cur()''' - diz qual janela gráfica está '''ACTIVE'''; | + | * ''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.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.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; | + | * ''dev.prev(which=dev.cur())'' - informa o número da janela gráfica anterior; |
- | * '''graphics.off()''' - fecha todas as janelas gráficas. | + | * ''graphics.off()'' - fecha todas as janelas gráficas. |
<code rsplus> | <code rsplus> | ||
> X11() | > X11() | ||
Linha 200: | Linha 201: | ||
Construa um histograma da altura das árvores do caixetal. | Construa um histograma da altura das árvores do caixetal. | ||
- | Construa histogramas da altura das árvores para os diferentes caixetais ('''local'''). | + | Construa histogramas da altura das árvores para os diferentes caixetais (''local''). |
Há diferenças entre as estruturas (distribuição de tamanhos) dos caixetais? | Há diferenças entre as estruturas (distribuição de tamanhos) dos caixetais? | ||
Linha 206: | Linha 207: | ||
<box left red | //**Exercício:** Diâmetros de Árvores de Eucalipto// > | <box left red | //**Exercício:** Diâmetros de Árvores de Eucalipto// > | ||
- | Construa um histogram do DAP das árvores de //E. saligna//. Procure interpretar o histograma. | + | Construa um histograma do DAP das árvores de //E. saligna//. Procure interpretar o histograma. |
</box> | </box> | ||
Linha 215: | Linha 216: | ||
==== Gráficos de Densidade ==== | ==== 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**. | + | 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''', | + | 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: | + | para criar o gráfico, ou a função ''lines'', para adicionar uma linha a um gráfico já criado: |
<code rsplus> | <code rsplus> | ||
> plot( density(cax$dap) ) | > plot( density(cax$dap) ) | ||
Linha 224: | Linha 225: | ||
</code> | </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: | + | O parâmetro que controla o comportamento do estimador de densidade é a amplitude da janela de observação ou //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> | <code rsplus> | ||
> plot( density(cax$dap, bw=0.5), col="red" ) | > plot( density(cax$dap, bw=0.5), col="red" ) | ||
Linha 236: | Linha 237: | ||
<box left red | //**Exercício:** Distribuição de DAP nos Caixetais// > | <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? | + | Realize uma análise de densidade do DAP para cada um dos caixetais. Os resultados confirmam o que foi visto nos histogramas? |
</box> | </box> | ||
Linha 245: | Linha 246: | ||
==== Boxplot ==== | ==== Boxplot ==== | ||
- | **Boxplot** é um gráfico estatístico também utilizado para estudar o comportamento de variáveis. Ele é composto dos elementos: | + | **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 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%). | * 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 vêzes a distância interquartil (diferença entre o 1o. e 3o. quartis). | + | * 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. | * As observações que passarem essa distância são representadas individualmente por pontos. | ||
<code rsplus> | <code rsplus> | ||
- | > | + | > boxplot( cax$dap ) |
- | >boxplot( cax$dap ) | + | |
> | > | ||
> esa = read.csv("dados/esaligna.csv",header=TRUE) | > esa = read.csv("dados/esaligna.csv",header=TRUE) | ||
Linha 260: | Linha 260: | ||
</code> | </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. | + | 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 | + | 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: | quando desejamos um **boxplot** para cada situação: | ||
<code rsplus> | <code rsplus> | ||
Linha 275: | Linha 275: | ||
</code> | </code> | ||
- | O primeiro argumento é uma '''formula''' estatística onde o símbolo **~** tem um significado especial. | + | 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''. | + | 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. | + | 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. |
Linha 304: | Linha 304: | ||
<box left red | //**Exercício:** Estrutura de Eucaliptais // > | <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'''). | + | 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> | </box> | ||
Linha 318: | Linha 318: | ||
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. | 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: | + | 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> | <code rsplus> | ||
> qqnorm( cax$dap ) | > qqnorm( cax$dap ) | ||
Linha 328: | Linha 328: | ||
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). | 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: | + | É isso que a função ''qqnorm'' faz para distribuição Normal: |
<code rsplus> | <code rsplus> | ||
> vn1 = rnorm( 10000 ) | > vn1 = rnorm( 10000 ) | ||
Linha 354: | Linha 354: | ||
</code> | </code> | ||
- | **Nota:** a função '''abline( a, b)''' adiciona a um gráfico um reta com intercepto //a// e inclinação //b//. | + | **Nota:** a função ''abline( a, b)'' adiciona a um gráfico uma reta com intercepto //a// e inclinação //b//. |
Linha 361: | Linha 361: | ||
<box left red | //**Exercício:** Inventário em Floresta Plantada // > | <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'''. | + | Verifique se as variáveis quantitativas obtidas no inventário de florestas plantadas tem distribuição Normal: ''dap'', ''ht'' e ''hdom''. |
</box> | </box> | ||
Linha 380: | Linha 380: | ||
</code> | </code> | ||
- | Para obter o gráfico de barras basta usar a função '''barplot''': | + | Para obter o gráfico de barras basta usar a função ''barplot'': |
<code rsplus> | <code rsplus> | ||
> barplot( dr ) | > barplot( dr ) | ||
Linha 390: | Linha 390: | ||
</code> | </code> | ||
- | O nome 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. | + | 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)'''. | + | 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> | <code rsplus> | ||
> par( omd=c(0.2,1,0,1) ) | > par( omd=c(0.2,1,0,1) ) | ||
Linha 400: | Linha 400: | ||
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. | 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, compararmos os comprimentos de barra para obter uma visão das densidades relativas das espécies. | + | 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: | Existe no R, um gráfico que faz a mesma coisa de modo muito mais simples e direto: | ||
Linha 410: | Linha 410: | ||
</code> | </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. | + | 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: | 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: | ||
Linha 421: | Linha 421: | ||
<box left red | //**Exercício:** Dominância em Caixetais// > | <box left red | //**Exercício:** Dominância em Caixetais// > | ||
- | Construa um gráfico da dominância das espécies nos caixetais. | + | Construa um gráfico da dominância (biomassa relativa) das espécies nos caixetais. |
</box> | </box> | ||
<box left red | //**Exercício:** Inventário em Floresta Plantada // > | <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'''). | + | 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> | </box> | ||
Linha 439: | Linha 439: | ||
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. | 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''': | + | A função genérica no R para gráficos de dispersão é a função ''plot'': |
<code rsplus> | <code rsplus> | ||
> plot( x = cax$dap, y = cax$h ) | > plot( x = cax$dap, y = cax$h ) | ||
</code> | </code> | ||
- | Na função '''plot''', o primeiro argumento é plotado nas //abscissas// (eixo-x) e o segundo argumento nas //ordenadas// (eixo-y). | + | 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, freqüentemente 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. | + | 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): | 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): | ||
Linha 453: | Linha 453: | ||
</code> | </code> | ||
- | Uma série de parâmetros gráficos podem ser utilizados diretamente nas funções '''plot''' e '''scatter.smooth''': | + | Uma série de parâmetros gráficos podem ser utilizados diretamente nas funções ''plot'' e ''scatter.smooth'': |
<code rsplus> | <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)", main="Caixetais") | ||
Linha 462: | Linha 462: | ||
- | 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: | + | 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> | <code rsplus> | ||
> scatter.smooth( cax$dap, cax$h ) | > scatter.smooth( cax$dap, cax$h ) | ||
Linha 479: | Linha 479: | ||
</code> | </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''). | + | 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//. | + | 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: | + | 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> | <code rsplus> | ||
> cax2 = cax[ -c(362, 556, 557), ] | > cax2 = cax[ -c(362, 556, 557), ] | ||
Linha 491: | Linha 491: | ||
- | Também na função '''plot''' é possível se utilizar como argumento inicial uma '''formula''', seguida do ''data.frame'' que contem as variáveis: | + | 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> | <code rsplus> | ||
> plot( h ~ dap, data=cax2 ) | > plot( h ~ dap, data=cax2 ) | ||
Linha 502: | Linha 502: | ||
</code> | </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: | + | 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> | <code rsplus> | ||
> coplot( h ~ dap | local , data=cax2 ) | > coplot( h ~ dap | local , data=cax2 ) | ||
Linha 508: | Linha 508: | ||
</code> | </code> | ||
- | Também é possível adicionar uma linha de tendência em cada gráfico gerado pela função '''coplot''': | + | Também é possível adicionar uma linha de tendência em cada gráfico gerado pela função ''coplot'': |
<code rsplus> | <code rsplus> | ||
> coplot( h ~ dap | local , data=cax2 , panel= panel.smooth) | > coplot( h ~ dap | local , data=cax2 , panel= panel.smooth) | ||
Linha 516: | Linha 516: | ||
Na ''formula'' acima, surgiram elementos novos: | 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''. | * 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''. | + | * 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'''): | + | 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> | <code rsplus> | ||
> egr = read.table("dados/egrandis.csv",header=TRUE,sep=";") | > egr = read.table("dados/egrandis.csv",header=TRUE,sep=";") | ||
> coplot( ht ~ dap | idade, data=egr, panel = panel.smooth ) | > coplot( ht ~ dap | idade, data=egr, panel = panel.smooth ) | ||
- | > coplot( ht ~ dap | idade * rot , data=egr, panel = panel.smooth ) | + | > coplot( ht ~ dap | idade * rotacao , data=egr, panel = panel.smooth ) |
- | > coplot( ht ~ dap | idade * as.factor(rot) , data=egr, panel = panel.smooth ) | + | > coplot( ht ~ dap | idade * as.factor(rotacao) , data=egr, panel = panel.smooth ) |
</code> | </code> | ||
Linha 532: | Linha 532: | ||
<box left red | //**Exercício:** Relação Hipsométrica da Caixeta // > | <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//). | + | 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> | ||
<box left red | //**Exercício:** Inventário em Floresta Plantada II // > | <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'''). | + | Analise a relação entre as variáveis ''hdom'' (altura das árvores dominantes) e ''dap'' para diferentes regiões (''regiao'') e rotações (''rotacao''). |
</box> | </box> | ||
==== Painel de Gráficos de Dispersão ==== | ==== 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: | + | 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> | <code rsplus> | ||
- | > pairs( egr[ , c("dap","ht","hdom","idade")] ) | + | > pairs( egr[ , c("dap","ht","idade")] ) |
</code> | </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: | + | 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> | <code rsplus> | ||
- | > pairs( egr[ , c("dap","ht","hdom","idade")] , pch=21, bg=c("red","blue","green")[unclass(egr$regiao)] ) | + | > pairs( egr[ , c("dap","ht","idade")] , pch=21, bg=c("red","blue","green", "gold")[unclass(as.factor(egr$regiao))] ) |
- | > pairs( egr[ , c("dap","ht","hdom","idade")] , pch=21, bg=c("red","green")[unclass(egr$rot)] ) | + | > pairs( egr[ , c("dap","ht","idade")] , pch=21, bg=c("red","green")[unclass(egr$rotacao)] ) |
</code> | </code> | ||
Linha 561: | Linha 561: | ||
Analise a relação entre as variáveis quantitativas do conjunto de dados sobre biomassa das árvores de //E. saligna//. | 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? | + | Qual a influência da variável classe (''classe'') sobre a relação entre as variáveis? |
</box> | </box> | ||
Linha 575: | Linha 575: | ||
===== Gráficos em Painel: O Pacote Lattice ===== | ===== 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: | + | 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> | <code rsplus> | ||
> library(lattice) | > library(lattice) | ||
</code> | </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. | + | 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 ===== | ==== Gráficos de Dispersão ===== | ||
Linha 590: | Linha 590: | ||
</code> | </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: | + | 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> | <code rsplus> | ||
> xyplot( ht ~ dap | regiao , data=egr ) | > xyplot( ht ~ dap | regiao , data=egr ) | ||
- | > xyplot( ht ~ dap | regiao * rot , data=egr ) | + | > xyplot( ht ~ dap | regiao * rotacao , data=egr ) |
</code> | </code> | ||
Também é possível construir gráficos com suavização: | Também é possível construir gráficos com suavização: | ||
<code rsplus> | <code rsplus> | ||
- | > xyplot( ht ~ dap | regiao * rot , data=egr, | + | > xyplot( ht ~ dap | regiao * rotacao , data=egr, |
- | + panel = function(x,y) | + | panel = function(x,y) |
- | + { | + | { |
- | + panel.xyplot(x,y) | + | panel.xyplot(x,y) |
- | + panel.loess(x,y, span=1, col="red") | + | panel.loess(x,y, span=1, col="red") |
- | + } ) | + | } ) |
> | > | ||
</code> | </code> | ||
Linha 612: | Linha 612: | ||
<box left red | //**Exercício:** Relação Hipsométrica da Caixeta II // > | <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//). | + | 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> | ||
<box left red | //**Exercício:** Relação Altura das Dominantes - Idade em Florestas Plantadas // > | <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'''). | + | Utilizando os dados de floresta plantada (//E. grandis//), analise a relação entre altura das árvores dominantes (''hdom'') e idade (''idade'') por rotação (''rotacao'') e região (''regiao''). |
</box> | </box> | ||
Linha 628: | Linha 628: | ||
</code> | </code> | ||
- | Identificar grupos em cada gráfico de dispersão é mais fácil com a função **splom**, basta utilizar o argumento '''group''': | + | Identificar grupos em cada gráfico de dispersão é mais fácil com a função **splom**, basta utilizar o argumento ''group'': |
<code rsplus> | <code rsplus> | ||
> splom( egr[ , c("dap","ht","hdom","idade")] , group=egr$regiao ) | > splom( egr[ , c("dap","ht","hdom","idade")] , group=egr$regiao ) | ||
Linha 634: | Linha 634: | ||
</code> | </code> | ||
- | Também é possível adicionar uma //linha de suavização//, mas é necessário definir a função de painel (argumento '''painel'''): | + | Também é possível adicionar uma //linha de suavização//, mas é necessário definir a função de painel (argumento ''painel''): |
<code rsplus> | <code rsplus> | ||
> splom( egr[ , c("dap","ht","hdom","idade")] , group=egr$regiao, | > splom( egr[ , c("dap","ht","hdom","idade")] , group=egr$regiao, | ||
Linha 653: | Linha 653: | ||
<box left red | //**Exercício:** Biomassa de Árvores de Eucalipto // > | <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'''. | + | 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> | </box> | ||
Linha 660: | Linha 660: | ||
==== Histogramas e Gráficos de Densidade ===== | ==== 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**: | + | 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> | <code rsplus> | ||
> cax = read.csv("caixeta.csv",header=T) | > cax = read.csv("caixeta.csv",header=T) | ||
Linha 673: | Linha 673: | ||
- | Também é possível construir um histograma com linhas de densidade, para isso o tipo do histograma deve ser definido como '''density''': | + | Também é possível construir um histograma com linhas de densidade, para isso o tipo do histograma deve ser definido como ''density'': |
<code rsplus> | <code rsplus> | ||
> histogram( ~ ht | regiao * rot , dat=egr, type="density", | > histogram( ~ ht | regiao * rot , dat=egr, type="density", | ||
Linha 684: | Linha 684: | ||
- | 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: | + | 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> | <code rsplus> | ||
> histogram( ~ ht | regiao * rot , dat=egr, type="density", | > histogram( ~ ht | regiao * rot , dat=egr, type="density", | ||
Linha 697: | Linha 697: | ||
<box red left | //**Exercício:** Altura das Árvores Dominantes em Florestas Plantadas //> | <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//. | + | 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> | ||
<box red left | //**Exercício:** Altura de Árvores de Caixeta //> | <box red left | //**Exercício:** Altura de Árvores de Caixeta //> | ||
- | Analise o comportamento da variável altura ('''h''') das árvores de caixeta. | + | Analise o comportamento da variável altura (''h'') das árvores de caixeta. |
</box> | </box> | ||
Linha 724: | Linha 724: | ||
Uma vantagem do pacote lattice é a possibilidade de gráficos quantil-quantil com outras distribuições além da | 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, o DAP das árvores dos caixetais é comparada com a distribuição exponencial ('''qexp'''). | + | 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> | <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)) ) | ||
Linha 746: | Linha 746: | ||
Dois aspectos devem ser notados no código acima: | Dois aspectos devem ser notados no código acima: | ||
- | - A variável '''local''' (categórica) aparece **à esquerda** do sinal de modelagem. | + | - 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. | + | - O argumento ''subset'' faz com que a variável ''local'' fique com apenas duas categorias. |
Linha 754: | Linha 754: | ||
<box 100% red left | //**Exercício:** Altura das Árvores em Florestas Plantadas //> | <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. | + | 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'''). | + | Faça uma análise geral e depois por região (''regiao'') e rotação (''rot''). |
</box> | </box> | ||
<box 100% red left | //**Exercício:** Biomassa de Árvores de Eucalipto //> | <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? | + | 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> | </box> |