Vamos calcular o volume da seção de dados cubados pelo método de Smalian, conforme a fórmula: \[ V_{secao} = \frac{AS_{i} + AS_{i+1}}{2} . L \]
Vamos utilizar como exemplo os dado exfm7:
library(forestmangr)
data(exfm7)
<- exfm7
dados
dados#> # A tibble: 3,393 x 11
#> MAP PROJECT SPACING STRATA GENCODE TREE DBH TH hi di_wb bark_t
#> <chr> <fct> <fct> <int> <fct> <int> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 FOREST1 PEQUI 3x3 4 FM00100 1 12.4 22.1 0.1 13.1 6
#> 2 FOREST1 PEQUI 3x3 4 FM00100 1 12.4 22.1 0.5 12.6 6
#> 3 FOREST1 PEQUI 3x3 4 FM00100 1 12.4 22.1 1 12.4 5
#> 4 FOREST1 PEQUI 3x3 4 FM00100 1 12.4 22.1 1.5 12.3 5
#> 5 FOREST1 PEQUI 3x3 4 FM00100 1 12.4 22.1 2 11.8 4
#> 6 FOREST1 PEQUI 3x3 4 FM00100 1 12.4 22.1 4 11.3 4
#> # ... with 3,387 more rows
Primeiro, calculamos o volume com casca por seção, com a função smalianwb
. Inserimos nela o dataframe, o diametro com casca, a altura da seção, e a variável árvore:
<- smalianwb(dados,"di_wb", "hi","TREE")
dados_sma head(as.data.frame(dados_sma))
#> MAP PROJECT SPACING STRATA GENCODE TREE DBH TH hi di_wb bark_t
#> 1 FOREST1 PEQUI 3x3 4 FM00100 1 12.41409 22.1 0.1 13.05071 6
#> 2 FOREST1 PEQUI 3x3 4 FM00100 1 12.41409 22.1 0.5 12.57324 6
#> 3 FOREST1 PEQUI 3x3 4 FM00100 1 12.41409 22.1 1.0 12.41409 5
#> 4 FOREST1 PEQUI 3x3 4 FM00100 1 12.41409 22.1 1.5 12.25493 5
#> 5 FOREST1 PEQUI 3x3 4 FM00100 1 12.41409 22.1 2.0 11.77747 4
#> 6 FOREST1 PEQUI 3x3 4 FM00100 1 12.41409 22.1 4.0 11.30000 4
#> CSA_WB VWB
#> 1 0.01337697 0.005158610
#> 2 0.01241607 0.006129952
#> 3 0.01210373 0.005974776
#> 4 0.01179537 0.005672382
#> 5 0.01089416 0.020922907
#> 6 0.01002875 0.018694737
Agora, calculamos o volume sem casca por seção, utilizamos a função smalianwb
. Fornecemos as mesmas variáveis de antes, e a variável correspondente à espessura da casca. Como essa variável está em milímetros, utilizamos o argumento bt_mm_to_cm
como verdadeiro, para converte-la para centímetros:
<- smalianwob(dados_sma, "di_wb", "hi", "bark_t","TREE", bt_mm_to_cm = T)
dados_sma head(as.data.frame(dados_sma))
#> MAP PROJECT SPACING STRATA GENCODE TREE DBH TH hi di_wb bark_t
#> 1 FOREST1 PEQUI 3x3 4 FM00100 1 12.41409 22.1 0.1 13.05071 0.6
#> 2 FOREST1 PEQUI 3x3 4 FM00100 1 12.41409 22.1 0.5 12.57324 0.6
#> 3 FOREST1 PEQUI 3x3 4 FM00100 1 12.41409 22.1 1.0 12.41409 0.5
#> 4 FOREST1 PEQUI 3x3 4 FM00100 1 12.41409 22.1 1.5 12.25493 0.5
#> 5 FOREST1 PEQUI 3x3 4 FM00100 1 12.41409 22.1 2.0 11.77747 0.4
#> 6 FOREST1 PEQUI 3x3 4 FM00100 1 12.41409 22.1 4.0 11.30000 0.4
#> CSA_WB VWB di_wob CSA_WOB VWOB
#> 1 0.01337697 0.005158610 11.85071 0.011030070 0.004237849
#> 2 0.01241607 0.006129952 11.37324 0.010159172 0.005097861
#> 3 0.01210373 0.005974776 11.41409 0.010232273 0.005045296
#> 4 0.01179537 0.005672382 11.25493 0.009948911 0.004853333
#> 5 0.01089416 0.020922907 10.97747 0.009464421 0.018123438
#> 6 0.01002875 0.018694737 10.50000 0.008659016 0.016363277
Esse processo pode ser feito de forma direta, utilizando pipes (%>%
)
<- dados %>%
dados_sma smalianwb("di_wb", "hi", "TREE") %>%
smalianwob("di_wb", "hi", "bark_t", "TREE", bt_mm_to_cm = T)
head(as.data.frame(dados_sma))
#> MAP PROJECT SPACING STRATA GENCODE TREE DBH TH hi di_wb bark_t
#> 1 FOREST1 PEQUI 3x3 4 FM00100 1 12.41409 22.1 0.1 13.05071 0.6
#> 2 FOREST1 PEQUI 3x3 4 FM00100 1 12.41409 22.1 0.5 12.57324 0.6
#> 3 FOREST1 PEQUI 3x3 4 FM00100 1 12.41409 22.1 1.0 12.41409 0.5
#> 4 FOREST1 PEQUI 3x3 4 FM00100 1 12.41409 22.1 1.5 12.25493 0.5
#> 5 FOREST1 PEQUI 3x3 4 FM00100 1 12.41409 22.1 2.0 11.77747 0.4
#> 6 FOREST1 PEQUI 3x3 4 FM00100 1 12.41409 22.1 4.0 11.30000 0.4
#> CSA_WB VWB di_wob CSA_WOB VWOB
#> 1 0.01337697 0.005158610 11.85071 0.011030070 0.004237849
#> 2 0.01241607 0.006129952 11.37324 0.010159172 0.005097861
#> 3 0.01210373 0.005974776 11.41409 0.010232273 0.005045296
#> 4 0.01179537 0.005672382 11.25493 0.009948911 0.004853333
#> 5 0.01089416 0.020922907 10.97747 0.009464421 0.018123438
#> 6 0.01002875 0.018694737 10.50000 0.008659016 0.016363277
Podemos visualizar a curva média das árvores desta área, utilizando o modelo de Kozak, com a função average_tree_curve
:
avg_tree_curve(df=dados_sma,d="di_wb",dbh="DBH",h="hi",th="TH")
Para calcular o volume por árvore, utilizamos a função vol_summarise
. Informamos o dataframe e as variáveis dap, altura, volume com casca e sem casca, e árvore:
<- vol_summarise(dados_sma, dbh = "DBH", th = "TH",
dados_vol_arvore vwb="VWB",tree = "TREE",vwob="VWOB")
dados_vol_arvore#> # A tibble: 197 x 10
#> TREE DBH TH CSA VWB VWOB FFWB FFWOB FFWB_mean FFWOB_mean
#> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 1 12.4 22.1 0.0121 0.131 0.113 0.489 0.424 0.468 0.412
#> 2 2 13.1 22.3 0.0134 0.145 0.126 0.487 0.423 0.468 0.412
#> 3 3 13.2 20 0.0137 0.126 0.108 0.459 0.393 0.468 0.412
#> 4 4 13.2 19.4 0.0137 0.139 0.123 0.521 0.463 0.468 0.412
#> 5 5 13.4 23.7 0.0140 0.156 0.133 0.470 0.401 0.468 0.412
#> 6 6 13.5 21.5 0.0144 0.139 0.124 0.450 0.401 0.468 0.412
#> # ... with 191 more rows
Agora, para determinar o modelo volumétrico mais adequado para os dados, vamos ajustar dois modelos, e compará-los utilizando resid_plot
.
Modelo volumétrico de Schumacher: \[ Ln(V) = \beta_0 + \beta_1*Ln(dbh) + \beta_2*Ln(H) \]
Modelo volumétrico de Husch: \[ Ln(V) = \beta_0 + \beta_1*Ln(dbh) \]
Vamos utilizar o o output merge_est
da função lm_table
. Isso irá estimar o volume para os dados observados automaticamente. Em seguida, iremos utilizar a função resid_plot
, e comparar a variável observada com as estimadas:
%>%
dados_vol_arvore lm_table(log(VWB) ~ log(DBH) + log(TH),output="merge_est",est.name="Schumacher") %>%
lm_table(log(VWB) ~ log(DBH),output="merge_est",est.name="Husch") %>%
resid_plot("VWB", "Schumacher", "Husch")
O modelo de schumacher foi mais simétrico, portanto vamos utilizá-lo. Para salvar os coeficientes em um dataframe, ajustamos o modelo novamente, e utilizamos o output padrão:
<- lm_table(dados_vol_arvore, log(VWB) ~ log(DBH) + log(TH) )
tabcoef_vwb
tabcoef_vwb#> b0 b1 b2 Rsqr Rsqr_adj Std.Error
#> 1 -9.595863 1.889372 0.9071631 0.9966646 0.9966303 0.04855508
Fazemos o mesmo para o volume sem casca:
<- lm_table(dados_vol_arvore, log(VWOB) ~ log(DBH) + log(TH) )
tabcoef_vwob
tabcoef_vwob#> b0 b1 b2 Rsqr Rsqr_adj Std.Error
#> 1 -9.808975 1.918007 0.908154 0.9961152 0.9960752 0.05301495