Parâmetros fitossociológicos e estrutura

Fitossociologia
Ecologia
Densidade, frequência, dominância, IVI e IVC por caixetal, e distribuição de diâmetros e alturas, com os dados abertos caixeta.
Autor

LEDT/UFAM

Nível: iniciante/intermediário · Pacotes: apenas R básico · Disciplina: FGD320 - Fitossociologia · Baixar script · Baixar dados caixeta · Baixar planilha Excel

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)
  1. Calcular os parâmetros de uma espécie à mão (seção 3) e conferir no Excel;
  2. Generalizar o cálculo para todas as espécies com uma função (seção 4);
  3. Comparar os três caixetais (seção 5) e montar a estrutura diamétrica (seção 6);
  4. 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)
'data.frame':   1027 obs. of  7 variables:
 $ local  : chr  "chauas" "chauas" "chauas" "chauas" ...
 $ parcela: int  1 1 1 1 1 1 1 1 1 1 ...
 $ arvore : int  1 3 4 5 6 7 8 9 10 10 ...
 $ fuste  : int  1 1 1 1 1 1 1 1 1 2 ...
 $ cap    : int  210 170 720 200 750 320 480 240 290 310 ...
 $ h      : int  80 80 70 80 170 80 160 140 120 120 ...
 $ especie: chr  "Myrcia sulfiflora" "Myrcia sulfiflora" "Syagrus romanzoffianus" "Tabebuia cassinoides" ...

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  -> cm
fator_h   <- 0.1    # dm  -> m
cx$cap_cm <- cx$cap * fator_cap
cx$h_m    <- cx$h * fator_h
cx$dap    <- cx$cap_cm / pi                     # DAP (cm)
cx$g      <- pi * cx$dap^2 / 40000              # área basal do fuste (m²) = CAP²/(4π)/10000
summary(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_m
arv$fustes  <- aggregate(fuste ~ local + parc + arvore + especie, data = cx, FUN = length)$fuste
arv$dap_eq  <- sqrt(arv$g * 40000 / pi)        # DAP equivalente (cm) de uma árvore com vários fustes

c(fustes = nrow(cx), arvores = nrow(arv), parcelas = length(unique(arv$parc)))
  fustes  arvores parcelas 
    1027      672       15 
head(arv)
   local     parc arvore                especie           g h_m fustes
1 retiro retiro_1     44 Alchornea triplinervia 0.005379437   9      1
2 jureia jureia_2     57 Alchornea triplinervia 0.056149864  12      1
3 retiro retiro_2     67 Alchornea triplinervia 0.009215071   5      9
4 retiro retiro_3     81 Alchornea triplinervia 0.019106551  10      1
5 jureia jureia_4    108 Alchornea triplinervia 0.029610777  14      1
6 retiro retiro_3    129 Alchornea triplinervia 0.004209648   9      1
     dap_eq
1  8.276057
2 26.738030
3 10.831894
4 15.597184
5 19.416903
6  7.321127

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 ha
UT <- 15
m  <- 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).
especie n DA DR FA FR DoA DoR VI VC
Tabebuia cassinoides 410 1366.67 61.01 100.00 15.46 21.51 66.26 142.73 127.27
Myrcia sulfiflora 79 263.33 11.76 33.33 5.15 2.05 6.33 23.24 18.08
Calophyllum brasiliensis 11 36.67 1.64 46.67 7.22 2.94 9.06 17.91 10.69
Mela 1 47 156.67 6.99 33.33 5.15 0.76 2.35 14.50 9.34
jussara 37 123.33 5.51 20.00 3.09 0.91 2.79 11.39 8.30
Alchornea triplinervia 7 23.33 1.04 40.00 6.19 0.50 1.55 8.78 2.60
Psidium sp 10 33.33 1.49 33.33 5.15 0.46 1.40 8.05 2.89
Coussapoa micropoda 7 23.33 1.04 26.67 4.12 0.30 0.93 6.09 1.97
Ilex durosa 6 20.00 0.89 13.33 2.06 0.38 1.18 4.13 2.07
Andira fraxinifolia 4 13.33 0.60 20.00 3.09 0.07 0.23 3.91 0.82

Totais da comunidade:

c(arvores_ha = nrow(arv) / 0.3, area_basal_m2_ha = sum(arv$g) / 0.3,
  riqueza = length(unique(arv$especie)))
      arvores_ha area_basal_m2_ha          riqueza 
       2240.0000          32.4578          42.0000 

5. Comparando os três caixetais

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 in names(por_local)) {
  f <- head(por_local[[l]], 5)
  comp <- t(as.matrix(f[, c("DR", "FR", "DoR")]))
  colnames(comp) <- f$especie
  barplot(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.

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:

classes_d <- seq(0, ceiling(max(arv$dap_eq) / 5) * 5, by = 5)
classes_h <- seq(0, ceiling(max(arv$h_m) / 2) * 2, by = 2)

par(mfrow = c(2, 3), mar = c(4, 4, 2, 1))
for (l in sort(unique(arv$local)))
  hist(arv$dap_eq[arv$local == l], breaks = classes_d, col = "#78c2ad", border = "white",
       main = l, xlab = "DAP equivalente (cm)", ylab = "Árvores")
for (l in sort(unique(arv$local)))
  hist(arv$h_m[arv$local == l], breaks = classes_h, col = "#6cc3d5", border = "white",
       main = l, xlab = "Altura (m)", ylab = "Árvores")

Distribuição das árvores em classes de DAP equivalente (5 cm) e de altura (2 m) em cada caixetal.

Distribuição das árvores em classes de DAP equivalente (5 cm) e de altura (2 m) em cada caixetal.
tab_d <- table(arv$local, cut(arv$dap_eq, classes_d))
tab_d[, colSums(tab_d) > 0]
        
         (0,5] (5,10] (10,15] (15,20] (20,25] (25,30] (30,35] (35,40] (40,45]
  chauas     5    127     106      33      12       4       1       2       0
  jureia     0     59      51      36      14       9       4       3       1
  retiro    11    109      52      19       9       3       1       0       0
        
         (65,70]
  chauas       0
  jureia       1
  retiro       0

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)
  1. 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.
  2. Qual é a espécie de maior VI em cada caixetal? Qual parâmetro (densidade, frequência ou dominância) mais contribui para isso?
  3. Por que a frequência relativa da caixeta é menor que a sua densidade e dominância relativas?
  4. Compare densidade (árv./ha) e área basal (m²/ha) entre os locais. Qual caixetal tem árvores mais grossas, em média?
  5. 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.
  6. 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).

Exporte os resultados

dir.create("resultados", showWarnings = FALSE)
write.csv2(geral, "resultados/fitossociologia_geral.csv", row.names = FALSE)
for (l in names(por_local))
  write.csv2(por_local[[l]], paste0("resultados/fitossociologia_", l, ".csv"), row.names = FALSE)

Referências

  • FELFILI, J. M. et al. Fitossociologia no Brasil: métodos e estudos de caso. Viçosa: Editora UFV, 2011.
  • MUELLER-DOMBOIS, D.; ELLENBERG, H. Aims and Methods of Vegetation Ecology. New York: Wiley, 1974.
  • SOUZA, A. L.; SOARES, C. P. B. Florestas nativas: estrutura, dinâmica e manejo. Viçosa: Editora UFV, 2013.
  • VANIN, A. 1999. Dissertação de mestrado (dados caixeta). Dados disponíveis em: https://ecor.ib.usp.br/doku.php?id=dados:dados-caixeta.