Pular para conteúdo

Volumetria


Warning

Esta biblioteca está em desenvolvimento, nenhuma das soluções apresentadas está disponível para download.

Processe dados de inventário florestal e ajuste equações volumétricas e funções de afilamento para uso posterior.


Parâmetros da Classe

Volumetrics(df, tree_identifier, tree_height, tree_dbh, tree_bark,
          segment_height, segment_diameter, tree_bark)
Parâmetros Descrição
df O dataframe contendo os dados de cubagem.
tree_identifier Nome da coluna que contém os identificadores únicos das árvores.
tree_height Nome da coluna que contém as alturas totais das árvores (metros).
tree_dbh Nome da coluna contendo os valores do diâmetro à altura do peito (DAP) das árvores (centímetros).
tree_bark (Opcional) Nome da coluna contendo os valores da espessura da casca das árvores (centímetros). Se tree_bark == None, retorna apenas volumes com casca no método get_volumes().
segment_height (Opcional) Nome da coluna contendo as alturas dos segmentos cubados das árvores (metros). Obrigatório para o método fit_taper_functions().
segment_diameter (Opcional) Nome da coluna contendo os diâmetros dos segmentos cubados das árvores (centímetros). Obrigatório para o método fit_taper_functions().
tree_bark (Opcional) Nome da coluna contendo a casca das árvores (centímetros).

Métodos da Classe

funções e parâmetros
  Volumetrics.get_volumes()  
  Volumetrics.fit_taper_functions(models, iterator, save_dir = None)#(1)!

  Volumetrics.fit_volumetric_functions(models, iterator, vol_column,
                                       save_dir = None)#(2)!

  Volumetrics.get_individual_diameter(hi, tree_height, tree_dbh)#(3)!

  Volumetrics.get_individual_taper_volume(tree_height, tree_dbh, stump=0.1)#(4)!

  Volumetrics.get_individual_volume(tree_height, tree_dbh)#(5)!

  1. models = (Opcional) Lista de modelos a serem ajustados! Se models == None, utiliza todos os modelos disponíveis.
    Modelos disponíveis: ['schoepfer', 'bi', 'kozak','johnson', 'matte', 'ann']
    iterator = (Opcional) Nome de uma coluna a ser usada como iterador. Pode ser o nome da fazenda, nome da parcela, código ou qualquer identificador único.
    save_dir = (Opcional) Diretório para salvar os parâmetros da função ajustada e o modelo ANN.

  2. models = (Opcional) Lista de modelos a serem ajustados! Se models == None, utiliza todos os modelos disponíveis.
    iterator = (Opcional) Nome de uma coluna a ser usada como iterador. Pode ser o nome da fazenda, nome da parcela, código ou qualquer identificador único.
    vol_column = (Opcional) Nome da coluna com os valores de volume. Se vol_column == None, utiliza os volumes obtidos pelo método get_volumes() para ajustar as funções volumétricas.
    save_dir = (Opcional) Diretório para salvar os parâmetros da função ajustada e o modelo ANN.

  3. hi = Fração da altura da árvore para a qual se deseja obter o diâmetro (metros).
    tree_height = Altura total da árvore (metros).
    tree_dbh = Diâmetro à altura do peito (DAP) da árvore (centímetros).

  4. tree_height = Altura total da árvore (metros).
    tree_dbh = Diâmetro à altura do peito (DAP) da árvore (centímetros).
    stump = Altura do toco (metros). Por padrão, usa stump = 0.1.

  5. tree_height = Altura total da árvore (metros).
    tree_dbh = Diâmetro à altura do peito (DAP) da árvore (centímetros).

Métodos Descrição
.get_volumes() Retorna o volume de cada segmento cubado e o volume total de cada árvore, separado por tree_identifier. Se tree_bark == None, retorna apenas o volume com casca; caso contrário, retorna o volume com e sem casca.
.fit_taper_functions() Ajusta os modelos disponíveis de funções de afilamento. Salva um arquivo .json com os coeficientes para cada modelo ajustado e um arquivo .pkl para os modelos de ANN ajustados.
.get_individual_diameter() Retorna um dataframe pandas com o diâmetro em uma altura hi da árvore para cada modelo de afilamento ajustado.
.get_individual_taper_volume() Retorna um DataFrame pandas com o volume estimado para a altura e diâmetro à altura do peito fornecidos para cada função de afilamento ajustada. Utiliza a integração das funções de afilamento para obter o resultado.
.get_individual_volume() Retorna um DataFrame pandas com o volume estimado para a altura e diâmetro à altura do peito fornecidos para cada função volumétrica ajustada.

