---
title: "Volume estimation and volumetric models"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Volume estimation and volumetric models}
  %\VignetteEngine{knitr::rmarkdown}
  \usepackage[utf8]{inputenc}
---
  
```{r, echo = FALSE, message = FALSE}
knitr::opts_chunk$set(collapse = T, comment = "#>")
knitr::opts_chunk$set(fig.width=7, fig.height=5)
options(tibble.print_min = 6L, tibble.print_max = 6L)
library(forestmangr)
```

Let's calculate the section volume of felled trees using Smalian's method, according to the formula:
$$ V_{secao} = \frac{AS_{i} + AS_{i+1}}{2} . L $$

We'll use the exfm7 dataframe as an exemple:
```{r}
library(forestmangr)
data(exfm7)
data_ex <- exfm7
data_ex
```

First we'll calculate the volume with bark of each section with the `smalianwb` function. In it we input the dataframe, and names for the section diameter with bark, section height and tree variables:
```{r}
data_ex_sma <- smalianwb(data_ex,"di_wb", "hi","TREE")
head(as.data.frame(data_ex_sma))
```

Now, we'll calculate the volume without bark per secction, using the `smalianwb` function. We'll input the same variables as before, and the variable name for the bark thickness. In our data, this variable is in millimeters, so, we'll use the `bt_mm_to_cm` as `TRUE` to convert it to centimeters:
```{r}
data_ex_sma <- smalianwob(data_ex_sma,"di_wb","hi","bark_t","TREE",bt_mm_to_cm=T)
head(as.data.frame(data_ex_sma))
```

This can be done directly using pipes (`%>%`):
```{r}
data_ex_sma <- data_ex %>% 
  smalianwb("di_wb", "hi", "TREE") %>% 
  smalianwob("di_wb", "hi", "bark_t", "TREE", bt_mm_to_cm=T)
head(as.data.frame(data_ex_sma))
```

We can also visualize the mean curve form of the trees in the area, using Kozak's model with the `average_tree_curve` function:
```{r, warning=FALSE, message=FALSE}
avg_tree_curve(df=data_ex_sma,d="di_wb",dbh="DBH",h="hi",th="TH")
```

To calculate the volume of each tree, we'll use the `vol_summarise` function. We input the data, and dbhm height, volume with bark, volume without bark and tree variables:
```{r}
data_ex_vol_arvore <- vol_summarise(data_ex_sma, dbh = "DBH", th = "TH", 
                                  vwb="VWB",tree = "TREE",vwob="VWOB")
data_ex_vol_arvore
```

Now to determine the most adequate volumetric model for this data, we'll fit two models, and compare them using plots for their residuals with the `resid_plot` function.

Schumacher's volumetric model:
$$ Ln(V) = \beta_0 + \beta_1*Ln(dbh) + \beta_2*Ln(H) $$ 

Husch's volumetric model:
$$ Ln(V) = \beta_0 + \beta_1*Ln(dbh) $$ 


We'll use the output "merge_est" from the `lm_table` function. This will estimate the volume for the observed data automatically. Then, we'll use `resid_plot` to compare the observed variable with the estimated ones:
```{r, warning=FALSE, message=FALSE}
data_ex_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")
```

Schumacher's model was more symmetrical, and can be considered the better model for this dataset. To safe it's coefficients in a dataframe, we'll fit the model again, but with the standard output:
```{r}
tabcoef_vwb <- lm_table(data_ex_vol_arvore, log(VWB) ~  log(DBH) + log(TH) )
tabcoef_vwb
```

And do the same for the volume without bark:
```{r}
tabcoef_vwob <- lm_table(data_ex_vol_arvore, log(VWOB) ~  log(DBH) + log(TH) )
tabcoef_vwob
```