Pular para conteúdo

Modelo de Clutter


Warning

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

Use bancos de dados de inventário florestal contínuo para prever o crescimento e a produção da floresta. Utilize o método tradicional do modelo de Clutter. Com este módulo, você poderá estimar o volume e a área basal.


Parâmetros da Classe

ClutterTrainer

ClutterTrainer(df, age1, age2, ba1, ba2, site, vol, iterator=None)
Parâmetros Descrição
df O dataframe contendo os dados processados do inventário florestal contínuo.
age1 Nome da coluna contendo a idade da parcela amostrada anteriormente.
age2 Nome da coluna contendo a idade da parcela amostrada posteriormente.
ba1 Nome da coluna contendo a área basal da parcela amostrada anteriormente.
ba2 Nome da coluna contendo a área basal da parcela amostrada posteriormente.
site Nome da coluna contendo o índice de sítio do povoamento.
vol Nome da coluna contendo o volume da parcela amostrada posteriormente.
iterator (Opcional) Nome de um iterador que será usado para agrupar os dados. Exemplo de um iterador: Material genético, Estrato.
Exemplo de entrada para o modelo de Clutter
Iterador Parcela age1 age2 ba1 ba2 site vol
GM 1 1 2.5 3.5 7.57 8.42 7.83 44.04
GM 1 1 3.5 4.5 8.42 14 8.73 51.42
GM 1 2 2.1 3.1 4.94 5.51 6.98 38.06
GM 1 2 3.1 4.33 5.51 6.45 7.45 39.26
GM 2 1 2 3 7.3 8.25 11.37 74.63
GM 2 1 3 4 8.25 9.13 11.69 68.27
GM 2 1 4 5 9.13 12.79 12.83 72.76
GM 2 1 5 6 12.79 15.63 14 73.87

Métodos da Classe

functions and parameters
  ClutterTrainer.fit_model(save_dir=None)#(1)!

  1. save_dir = Diretório onde os coeficientes e parâmetros dos modelos treinados serão salvos.
Métodos Descrição
.fit_model() Ajusta os modelos para prever a área basal e o volume.