Exemplo de Uso

Considere uma base de dados de cubagem composta por 50 árvores do gênero Eucalyptus, nas quais os diâmetros foram mensurados nas alturas de 0,1 metro, 0,6 metro, 1,30 metro e, a partir desse ponto, em intervalos de 2 metros ao longo do fuste.

Fazer download do arquivo.

Primeiras 5 linhas do arquivo:

Fazenda arvore_n dap (cm) altura_total (m) seção (m) diametro_c_casca (cm) diametro_s_casca (cm) casca (cm)
Fazenda 1 1 24,8 28,0 0,1 30,05 26,51 1,74
Fazenda 1 1 24,8 28,0 0,6 26,55 23,15 1,96
Fazenda 1 1 24,8 28,0 1,3 24,75 21,93 1,94
Fazenda 1 1 24,8 28,0 2,0 23,85 21,48 1,90
Fazenda 1 1 24,8 28,0 4,0 21,40 19,30 1,11

taper_functions_example.py
1
2
3
from fptools.Volumetrics import Volumetrics#(1)!

import pandas as pd#(2)!

  1. Importa a classe Volumetrics.
  2. Importa o pandas para manipulação de dados.

taper_functions_example.py
dados = pd.read_excel(r'C:\seu\diretório\exemplo_volumetrics.xlsx')#(1)!

vol = Volumetrics(df=dados, tree_identifier='arvore_n',
                  tree_height='altura_total (m)',
                  tree_dbh ='dap (cm)',
                  segment_height='seção (m)',
                  segment_diameter= 'diametro_c_casca (cm)',
                  tree_bark='casca (cm)')#(2)!

calculated_volumes_df = vol.get_volumes(iterator="Fazenda")#(3)!
calculated_volumes_df.to_excel("exemplo_volumetrics_with_vol.xlsx",
                               index=False)#(4)!

metrics_taper = vol.fit_taper_functions(save_dir="seu/diretório/para/salvar",iterator="Fazenda")#(5)!

individual_diameter = vol.get_individual_diameter(10, 31, 30)#(6)!

taper_volume = vol.get_individual_taper_volume(35, 32, stump=0.15)#(7)!

metrics_vol = vol.fit_volumetric_functions(save_dir=output_path, iterator="Fazenda")#(8)!

individual_volume = vol.get_individual_volume(tree_height=21.8, tree_dbh=19)#(9)!

  1. Carrega seu arquivo .xlsx.
  2. Cria a variável vol contendo a classe Volumetrics.
  3. Calcula os volumes para cada árvore e segmento, separando por iterator e salva os resultados na variável calculated_volumes_df.
    Será retornado o DataFrame incial com as seguintes colunas adicionais: segment_vol_with_bark,segment_vol_without_bark,tree_vol_with_bark,tree_vol_without_bark,bark_factor e mean_bark_factor.
  4. Salva o DataFrame com os volumes calculados em exemplo_volumetrics_with_vol.xlsx.
  5. Ajusta as funções de afilamento e rede neural artificial para cada iterator e salva as métricas de desempenho na variável metrics_taper. Isso criará um arquivo .json com os coeficientes dos modelos e arquivos .pkl para os modelos ajustados de RNA e salvará os arquivos gerados em save_dir.
  6. Obtém o diâmetro a 10 metros de uma árvore com altura total de 31 metros e diâmetro à altura do peito (DAP) de 30 centímetros usando os ajustes realizados e salva na variável individual_diameter.
  7. Obtém os volumes calculados pela integração das funções de afilamento para uma árvore com altura de 35 metros, diâmetro à altura do peito de 32 centímetros, considerando uma altura de toco de 0,15 metros e salve na variável taper_volume.
  8. Ajusta todas funções volumétricas para cada iterator e salva em save_dir, salvando as métricas na variável metrics_vol. Como nenhuma coluna de volumes vol_column foi fornecida, usará o volume obtido pelo método get_volumes para ajuste dos volumes.
  9. Calcula o volume de uma árvore de 21,8 metros de altura e 19 centímetros de dap usando todas as funções volumétricas e salva na variável individual_volume.

