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 ClutterTrainer.get_coefs()#(1)!
ClutterTrainer.predict(age2)#(2)!
ClutterTrainer.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.