1 Informações gerais para simulação

1.1 Objetivos

  • Simular dados para as variáveis diâmetro a 1,30m do solo (\(d\)) e altura (\(h\)) para a espécie 🌳Khaya Ivorensis🌳.
  • Calcular o volume das árvores usando a fórmula \(v_i = \dfrac{(\pi d^2)}{40000}(h)(0,7)\).

1.2 Características admitidas para simulação

As seguintes características serão admitidas para a população florestal:

  • A população florestal de 🌳Khaya Ivorensis🌳 possui 15 anos de idade, e foi implantada usando o espaçamento 5m x 5m e pleno sol. Sob este espaçamento são possíveis estabelecer até 400 árvores por hectare.
  • A população florestal é um retângulo de 500m x 200m, ou seja, com área total de 10 hectares. (Obviamente, na natureza ter-se-á polígonos irregulares!)
  • A população florestal será subdividida em áreas de 100m x 100m (1 hectare). Portanto, o número de parcelas possíveis na população será igual a 10 (N = 10). (Será útil na AAS!)
  • Não ocorreu mortalidade no plantio até os 15 anos de idade (Um sonho!😀). Portanto, a população de 🌳Khaya Ivorensis🌳 será composta de 4000 árvores.
  • O intervalo de variação dos diâmetros a 1,30m do solo na população é de 25cm (mínimo) a 27cm (máximo).
  • O intervalo de variação das alturas comerciais na população é de 9m (mínimo) a 10m (máximo).
População Hipotética de *Khaya Ivorensis*.

População Hipotética de Khaya Ivorensis.

2 Simulação de dados dendrométricos

Na simulação admitiu-se que:

  • Os dados das variáveis (\(d\) e \(h\)) seguem a distribuição Gaussiana (Normal).
  • A média aritmética e desvio padrão das variáveis variam por parcela.

Foram usadas as seguintes funções para obter dados aleatórios:

  • A função runif(): usada para gerar dados aleatórios da distribuição uniforme para os valores de média e desvio padrão para cada variável (\(d\) e \(h\)). Esta possui 3 parâmetros: n = número de observações; min = limite inferior da distribuição; e max = limite superior da distribuição. Esses valores serão usados na função rnorm().
  • A função rnorm(): usada para gerar dados aleatórios da distribuição normal para as variáveis \(d\) e \(h\). Esta possui 3 parâmetros: n = número de observações; mean = vetor de médias; e sd = vetor de desvio padrão.
## Carrega pacotes

library(purrr)
library(tidyr)
library(dplyr)
## Gera dados aleatórios da distribuição uniforme
## Para cada parcela será usada uma média e um desvio padrão diferente

set.seed(10)
df <- data.frame(
  mean_d = runif(n = 10, min = 25, max = 27),
  sd_d = runif(n = 10, min = 1, max = 2),
  mean_h = runif(n = 10, min = 9, max = 10),
  sd_h = runif(n = 10, min = .5, max = 1)
) %>% 
  mutate(across(everything(), round, 2))
Warning: There was 1 warning in `mutate()`.
ℹ In argument: `across(everything(), round, 2)`.
Caused by warning:
! The `...` argument of `across()` is deprecated as of dplyr 1.1.0.
Supply arguments directly to `.fns` through an anonymous function instead.

  # Previously
  across(a:b, mean, na.rm = TRUE)

  # Now
  across(a:b, \(x) mean(x, na.rm = TRUE))
  knitr::kable(df)
mean_d sd_d mean_h sd_h
26.01 1.65 9.86 0.77
25.61 1.57 9.62 0.55
25.85 1.11 9.78 0.58
26.39 1.60 9.36 0.95
25.17 1.36 9.41 0.71
25.45 1.43 9.71 0.87
25.55 1.05 9.84 0.91
25.54 1.26 9.24 0.98
26.23 1.40 9.77 0.84
25.86 1.84 9.36 0.75
## Simula dados com distribuição normal para a variável diâmetro (para cada parcela)

arv_parc <- 1:400  # número de observações/parcela (árvores/parcela)
n <- 10            # número de parcelas