Saídas

Tabelas

calculated_volumes_df(1)

  1. DataFrame incial com as seguintes colunas adicionais: segment_vol_with_bark,segment_vol_without_bark,tree_vol_with_bark,tree_vol_without_bark,bark_factor e mean_bark_factor.
Fazenda arvore_n dap (cm) altura_total (m) seção (m) diametro_c_casca (cm) diametro_s_casca (cm) casca (cm) segment_vol_with_bark segment_vol_without_bark tree_vol_with_bark tree_vol_without_bark bark_factor mean_bark_factor
Fazenda 1 1 24,84076433 28 0,1 30,05 26,51 1,74 0,007092165 0,005544635 0,559879936 0,387477996 0,692073373 0,682430303
Fazenda 1 1 24,84076433 28 0,6 26,55 23,15 1,96 0,031450877 0,023341421 0,559879936 0,387477996 0,692073373 0,682430303
Fazenda 1 1 24,84076433 28 1,3 24,75 21,93 1,94 0,036171179 0,026055822 0,559879936 0,387477996 0,692073373 0,682430303
Fazenda 1 1 24,84076433 28 2,0 23,85 21,48 1,90 0,032463883 0,02310445 0,559879936 0,387477996 0,692073373 0,682430303
Fazenda 1 1 24,84076433 28 4,0 21,40 19,30 1,11 0,080407591 0,065402308 0,559879936 0,387477996 0,692073373 0,682430303
Fazenda 1 1 24,84076433 28 6,0 20,50 19,17 1,81 0,068942643 0,047175553 0,559879936 0,387477996 0,692073373 0,682430303

Sobre as colunas geradas

  • segment_vol_with_bark: Volume do segmento do fuste com casca, calculado entre duas seções consecutivas de medição.
  • segment_vol_without_bark: Volume do segmento do fuste sem casca, calculado entre duas seções consecutivas de medição.
  • tree_vol_with_bark: Volume total da árvore com casca, obtido pela soma dos volumes de todos os segmentos com casca.
  • tree_vol_without_bark: Volume total da árvore sem casca, obtido pela soma dos volumes de todos os segmentos sem casca.
  • bark_factor: Fator de casca do segmento, calculado como a razão entre o volume com casca e o volume sem casca para aquele segmento.
  • mean_bark_factor: Fator de casca médio da árvore, calculado como a média dos fatores de casca de todos os segmentos.

metrics_taper(1)

  1. DataFrame com as métricas de avaliação geradas para cada iterator e modelo de afilamento e rede neural artificial, incluindo a pontuação atribuída a cada modelo com base em seu desempenho.
iterator model MAE MAPE MSE RMSE R squared Explained Var Mean Error score
Fazenda 1 kozak 0,580666 5,718699 0,572843 0,756864 0,994621 0,994621 -0,000167 10
Fazenda 1 bi 0,635942 5,972947 0,643045 0,801901 0,993962 0,994016 -0,075560 9
Fazenda 1 ann 0,576319 5,651187 0,560707 0,748804 0,994735 0,994739 0,020658 8
Fazenda 1 schoepfer 0,769151 7,532993 1,033545 1,016634 0,990295 0,990356 -0,080168 7
Fazenda 1 johnson 1,078775 10,108434 1,978243 1,406500 0,981425 0,981571 -0,124507 6
Fazenda 1 matte 1,424262 14,718423 3,337336 1,826838 0,968664 0,969344 0,269282 5
Fazenda 2 ann 1,342497 7,238220 3,318417 1,821652 0,988023 0,988023 0,001891 10
Fazenda 2 kozak 1,350729 7,357823 3,468079 1,862278 0,987483 0,987483 -0,002186 9
Fazenda 2 bi 1,374535 7,880664 3,483492 1,866412 0,987427 0,987435 -0,045863 8
Fazenda 2 schoepfer 1,678529 8,785657 4,895865 2,212660 0,982329 0,982373 0,110280 7
Fazenda 2 matte 2,180025 13,928099 7,414827 2,723018 0,973238 0,974475 0,585444 6
Fazenda 2 johnson 2,216439 12,099970 9,165003 3,027376 0,966921 0,966956 0,097858 5

