Nesta rotina calculamos a estrutura horizontal (densidade, frequência, dominância e valor de importância) e a estrutura diamétrica e vertical dos caixetais do Vale do Ribeira, usando o mesmo banco da prática de índices de agregação. Usamos só funções do R básico, para que cada passo da fórmula fique visível.
Roteiro da aula prática (09/10 · EE4)
Calcular os parâmetros de uma espécie à mão (seção 3) e conferir no Excel;
Generalizar o cálculo para todas as espécies com uma função (seção 4);
Comparar os três caixetais (seção 5) e montar a estrutura diamétrica (seção 6);
Responder aos exercícios (seção 7).
1. Dados
Os dados caixeta vêm da dissertação de Andrea Vanin (1999), disponibilizados pelo curso ecoR/USP: três caixetais (chauas, jureia e retiro), cada um com 5 parcelas de 10 × 20 m. Cada linha é um fuste.
cx <-read.csv("../dados/caixeta.csv") # no seu projeto: read.csv("dados/caixeta.csv")cx$especie[cx$especie =="Callophyllum brasiliensis"] <-"Calophyllum brasiliensis"str(cx)
Unidades. A página do ecoR não informa as unidades de cap e h. Pelos valores (CAP mediano de 270 e altura mediana de 90), assumimos CAP em milímetros e altura em decímetros, o que dá DAP mediano de cerca de 8,6 cm e altura mediana de 9 m, valores coerentes com caixetais. Se descobrir outra informação, basta mudar os dois fatores abaixo.
fator_cap <-0.1# mm -> cmfator_h <-0.1# dm -> mcx$cap_cm <- cx$cap * fator_capcx$h_m <- cx$h * fator_hcx$dap <- cx$cap_cm / pi # DAP (cm)cx$g <- pi * cx$dap^2/40000# área basal do fuste (m²) = CAP²/(4π)/10000summary(cx[, c("dap", "h_m", "g")])
dap h_m g
Min. : 0.6366 Min. : 0.500 Min. :0.0000318
1st Qu.: 6.0479 1st Qu.: 6.000 1st Qu.:0.0028727
Median : 8.5944 Median : 9.000 Median :0.0058012
Mean : 9.5383 Mean : 9.028 Mean :0.0094813
3rd Qu.:11.4592 3rd Qu.:11.000 3rd Qu.:0.0103132
Max. :66.8451 Max. :48.000 Max. :0.3509366
2. De fustes para árvores
A densidade conta árvores, mas a dominância soma a área basal de todos os fustes. Por isso, juntamos os fustes de cada árvore, somando a área basal e guardando a maior altura e o número de fustes:
cx$parc <-paste(cx$local, cx$parcela, sep ="_")chave <-c("local", "parc", "arvore", "especie")arv <-aggregate(g ~ local + parc + arvore + especie, data = cx, FUN = sum)arv$h_m <-aggregate(h_m ~ local + parc + arvore + especie, data = cx, FUN = max)$h_marv$fustes <-aggregate(fuste ~ local + parc + arvore + especie, data = cx, FUN = length)$fustearv$dap_eq <-sqrt(arv$g *40000/ pi) # DAP equivalente (cm) de uma árvore com vários fustesc(fustes =nrow(cx), arvores =nrow(arv), parcelas =length(unique(arv$parc)))
O DAP equivalente é o diâmetro de um fuste único com a mesma área basal da árvore: \(DAP_{eq} = \sqrt{\sum DAP_j^2}\).
3. Passo a passo com uma espécie
As fórmulas (Mueller-Dombois & Ellenberg 1974; Felfili et al. 2011):
Parâmetro
Fórmula
Densidade absoluta (ind./ha)
\(DA_i = n_i / A\)
Densidade relativa (%)
\(DR_i = 100 \cdot n_i / N\)
Frequência absoluta (%)
\(FA_i = 100 \cdot u_i / U_T\)
Frequência relativa (%)
\(FR_i = 100 \cdot FA_i / \sum FA\)
Dominância absoluta (m²/ha)
\(DoA_i = G_i / A\)
Dominância relativa (%)
\(DoR_i = 100 \cdot G_i / \sum G\)
Valor de importância
\(VI_i = DR_i + FR_i + DoR_i\) (ou dividido por 3, em %)
Valor de cobertura
\(VC_i = DR_i + DoR_i\)
em que \(n_i\) = árvores da espécie i, \(N\) = total de árvores, \(A\) = área amostrada (ha), \(u_i\) = parcelas com a espécie, \(U_T\) = total de parcelas e \(G_i\) = área basal da espécie (m²).
Para Myrcia sulfiflora, considerando as 15 parcelas (15 × 200 m² = 0,3 ha):
A <-15*10*20/10000# 0,3 haUT <-15m <- arv[arv$especie =="Myrcia sulfiflora", ]n_i <-nrow(m); N <-nrow(arv)u_i <-length(unique(m$parc))G_i <-sum(m$g); G <-sum(arv$g)c(DA = n_i / A, DR =100* n_i / N, FA =100* u_i / UT,DoA = G_i / A, DoR =100* G_i / G)
DA DR FA DoA DoR
263.333333 11.755952 33.333333 2.053417 6.326421
No Excel
O mesmo cálculo no Excel: (1) importe o caixeta.csv; (2) crie a coluna de área basal =(CAP*0,1)^2/(4*PI())/10000; (3) monte uma tabela dinâmica com especie nas linhas e, nos valores, a contagem distinta de árvores, a soma da área basal e a contagem distinta de parcelas; (4) calcule DA, DR, FA, FR, DoA, DoR e VI em colunas ao lado. Compare com o R: os valores devem ser idênticos.
Se preferir, use a planilha pronta, com todas as fórmulas visíveis: dados → árvores → matriz espécie × parcela → parâmetros (escolha o caixetal numa célula) → cálculo passo a passo de uma espécie → estrutura diamétrica e estratos de altura. Baixar planilha Excel
4. Uma função para todas as espécies
fitossociologia <-function(d, A, UT) { n_i <-tapply(d$g, d$especie, length) u_i <-tapply(d$parc, d$especie, function(x) length(unique(x))) G_i <-tapply(d$g, d$especie, sum) FA <-100* u_i / UT f <-data.frame(especie =names(n_i), n =as.integer(n_i),DA = n_i / A, DR =100* n_i /sum(n_i),FA = FA, FR =100* FA /sum(FA),DoA = G_i / A, DoR =100* G_i /sum(G_i) ) f$VI <- f$DR + f$FR + f$DoR f$VC <- f$DR + f$DoR f <- f[order(f$VI, decreasing =TRUE), ]rownames(f) <-NULL f}geral <-fitossociologia(arv, A =0.3, UT =15)knitr::kable(head(geral, 10), digits =2,caption ="Parâmetros fitossociológicos das 10 espécies de maior VI (15 parcelas, 0,3 ha).")
Parâmetros fitossociológicos das 10 espécies de maior VI (15 parcelas, 0,3 ha).
Cada caixetal tem 5 parcelas (0,1 ha). Aplicamos a mesma função a cada local:
por_local <-lapply(split(arv, arv$local), fitossociologia, A =0.1, UT =5)resumo <-t(sapply(split(arv, arv$local), function(d) c(arvores_ha =nrow(d) /0.1,G_m2_ha =round(sum(d$g) /0.1, 1),riqueza =length(unique(d$especie)),VI_caixeta =round(subset(fitossociologia(d, 0.1, 5), especie =="Tabebuia cassinoides")$VI, 1))))knitr::kable(resumo, caption ="Resumo da estrutura por caixetal.")
Resumo da estrutura por caixetal.
arvores_ha
G_m2_ha
riqueza
VI_caixeta
chauas
2900
35.8
13
148.6
jureia
1780
40.1
22
124.1
retiro
2040
21.4
13
159.4
cores <-c("#78c2ad", "#f3969a", "#6cc3d5")par(mfrow =c(3, 1), mar =c(4, 14, 2, 1))for (l innames(por_local)) { f <-head(por_local[[l]], 5) comp <-t(as.matrix(f[, c("DR", "FR", "DoR")]))colnames(comp) <- f$especiebarplot(comp[, ncol(comp):1], horiz =TRUE, las =1, font.axis =3, col = cores,border =NA, xlim =c(0, 300), xlab ="VI", main = l, cex.names =0.9)}legend("bottomright", legend =c("DR", "FR", "DoR"), fill = cores, border =NA, bty ="n")
Valor de importância (VI) das cinco espécies principais em cada caixetal, decomposto em densidade, frequência e dominância relativas.
6. Estrutura diamétrica e vertical
Em florestas naturais, a distribuição de diâmetros costuma ter a forma de J invertido: muitas árvores finas e poucas grossas. Usamos classes de 5 cm de DAP equivalente e de 2 m de altura:
E a caixeta, que rebrota e forma touceiras, tem mais fustes por árvore que as outras espécies?
arv$grupo <-ifelse(arv$especie =="Tabebuia cassinoides", "caixeta", "outras")aggregate(fustes ~ grupo, data = arv, FUN =function(x) round(c(media =mean(x), max =max(x)), 2))
grupo fustes.media fustes.max
1 caixeta 1.70 11.00
2 outras 1.26 9.00
7. Exercícios
Para entregar (EE4)
Calcule à mão (ou no Excel) DA, DR, FA, FR, DoA, DoR e VI de Calophyllum brasiliensis nas 15 parcelas e confira com a tabela da seção 4.
Qual é a espécie de maior VI em cada caixetal? Qual parâmetro (densidade, frequência ou dominância) mais contribui para isso?
Por que a frequência relativa da caixeta é menor que a sua densidade e dominância relativas?
Compare densidade (árv./ha) e área basal (m²/ha) entre os locais. Qual caixetal tem árvores mais grossas, em média?
As distribuições diamétricas têm forma de J invertido? Por que a primeira classe (0 a 5 cm) tem tão poucas árvores? Pense no critério de inclusão do levantamento.
Qual seria o efeito de calcular a dominância com o DAP do maior fuste, em vez da soma de todos?
Para o relatório (formato de artigo)
Esta prática gera a Tabela 2 (parâmetros por caixetal, 5 espécies principais) e a Figura 2 (distribuições diamétricas).