Ferramentas do usuário

Ferramentas do site


Barra lateral

lcf5876:historico-disciplina:2018:programa:06-analise-exploratoria:06-04-grafico-qq
  LCF-5876 Computação no Ambiente R:
Aplicações em Ecologia
e Recursos Florestais
R logo
6. ANÁLISE EXPLORATÓRIA DE DADOS

6.4. Gráficos Quantil-Quantil

Um gráfico de dispersão especial é o gráfico Quantil-Quantil ou Gráfico QQ. Em essência, ele é um gráfico de dispersão que grafa as coordenadas x-y, mas essas coordenadas se referem a quantis de distribuições observadas (quantis empíricos) ou a quantis de distribuições teóricas que se assume como modelo para os dados (quantis teóricos).

6.4.1. Contrastando Distribuições Observadas


O gráfico Quantil-Quantil (QQ) também pode ser um gráfico empírico comparando duas distribuições a partir dos quantis empíricos. A função qqplot é utilizada para construir este gráfico.

  1 ######################################################
  2 ########### 6. ANÁLISE EXPLORATÓRIA DE DADOS
  3 ########### 6.4. Gráficos Quantil-Quantil
  4 ######################################################
  5 # 6.4.1 Contrastando Distribuições Observadas
  6 cax <- read.csv("caixeta-completo.csv",as.is=TRUE)
  7 cax$dap <- cax$cap / (pi*10)
  8 cax$h <- cax$h / 10
  9
 10 chauas = cax[cax$local=="chauas" & cax$dap >= 5, ]
 11 jureia = cax[cax$local=="jureia" & cax$dap >= 5, ]
 12 retiro = cax[cax$local=="retiro" & cax$dap >= 5, ]
 13
 14 qqplot( retiro$dap, jureia$dap,
 15        xlab="DAP no Caixeta Retiro",
 16        ylab="DAP no Caixeta Juréia", cex.lab=1.4)
 17 abline( 0, 1, col="red" )
 18
 19 qqplot( retiro$dap, chauas$dap,
 20        xlab="DAP no Caixeta Retiro",
 21        ylab="DAP no Caixeta Chauás", cex.lab=1.4)
 22 abline( 0, 1, col="red" )
 23
 24 qqplot( chauas$dap, jureia$dap,
 25        xlab="DAP no Caixeta Chauás",
 26        ylab="DAP no Caixeta Juréia", cex.lab=1.4)
 27 abline( 0, 1, col="red" )
 28

Nota: a função abline( a, b) adiciona a um gráfico um reta com intercepto a e inclinação b.

6.4.2. Distribuição Observada contra Distribuição Esperada GAUSSIANA (Normal)


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. Nesse caso, os quantis observados são comparados aos quantis de uma dada distribuição teórica que é ajustada aos dados.

O gráfico quantil-quantil desse tipo mais tradicional é aquele usado para verificar se uma variável possui distribuição Gaussiana (Normal). No R isso é realizado com a função qqnorm, associada à função qqline que adiciona uma linha ao gráfico:

 29 # 6.4.2. Distribuição Observada versus Esperada GAUSSIANA (Normal)
 30
 31 qqnorm( cax$dap )
 32 qqline( cax$dap , col="red")
 33

A idéia central do gráfico quantil-quantil é a seguinte: quando um variável segue uma dada distribuição (como a distribuição Gaussiana) os quantis empíricos, isto é, calculados a partir de uma amostra, formam uma linha reta contra os quantis teóricos, calculados a partir da distribuição teórica ajustada ao dados, isto é, com base nas estimativas dos parâmetros da distribuição teórica (no caso da Gaussiana: média e desvio padrão).

Efieto do Tamanho da Amostra

É isso que a função qqnorm faz para distribuição Gaussiana. Mas, para avaliar o gráfico Quantil-Quantil é muito importante considerar o tamanho da amostra na interpretação do gráfico:

 34 ## Efieto do Tamanho da Amostra
 35
 36 amostra = rnorm( 100 )
 37 qqnorm( amostra , main="Amostran de Tamanho 100")
 38 qqline( amostra )
 39
 40 amostra = rnorm( 1000 )
 41 qqnorm( amostra , main="Amostran de Tamanho 1.000")
 42 qqline( amostra )
 43
 44 amostra = rnorm( 10000 )
 45 qqnorm( amostra , main="Amostran de Tamanho 10.000")
 46 qqline( amostra )
 47

Gráficos QQ e Desvios da "Normalidade"