individual_diameter(1)

  1. DataFrame com os diâmetros individuais estimados pelas funções de afilamento e rede neural artificial para cada iterator e modelo de afilamento para uma árvore de 31 metros de altura, 30 centímetros de DAP, em uma altura de 10 metros.
iterator model Predicted_diameter (cm)
Fazenda 1 schoepfer 22,75296935
Fazenda 1 bi 22,35954058
Fazenda 1 kozak 22,45146956
Fazenda 1 johnson 23,41945889
Fazenda 1 matte 22,83651908
Fazenda 1 ann 23,33443805
Fazenda 2 schoepfer 21,48912862
Fazenda 2 bi 23,08526645
Fazenda 2 kozak 22,40805692
Fazenda 2 johnson 22,46401882
Fazenda 2 matte 21,43830806
Fazenda 2 ann 23,71472482

taper_volume(1)

  1. DataFrame com os volumes estimados pela integração das funções de afilamento e rede neural artificial para cada iterator e modelo de afilamento para uma árvore de 35 metros de altura, 32 centímetros de DAP.
iterator model Predicted_volume (m³)
Fazenda 1 schoepfer 1,166056704
Fazenda 1 bi 1,143061281
Fazenda 1 kozak 1,165284829
Fazenda 1 johnson 1,201758409
Fazenda 1 matte 1,150231088
Fazenda 1 ann 1,326654958
Fazenda 2 schoepfer 1,055148596
Fazenda 2 bi 1,179288353
Fazenda 2 kozak 1,147756782
Fazenda 2 johnson 1,108690858
Fazenda 2 matte 1,066598472
Fazenda 2 ann 1,178903371

metrics_vol(1)

  1. DataFrame com as métricas de avaliação geradas para cada iterator, modelo volumétrico e rede neural artificial, incluindo a pontuação atribuída a cada modelo com base em seu desempenho.
iterator model MAE MAPE MSE RMSE R squared Explained Var Mean Error score
Fazenda 1 honner 0,028987 6,510184 0,001409 0,037535 0,998022 0,998143 -0,009291 10
Fazenda 1 ann 0,020789 5,362507 0,000713 0,026703 0,998999 0,998999 -0,000569 9
Fazenda 1 takata 0,027501 5,250705 0,001291 0,035934 0,998187 0,998214 -0,004318 8
Fazenda 1 spurr_log 0,026612 4,438766 0,001235 0,035137 0,998267 0,998277 -0,002731 7
Fazenda 1 schumacher_hall 0,027584 4,649301 0,001203 0,034683 0,998311 0,998321 -0,002636 6
Fazenda 1 meyer 0,025136 6,229777 0,001112 0,033346 0,998439 0,998439 0,000000 5
Fazenda 1 stoate 0,026301 6,530368 0,001158 0,034029 0,998374 0,998374 0,000000 4
Fazenda 1 spurr 0,026008 9,348743 0,001177 0,034306 0,998348 0,998348 0,000000 3
Fazenda 1 naslund 0,024859 11,898225 0,001020 0,031930 0,998569 0,998571 0,001263 2
Fazenda 1 ogaya 0,410646 151,1923 0,213968 0,462567 0,699650 0,719168 -0,117918 1
Fazenda 2 naslund 0,153069 6,603060 0,048230 0,219612 0,974528 0,974529 -0,001349 10
Fazenda 2 schumacher_hall 0,160824 9,781453 0,048410 0,220023 0,974433 0,974447 -0,005183 9
Fazenda 2 spurr_log 0,160540 9,932109 0,048446 0,220105 0,974414 0,974428 -0,005270 8
Fazenda 2 takata 0,159037 6,922203 0,049057 0,221488 0,974091 0,974091 -0,000386 7
Fazenda 2 ann 0,150892 5,508166 0,043498 0,208562 0,977027 0,977053 0,007015 6
Fazenda 2 meyer 0,155147 8,411204 0,047824 0,218687 0,974742 0,974742 0,000000 5
Fazenda 2 stoate 0,161432 14,918844 0,048986 0,221328 0,974129 0,974129 0,000000 4
Fazenda 2 spurr 0,181962 28,583026 0,055897 0,236425 0,970479 0,970479 0,000000 3
Fazenda 2 honner 0,189541 6,829942 0,062964 0,250927 0,966746 0,967397 0,035110 2
Fazenda 2 ogaya 0,430466 40,223791 0,284181 0,533086 0,849913 0,850523 0,034001 1