set.seed(100)
simul_d <- map_dfr(arv_parc, ~ setNames(rnorm(n, mean = df$mean_d, sd = df$sd_d),
                                        stringr::str_c("P", 1:10))) %>%
  pivot_longer(everything(), names_to = "Parc", values_to = "d") %>%
  mutate(across(where(is_character), forcats::as_factor)) %>%
  mutate(across(where(is_double), round, 2)) %>%
  arrange(Parc, desc(d))
## Simula dados com distribuição normal para a variável altura (para cada parcela)

set.seed(100)
simul_h <- map_dfr(arv_parc, ~ setNames(rnorm(n, mean = df$mean_h, sd = df$sd_h),
                                        stringr::str_c("P", 1:10))) %>%
  pivot_longer(everything(), names_to = "Parc", values_to = "h") %>%
  mutate(across(where(is_character), forcats::as_factor)) %>%
  mutate(across(where(is_double), round, 1)) %>%
  arrange(Parc, desc(h))
## Combina dados simulados e calcula volume de madeira individual

data <- bind_cols(simul_d, simul_h[c("h")]) %>%
  mutate(v = ((pi*(d^2))/40000)*h*0.7) %>% 
  mutate(across(c(v), round, 4))

# writexl::write_xlsx(data, 'data/Khaya-simulado.xlsx')
## Visualiza as 2 primeiras linhas de cada parcela

data %>%
  group_by(Parc) %>%
  top_n(n = 2) %>% 
  knitr::kable()
Parc d h v
P1 30.77 12.1 0.6298
P1 30.40 11.9 0.6046
P2 30.80 11.4 0.5946
P2 30.20 11.2 0.5616
P3 29.46 11.7 0.5583
P3 29.12 11.5 0.5361
P4 31.04 12.1 0.6409
P4 30.74 11.9 0.6182
P4 30.74 11.9 0.6182
P5 28.88 11.3 0.5182
P5 28.66 11.2 0.5058
P6 29.98 12.5 0.6177
P6 29.87 12.4 0.6082
P7 28.67 12.5 0.5649
P7 28.29 12.2 0.5368
P8 29.09 12.0 0.5583
P8 28.76 11.7 0.5320
P9 30.08 12.1 0.6019
P9 29.84 11.9 0.5825
P10 30.55 11.3 0.5798
P10 30.53 11.3 0.5791
## Calcula média, desvio e total do volume por Parcela

data %>%
  group_by(Parc) %>%
  summarise(across(#.cols = where(is.numeric),
                   .cols = v,
                   .fns = list(media=mean, desv=sd, soma=sum),
                   na.rm = TRUE,
                   .names = "{.col}.{.fn}"
  )
  ) %>% 
  knitr::kable()
Parc v.media v.desv v.soma
P1 0.3706925 0.0761411 148.2770
P2 0.3539250 0.0656689 141.5700
P3 0.3631830 0.0503256 145.2732
P4 0.3629817 0.0851519 145.1927
P5 0.3292880 0.0610615 131.7152
P6 0.3512310 0.0755966 140.4924
P7 0.3576338 0.0611954 143.0535
P8 0.3352352 0.0666380 134.0941
P9 0.3769272 0.0708400 150.7709
P10 0.3461675 0.0751899 138.4670

Consideração Final

  • Foram simulados dados aleatórios (com distribuição normal) para uma população florestal de 🌳Khaya Ivorensis🌳 (10 hectares) com 4000 árvores (sem mortalidade!). Portanto, via simulação temos os dados populacionais!.
  • Supondo a realização de IF amostral, admitiu-se o uso de parcelas de 100m x 100m (1ha). Portanto, seria possível instalar 10 parcelas de 1ha na população florestal.
  • Na prática, porém, em inventários florestais, comumente os dados dendrométricos são medidos em parcelas amostrais sob algum processo de amostragem. Em seguida, a variável de interesse é extrapolada para a população (inferência).
  • Portanto, na sequência, vamos admitir esses dados para simular o uso da Amostragem Aleatória Simples - AAS em inventários florestais. Ou seja, admitir-se-á que apenas dados de algumas parcelas amostrais estarão disponíveis!