Os gráficos QQ são eficientes para se visualizar rapidamente vários desvios da “normalidade”, isto é, as diferentes maneiras que um dado conjunto de dados pode diferir do comportamento esperado segundo a distribuição Gaussiana. Mas, é necessário algum treinamento na sua interpretação:

 48 ##   Gráfico QQNorm e Desvios da "Normalidade"
 49 ### Assimetria à ESQUERDA
 50 amostra.e = rexp( 10000 )
 51 qqnorm( amostra.e , main="Distribuição Assimétrica à ESQUERDA")
 52 qqline( amostra.e , col="red", lwd=2)
 53 plot(density(amostra.e), main="Distribuição Assimétrica à ESQUERDA")
 54
 55 ### Assimetria à DIREITA
 56 amostra.d = rweibull( 10000, shape=17.8, scale=5 )
 57 qqnorm( amostra.d , main="Distribuição Assimétrica à DIREITA")
 58 qqline( amostra.d , col="red", lwd=2)
 59 plot(density(amostra.d), main="Distribuição Assimétrica à DIREITA")
 60
 61 ### Distribuição BIMODAL e PLATICÚRTICA
 62 amostra.p = rbeta( 10000, shape1=0.5, shape2=0.5 )
 63 qqnorm( amostra.p , main="Distribuição BIMODAL e PLATICÚRTICA")
 64 qqline( amostra.p , col="red", lwd=2)
 65 plot(density(amostra.p), main="Distribuição BIMODAL e PLATICÚRTICA")
 66
 67 ### Distribuição LEPTOCÚRTICA
 68 amostra.l = c(rnorm(6000) , rnorm(4000, sd=0.05))
 69 qqnorm( amostra.l , main="Distribuição LEPTOCÚRTICA")
 70 qqline( amostra.l , col="red", lwd=2)
 71 plot(density(amostra.l), main="Distribuição LEPTOCÚRTICA")
 72

6.4.3. Procedimento para Construção do Gráfico QQ Observada x Esperada


 73 # 6.4.3. Procedimento para Construção do Gráfico QQ Observada x Esperada
 74

É relativamente simples se construir gráficos Quantil-Quantil para outras distribuições além da Gaussiana. Para isto, é necessário ajustar a distribuição aos dados, isto é, estimar os parâmetros da distribuição para os dados sendo analisados.

Os passos para construção do gráfico QQ são:

  • Primeiro Passo: Encontrar os pontos percentuais nos quais serão calculados os percentis empíricos e teóricos. Isto é realizado com a função ppoints tendo como argumento o vetor dos dados (x):
percent = ppoints(x)
  • Segundo Passo: Encontrar os quantis empíricos utilizando a função quantile tendo como argumentos o vetor dos dados (x) e os pontos percentuais do passo anterior (percent):
q.empirico = quantile(x, prob=percent)
  • Terceiro Passo: Estimar os parâmetros da distribuição teórica, gerando objetos com as estimativas. Por exemplo, no caso da Gaussiana será
media = mean(x); desvio.padrao = sd(x)
  • Quarto Passo: Calcular os quantis teóricos utilizando a função quantílica da distribuição teórica.
q.teorico = qnorm(percent, mean=media, sd=desvio.padrao)
  • Quinto Passo: Grafar quantis empíricos contra o quantis teóricos utilizando a função plot
plot(q.teorico, q.empirico)
  • Sexto Passo: Adicionar uma linha que passa pela origem e tem inclinação um, utilizando a função abline:
  • abline(0, 1)

6.4.4. Distribuição Observada versus Esperada EXPONENCIAL


Como primeiro exemplo, temos a distribuição exponencial, cujo parâmetro (rate) é estimado da seguinte maneira $$\widehat{\lambda} = \frac{1}{\overline{x}}$$ onde $\overline{x}$ é a média amostral da variável $x$ ($0\leq x \leq \infty$).

Assim, em algumas poucas linhas se faz um gráfico quantil-quantil exponencial:

 75 # 6.4.4. Distribuição Observada versus Esperada EXPONENCIAL
 76
 77 x <- cax$dap[ cax$dap >= 5 ] - 5
 78 percent <- ppoints(x)
 79 q.empiricos <- quantile(x, prob=percent)  + 5
 80 q.teorico.exp  <- qexp(percent, rate=1/mean(x)) + 5
 81 plot(q.teorico.exp, q.empiricos,
 82      xlab="Quantis Teóricos", ylab="Quantis Empíricos",
 83      main="Gráfico Quantil-Quantil Exponencial")
 84 abline(0, 1, col="red")
 85

6.4.5. Distribuição Observada versus Esperada WEIBULL


A construção do gráfico QQ para distribuição mais complexas, como a distribuição Weibull, por exemplo, segue exatamente os mesmos passos. O elemento complicante é apenas a estimação dos parâmetros. No caso da Weibull, podemos utilizar a função fitdistr do pacote MASS:

 86 # 6.4.5. Distribuição Observada versus Esperada WEIBULL
 87
 88 x <- cax$dap[ cax$dap >= 5 ] - 5
 89 percent <- ppoints(x)
 90 q.empiricos <- quantile(x, prob=percent)  + 5
 91
 92 library(MASS)                    # Pacote com funções extras
 93 parms <- fitdistr(x, "Weibull")  # Ajusta a Distrib. Weibull
 94 parms
 95 q.teorico.weibull  <- qweibull(percent, shape= parms$estimate["shape"],
 96                            scale= parms$estimate["scale"] ) + 5
 97 plot(q.teorico.weibull, q.empiricos,
 98      xlab="Quantis Teóricos", ylab="Quantis Empíricos",
 99      main="Gráfico Quantil-Quantil Weibull")
100 abline(0, 1, col="red",lwd=2)
101




lcf5876/historico-disciplina/2018/programa/06-analise-exploratoria/06-04-grafico-qq.txt · Última modificação: 2020/03/06 09:46 por joaoluis