individual_volume(1)

  1. DataFrame com os volumes estimados pelas funções volumétricas e rede neural artificial para cada iterator para uma árvore de 21,8 metros de altura, 19 centímetros de DAP.
iterator model Predicted_volume (m³)
Fazenda 1 spurr 0,241827831
Fazenda 1 schumacher_hall 0,248607044
Fazenda 1 honner 0,262977386
Fazenda 1 ogaya 0,860375777
Fazenda 1 naslund 0,245824632
Fazenda 1 takata 0,255820523
Fazenda 1 spurr_log 0,251481659
Fazenda 1 meyer 0,228396501
Fazenda 1 stoate 0,241410100
Fazenda 1 ann 0,271805848
Fazenda 2 spurr 0,421606899
Fazenda 2 schumacher_hall 0,332105882
Fazenda 2 honner 0,232727813
Fazenda 2 ogaya 0,939382897
Fazenda 2 naslund 0,324612548
Fazenda 2 takata 0,287273333
Fazenda 2 spurr_log 0,336234242
Fazenda 2 meyer 0,200621992
Fazenda 2 stoate 0,242861095
Fazenda 2 ann 0,284503571
Arquivos .json

Para cada função de afilamento e função volumétrica, são gerados arquivos .json contendo os coeficientes estimados de cada modelo. Um arquivo .json individual é criado para cada iterator, nomeado de acordo com o respectivo identificador.

Arquivos .pkl

Da mesma forma, para cada rede neural artificial ajustada para afilamento ou predição de volume, é gerado um arquivo .pkl contendo o modelo treinado, nomeado de acordo com o respectivo iterator.

  • taper_model_ann_Fazenda 1.pkl
  • taper_model_ann_Fazenda 2.pkl
  • volumetric_ann_Fazenda 1.pkl
  • volumetric_ann_Fazenda 2.pkl

Embora não seja possível visualizar diretamente esse tipo de arquivo, ele armazena os parâmetros da rede neural e suas configurações internas, que serão utilizados posteriormente na geração dos sortimentos.

