Modelo de Clutter
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)!
 
- 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  ClutterPredictor.get_coefs()#(1)!
  ClutterPredictor.predict(age2)#(2)!
  ClutterPredictor.predict_range(age_range=(2, 10),show_plots=False)#(3)!
 
- Retorna os coeficientes carregados do 
coefs_file.   
- Retorna a previsão feita para 
age2.   
- 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 | 
|---|
 | fptools.forecast import ClutterTrainer, ClutterPredictor#(1)!
import pandas as pd#(2)!
  | 
 
- Importa as classes 
ClutterTrainer e ClutterPredictor do módulo forecast. 
- 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)!
  | 
 
- Carrega seu arquivo com dados de inventário contínuo em formato 
xlsx.   
- Cria a variável 
clutter contendo a classe ClutterTrainer, definindo as respectivas colunas.   
- 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.   
- 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.   
- Faz a previsão para esse plantio quando atingir 
10 anos e salva os resultados em ba_vol_predicted.   
- Obtém os coeficientes do modelo e os salva na variável 
coef.   
- 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)
- 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)
- Valor de área basal e volume futuros estimados para idade de 10 anos.
 
coef(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)
- 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.