12.2 Tabelas de variáveis categóricas

A função table() permite contar valores em fatores e vetores e você pode relembrar como usar a função barplot() para gerar gráficos de barra simples:

# continuando com os dados de caixeta.csv
head(caixeta)
local parcela arvore fuste cap h especie dap
chauas 1 1 1 210 80 Myrcia sulfiflora 66.84508
chauas 1 3 1 170 80 Myrcia sulfiflora 54.11268
chauas 1 4 1 720 70 Syagrus romanzoffianus 229.18312
chauas 1 5 1 200 80 Tabebuia cassinoides 63.66198
chauas 1 6 1 750 170 indet.1 238.73241
chauas 1 7 1 320 80 Myrcia sulfiflora 101.85916
# tem a coluna especie

# podemos resumir quantos individuos tem de cada espécie (considerando que cada linha é um individuo)
table(caixeta$especie)
Alchornea triplinervia Andira fraxinifolia bombacaceae Cabralea canjerana Callophyllum brasiliensis Calophyllum brasiliensis Cecropia sp Coussapoa macrocarpa Coussapoa micropoda Cryptocaria moschata Cyathea sp Eugenia oblongata eugenia3 fabaceae1 Ficus sp Gomidesia sp Ilex durosa Ilex sp indet.1 indet.2 indet.3 Inga sp Jacaranda puberula jussara Matayba sp Mela 1 Mela 2 Myrcia sulfiflora Myrtaceae 3 myrtaceae1 myrtaceae2 myrtaceae4 Pera glabrata Persea sp Pisonia sp Psidium sp Simplocos sp Solanum sp1 Solanum sp2 Syagrus romanzoffianus Tabebuia 1 Tabebuia cassinoides Tibouchina nutticeps
15 4 1 4 7 4 1 3 9 2 2 2 1 1 2 1 8 2 1 1 1 4 2 37 1 63 2 96 3 4 1 1 1 3 2 20 2 1 1 1 10 698 2
sort(table(caixeta$especie), decreasing = T)[1:3] # quais são as tres especies mais abundantes
Tabebuia cassinoides Myrcia sulfiflora Mela 1
698 96 63
table(caixeta$local) # quantas localidades?
chauas jureia retiro
426 241 360
## Graficos de barra para representar uma tabela
op <- par(no.readonly = TRUE) # pega parametros gráficos atual
par(mar = c(10, 3, 0, 0)) # mudando as margens
vv <- sort(table(caixeta$especie), decreasing = T)
vv[1:5] # cinco especies mais abundantes
Tabebuia cassinoides Myrcia sulfiflora Mela 1 jussara Psidium sp
698 96 63 37 20
# gráfico de barras disso
barplot(vv, cex.names = 0.5)

par(las = 2, mar = c(10, 5, 5, 1)) # mudando margens e orientacao dos eixos
barplot(sort(table(caixeta$especie), decreasing = T), cex.names = 0.8)

# muita coisa, pegando apenas as especies mais abundantes
barplot(sort(table(caixeta$especie), decreasing = T)[1:10], cex.names = 0.8)

# note como Tabebuia cassonoides é muito mais abundante que qualquer outra espécie nessas comunidades

par(op) # volta aos parametros
# numero de individuos por localidade
barplot(table(caixeta$local), ylab = "Número de indivíduos")

12.2.1 Resumo de gráficos univariados

Além das funções gráficas apresentadas acima, vamos ver aqui as funções dotchart() e stripchart(), úteis para visualizar dados brutos.

# para visualizar dados brutos
head(caixeta)
local parcela arvore fuste cap h especie dap
chauas 1 1 1 210 80 Myrcia sulfiflora 66.84508
chauas 1 3 1 170 80 Myrcia sulfiflora 54.11268
chauas 1 4 1 720 70 Syagrus romanzoffianus 229.18312
chauas 1 5 1 200 80 Tabebuia cassinoides 63.66198
chauas 1 6 1 750 170 indet.1 238.73241
chauas 1 7 1 320 80 Myrcia sulfiflora 101.85916
# plotar a coluna altura (h)
plot(caixeta$h, xlab = "Observações", ylab = "Altura (m)")

# note que o único valor extremos fica super evidente

# poderíamos usar a função dotchart para isso
dotchart(caixeta$h, ylab = "Observações", xlab = "Altura (m)")

# inversão dos eixos..
# vamos corrigir o valor extremo
caixeta[which(caixeta$h > 300), "h"] <- 48

# faz um boxplot disso
boxplot(caixeta$h) # já vimos isso, mas note os pontos isolados dos boxes (caixas), esses são valores isolados, meio fora da distribuicao
summary(caixeta$h) # ve os quartis e média
Min. 1st Qu. Median Mean 3rd Qu. Max.
5 60 90 89.86173 110 230
# plota a mediana
abline(h = median(caixeta$h), col = "red", lwd = 3)
# plota todos os quartis
abline(h = quantile(caixeta$h), col = "blue", lwd = 2)

# ve em forma de histograma
hist(caixeta$h, breaks = 20)
# plota os quartis
abline(v = quantile(caixeta$h), col = "blue", lwd = 2)

dim(caixeta)
## [1] 1027    8
# ve o histograma na forma de pontos:
?stripchart
stripchart(caixeta$h, method = "stack", jitter = 0, offset = 1, ylim = c(0, nrow(caixeta)), xlab = "altura (cm)")

## Numa tela só boxplot, histograma, densidade e stripchart
olp <- par(no.readonly = TRUE)
par(mfrow = c(2, 2), mar = c(3, 3, 3, 0))
boxplot(caixeta$h)
hist(caixeta$h)
plot(stats::density(caixeta$h))
stripchart(caixeta$h, method = "stack")

par(olp) # resgata parametros graficos originais

## Histograma com diferentes larguras de barras
par(mar = c(5, 4, 3, 1), mfrow = c(3, 2))
hist(caixeta$h, main = "Default")
hist(caixeta$h, breaks = 5, main = "Cinco break-points")
hist(caixeta$h, breaks = 10, main = "Dez break-points")
hist(caixeta$h, breaks = 15, main = "Quinze break-points")
hist(caixeta$h, breaks = 20, main = "Vinte break-points", col = "lightblue")
par(olp)