Modelos de Clutter

  • Predição da área basal
  • \[ \ln G_2 = \ln G_1 \left( \frac{t_1}{t_2} \right) + \alpha_0 \left( 1 - \frac{t_1}{t_2} \right) + \alpha_1 \left( 1 - \frac{t_1}{t_2} \right) S \]

  • Predição do volume
  • \[ \ln V_2 = \beta_0 + \beta_1 \cdot \frac{1}{t_2} + \beta_2 \cdot S + \beta_3 \cdot \ln G_2 \]
    Notação
    • \( G_1 \): Área basal inicial (na idade \( t_1 \)) em m²·ha⁻¹
    • \( G_2 \): Área basal final (na idade \( t_2 \)) em m²·ha⁻¹
    • \( t_1 \): Idade inicial em meses ou anos
    • \( t_2 \): Idade final em meses ou anos
    • \( S \): Índice de sítio, adimensional, \( f(\text{idade índice}, t_i) \)
    • \( \alpha_0, \alpha_1 \): Coeficientes a serem ajustados
    • \( V_2 \): Volume final (na idade \( t_2 \)) em m³·ha⁻¹
    • \( \beta_i \): Coeficientes a serem ajustados

    Parâmetros da Classe

    ClutterPredictor

    ClutterPredictor(coefs_file, age1, site, ba1, iterator=None)
    
    Parâmetros Descrição
    coefs_file Diretório do arquivo json contendo os coeficientes e parâmetros dos modelos ajustados.
    age1 Nome da coluna contendo a idade da parcela amostrada anteriormente.
    ba1 Nome da coluna contendo a área basal da parcela amostrada anteriormente.
    site Nome da coluna contendo o índice de sítio do povoamento.
    iterator (Opcional) Nome de um iterador que será usado para previsões.
    Métodos da Classe
    Métodos Descrição
    .predict() Faz a predição de área basal e volume futuros usando os coeficientes ajustados em ClutterTrainer para uma idade específica.
    .get_coefs() Mostra quais foram os coeficientes carregados em coefs_file.
    .predict_range() Faz a predição de área basal e volume futuros usando os coeficientes ajustados em ClutterTrainer para um intervalo de idades pré definido.

    funções e parâmetros
      ClutterTrainer.get_coefs()#(1)!
    
      ClutterTrainer.predict(age2)#(2)!
    
      ClutterTrainer.predict_range(age_range=(2, 10),show_plots=False)#(3)!
    

    1. Retorna os coeficientes carregados do coefs_file.
    2. Retorna a previsão feita para age2.
    3. Retorna a previsão feita para um intervalo de idades especificado em age_range como uma tupla.
      Se show_plots=True, exibe os gráficos das previsões realizadas.

    Example Usage

    Como exemplo, iremos usar uma adaptação dos dados obtidos por Arce e Dobner Jr. (2024) para Eucalyptus dunnii. A base de dados é composta por 81 parcelas permanentes, com idades variando entre 3 e 9 anos, medidas de forma contínua ao longo do tempo.

    Fazer download do arquivo.

    Primeiras 5 linhas do arquivo:

    Estrato Parcela I1 I2 G1 G2 IS V2_observ
    Estrato-2 1220117_P7005 3 4 8,88 11,98 14,42 36,05
    Estrato-2 1220117_P7005 4 5 11,98 13,53 14,42 51,90
    Estrato-2 1220117_P7005 5 6 13,53 17,24 14,42 81,22
    Estrato-2 1220117_P7005 6 7 17,24 22,47 14,42 144,45
    Estrato-2 1220117_P7005 7 8 22,47 22,20 14,42 150,15

    clutter_forecast_example.py
    1
    2
    3
    fptools.forecast import ClutterTrainer, ClutterPredictor#(1)!
    
    import pandas as pd#(2)!
    

    1. Importa as classes ClutterTrainer e ClutterPredictor do módulo forecast.
    2. Importa o pandas para manipulação de dados.

    clutter_forecast_example.py
    df = pd.read_csv(r'C:\Seu\Diretorio\dados_clutter.xlsx')#(1)!
    
    clutter = ClutterTrainer(dados, "I1","I2", "G1","G2",'IS',"V2_observ")#(2)!
    
    metrics = clutter.fit_model(save_dir = r"C:\Seu\Diretorio\para\salvar")#(3)!
    
    predictor = ClutterPredictor("C:\Seu\Diretorio\para\salvar\all_coefficients.json",
                                 7,14.41,17.23)#(4)!
    
    ba_vol_predicted = predictor.predict(10)#(5)!
    
    coef = predictor.get_coefs()#(6)!
    
    ba_vol_range_predicted = predictor.predict_range((2,12), show_plots=True)#(7)!
    

    1. Carrega seu arquivo com dados de inventário contínuo em formato xlsx.
    2. Cria a variável clutter contendo a classe ClutterTrainer, definindo as respectivas colunas.
    3. Ajusta o modelo de Clutter, salvando os coeficientes e parâmetros na pasta C:\Seu\Diretorio\para\salvar\as\metricas e as métricas do treinamento na variável metrics.
    4. Cria uma variável contendo o preditor. Esse preditor usará o modelo salvo C:\Seu\Diretorio\para\salvar\all_coefficients.json para aplicar um inventário com idade de 7 anos, um índice de sítio de 14,41 e uma área basal de 17,23, a fim de prever a produção futura de volume e área basal.
    5. Faz a previsão para esse plantio quando atingir 10 anos e salva os resultados em ba_vol_predicted.
    6. Obtém os coeficientes do modelo e os salva na variável coef.
    7. Faz a previsão para esse plantio de 2 a 12 anos, gerando um gráfico que mostra a evolução da área basal e do volume ao longo desse período, juntamente com o nível de confiança.

    Saídas

    Tabelas

    metrics(1)

    1. Valores das métricas dos ajustes para cada um dos modelos utilizados por iterator (quando utilizado).
    Iterator Model mse rmse mae mape r2 explained_variance max_error
    Not used ln_ba2_est 2,70 1,64 1,32 2,35 0,92 0,94 4,41
    Not used ln_vol2_est 280,92 16,76 12,34 2,06 0,94 0,94 76,58

    ba_vol_predicted(1)

    1. Valor de área basal e volume futuros estimados para idade de 10 anos.
    BA2 Volume
    17,23 159,03

    coef(1)

    1. Dicionário com coeficientes para cada modelo e iterator (quanto utilizado).
    ```json
    {
      "lnb2_model": {
        "b0": 0.03818795042386813,
        "b1": 3.465183897074305,
        "b2": 0.016174627316697623,
        "num_rows": 402,
        "min_age": 3,
        "max_age": 9,
        "mape": 2.3528810455777904,
        "r2": 0.923524025998693
      },
      "lnv2_model": {
        "b0": 1.3927682912732822,
        "b1": -4.364287014356091,
        "b2": 0.04215217322729903,
        "b3": 1.1299750378626658,
        "num_rows": 402,
        "min_age": 3,
        "max_age": 9,
        "mape": 2.0563064467361003,
        "r2": 0.9414308873440383
      }
    }
    

    ba_vol_range_predicted(1)

    1. Data frame contendo área basal e volumes futuros para um intervalo de idade pré definido.
    Age BA2 Volume BA2_max_error BA2_min_error Volume_max_error Volume_min_error
    2,00 2,05 1,88 2,10 2,00 1,91 1,84
    2,50 3,72 5,69 3,81 3,63 5,81 5,57
    3,00 5,54 11,93 5,67 5,41 12,17 11,68
    3,50 7,35 20,24 7,53 7,18 20,65 19,82
    4,00 9,10 30,09 9,31 8,88 30,70 29,47
    4,50 10,74 40,95 10,99 10,48 41,79 40,11
    5,00 12,26 52,41 12,54 11,97 53,49 51,33
    5,50 13,66 64,13 13,98 13,34 65,45 62,81
    6,00 14,95 75,87 15,30 14,60 77,43 74,31
    6,50 16,14 87,48 16,52 15,76 89,28 85,68
    7,00 17,23 98,83 17,64 16,82 100,86 96,79
    7,50 18,24 109,85 18,67 17,81 112,10 107,59
    8,00 19,17 120,49 19,62 18,71 122,97 118,01
    8,50 20,02 130,74 20,50 19,55 133,43 128,05
    9,00 20,82 140,58 21,31 20,33 143,47 137,69
    9,50 21,56 150,00 22,07 21,05 153,09 146,92
    10,00 22,25 159,03 22,77 21,72 162,30 155,76
    10,50 22,89 167,66 23,42 22,35 171,11 164,21
    11,00 23,48 175,91 24,04 22,93 179,53 172,30
    11,50 24,04 183,80 24,61 23,48 187,58 180,03
    12,00 24,57 191,35 25,15 23,99 195,28 187,41
    Exemplo de Gráfico de Saída da Previsão

    Referências

    CLUTTER, J. L.; FORTSON, J. C.; PIENAAR, L. V.; BRISTER, G. H.; BAILEY, R. L. (1983). Timber management: a quantitative approach. New York: John Wiley & Sons, 333p.

    ARCE, JULIO EDUARDO; DOBNER JR., MARIO. (2024). Manejo e planejamento de florestas plantadas: com ênfase nos gêneros Pinus e Eucalyptus. Curitiba, PR: Ed. dos Autores, 419p.