Funções de afilamento disponíveis

  • schoepfer
  • \[ \operatorname{d_i} =dbh\left( b_0 + b_1 \left( \frac{h_i}{H} \right) + b_2 \left( \frac{h_i}{H} \right)^2 + b_3 \left( \frac{h_i}{H} \right)^3 + b_4 \left( \frac{h_i}{H} \right)^4 + b_5 \left( \frac{h_i}{H} \right)^5 \right) \]

  • bi
  • \[ \operatorname{d_i}=dbh\left[ \left( \frac{log\;sin \left( \frac{\pi}{2} \frac{h_i}{H} \right)} {log\;sin \left( \frac{\pi}{2} \frac{1.3}{H} \right)} \right) ^{\beta_0+\beta_1sin\left(\frac{\pi}{2}\frac{h_i}{H}\right)+\beta_2sin\left(\frac{3\pi}{2}\frac{h_i}{H}\right)+\beta_3sin\left(\frac{\pi}{2}\frac{h_i}{H}\right)/\frac{h_i}{H}+\beta_4dbh+\beta_5\frac{h_i}{H}\sqrt{dbh}+\beta_6\frac{h_i}{H}\sqrt{H}} \right] \]

  • kozak
  • \[ \operatorname{d_i} =b_0 \cdot (dbh^{b_1}) \cdot (h^{b_2}) \cdot \left(\frac{1 - \left(\frac{h_i}{h}\right)^{1/4}}{1 - \left(p^{1/3}\right)}\right)^{b_3 \cdot \left(\frac{h_i}{h}\right)^4 + b_4 \cdot \left(\frac{1}{e^{dbh/h}}\right) + b_5 \cdot \left(\frac{1 - \left(\frac{h_i}{h}\right)^{1/4}}{1 - \left(p^{1/3}\right)}\right)^{0.1} + b_6 \cdot \left(\frac{1}{dbh}\right) + b_7 \cdot \left(h^{1 - \left(\frac{h_i}{h}\right)^{1/3}}\right) + b_8 \cdot \left(\frac{1 - \left(\frac{h_i}{h}\right)^{1/4}}{1 - \left(p^{1/3}\right)}\right)} \]

  • johnson
  • \[ \operatorname{d_i} = dbh \cdot \left( b_0 \cdot \log\left( \frac{b_1 + \frac{(H - h_i)}{(H - 1.3)}}{b_2} \right) \right) \]

  • matte
  • \[ \operatorname{d_i} = dbh \cdot \left( b_0 \cdot \left( \frac{H - h_i}{H - 1.30} \right)^2 + b_1 \cdot \left( \frac{H - h_i}{H - 1.30} \right)^3 + b_2 \cdot \left( \frac{H - h_i}{H - 1.30} \right)^4 \right) \]

  • ann
  • Notação

    • \( β_n \): Parâmetros ajustados
    • \( p \): Parâmetro geométrico/auxiliar (inicialmente 0.1)
    • \( d_i \): Diâmetro (cm)
    • \( \text{dap} \): Diâmetro à altura do peito (cm)
    • \( H \): Altura total (m)
    • \( h_i \): Altura do segmento (m)

    Rede Neural Artificial

    Ao selecionar o modelo 'RNA', 6 diferentes estruturas de redes neurais artificiais serão testadas. Apenas o resultado de 1 modelo será retornado. O modelo retornado será selecionado pela função de classificação.
    Para o modelo 'RNA', utiliza-se o módulo sklearn.neural_network.MLPRegressor.

    --- title: Parâmetros RNA --- classDiagram direction LR class MLPRegressor { Épocas: 3000 Função de ativação: logistic Solver: lbfgs Tamanho do lote: dinâmico Taxa de aprendizado inicial: 0.1 Modo da taxa de aprendizado: adaptive } class Modelo-0 { Camadas ocultas: (15, 25, 20, 30, 10) } class Modelo-1 { Camadas ocultas: (35, 10, 25, 35, 15) } class Modelo-2 { Camadas ocultas: (25, 15, 30, 20) } class Modelo-3 { Camadas ocultas: (15, 35, 45) } class Modelo-4 { Camadas ocultas: (35, 10, 25, 35, 15) } class Modelo-5 { Camadas ocultas: (35, 10, 25, 35, 15, 20, 15, 30) } MLPRegressor <|-- Modelo-0 MLPRegressor <|-- Modelo-1 MLPRegressor <|-- Modelo-2 MLPRegressor <|-- Modelo-3 MLPRegressor <|-- Modelo-4 MLPRegressor <|-- Modelo-5

    Modelos volumétricos disponíveis

  • spurr
  • \[ \operatorname{V} = b_0 + b_1 \cdot (\text{dap}^2) \cdot H \]

  • schumacher_hall
  • \[ \operatorname{V} = b_0 \cdot (\text{dap}^{b_1}) \cdot (H^{b_2}) \]

  • honner
  • \[ \operatorname{V} = \frac{\text{dap}^2}{b_1 \cdot \left(\frac{1}{H}\right)} \]

  • ogaya
  • \[ \operatorname{V} = \frac{\text{dap}^2}{b_1 \cdot H} \]

  • stoate
  • \[ \operatorname{V} = b_0 + b_1 \cdot \text{dap}^2 + b_2 \cdot \text{dap}^2 \cdot H + b_3 \cdot H \]

  • naslund
  • \[ \operatorname{V} = b_1 \cdot \text{dap}^2 + b_2 \cdot \text{dap}^2 \cdot H + b_3 \cdot \text{dap} \cdot H^2 + b_4 \cdot H^2 \]

  • takata
  • \[ \operatorname{V} = \frac{\text{dap}^2 \cdot H}{b_0 + b_1 \cdot \text{dap}} \]

  • spurr_log
  • \[ \operatorname{V} = \exp(b_0 + b_1 \cdot \log(\text{dap}^2 \cdot H)) \]

  • meyer
  • \[ \operatorname{V} = b_0 + b_1 \cdot \text{dap}^2 + b_2 \cdot \text{dap} + b_3 \cdot \text{dap} \cdot H + b_4 \cdot \text{dap}^2 \cdot H \]

  • RNA
  • Utilize os mesmos modelos de RNA usados para a função de afilamento.

    Notação

    • \( b_n \): Parâmetros ajustados
    • \( V \): Volume estimado (m³)
    • \( \text{dap} \): Diâmetro à altura do peito (cm)
    • \( H \): Altura total (m)

    Função de Classificação

    Para selecionar os modelos com melhor desempenho e classificá-los adequadamente, são obtidas as seguintes métricas:

    Nome da métrica Estrutura
    Erro Médio Absoluto (MAE) \( MAE = \frac{1}{n} \sum_{i=1}^{n} \|y_i - \hat{y}_i\| \)
    Erro Médio Percentual Absoluto (MAPE) \( MAPE = \frac{100}{n} \sum_{i=1}^{n} \left\|\frac{y_i - \hat{y}_i}{y_i}\right\| \)
    Erro Médio Quadrático (MSE) \( MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 \)
    Raiz do Erro Médio Quadrático (RMSE) \( RMSE = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2} \)
    R Quadrado (Coeficiente de Determinação) \( R^2 = 1 - \frac{\sum_{i=1}^{n} (y_i - \hat{y}_i)^2}{\sum_{i=1}^{n} (y_i - \bar{y})^2} \)
    Variância Explicada (EV) \( EV = 1 - \frac{Var(y - \hat{y})}{Var(y)} \)
    Erro Médio \( Erro\ Médio = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i) \)
    Notação
    • \( y_i \): Valor observado para a i-ésima observação
    • \( \hat{y}_i \): Valor estimado (predito) para a i-ésima observação
    • \( n \): Número total de observações
    • \( \bar{y} \): Média dos valores observados

    Após obter as métricas para cada modelo testado, o melhor modelo recebe a pontuação 10, enquanto os demais recebem pontuações decrescentes (9, 8 e assim por diante).

    Referências

    BI, H. (2000). Trigonometric variable-form taper equations for Australian eucalypts. Forest Science, 46(3), 397–409.

    JOHNSON, T. (1911). Taxatariska undersökringar om skogsträdens form. Skgsvardsföreningens tiedskrifle. Häfte, Berlim, 9(10), 285–329.

    KOZAK, A. (2004). My last words on taper equations. The Forestry Chronicle, 80(4), 507–515.

    MATTE, L. (1949). The taper of coniferous species with special reference to Loblolly Pine. Forestry Chronicle, Mattawa, 25(1), 21–31.

    MEYER, H. A. (1940). A mathematical expression for height curves. Journal of Forestry, 38, 415–420. https://doi.org/10.1093/jof/38.5.415

    NÄSLUND, M. (1936). Skogsförsöksanstaltens gallringsförsök i tallskog. Meddelanden från Statens Skogsförsöksanstalt, Swedish Institute of Experimental Forestry, 29: 169.

    SCHÖEPFER, W. (1966). Automatisierung des Massen-, Sorten- und Wertberechnung stehender Waldbestände. Schriftenreihe Bad. Wurtt-Forstl.

    SCHUMACHER, F. X.; HALL, F. S. (1933). Logarithmic expression of timber tree volume. Journal of Agricultural Research, Washington, 47(9), 719–734.

    SCOLFORO, J. R. S. (2005). Biometria Florestal: Parte I: Modelos de regressão linear e não-linear; Parte II: Modelos para relação hipsométrica, volume, afilamento e preso de matéria seca. Lavras: UFLA/FAEPE, pp. 224–226.

    SPURR, S. R. (1952). Forest inventory. New York: Ronald Press, 476 p.

    STOATE, I. N. (1945). The use of a volume equation in pine stands. Australian Forestry, Canberra, 9, 48–52.