Getting Started
Computing the Cubage
The cubage
function calculates the volume of a tree (cubage) using different cubing methods. It can handle both single trees and multiple trees in a dataset. The available cubing methods are Smalian
, Newton
and Huber
.
Cubing a Simple Tree
When cubing a single tree, you need to provide vectors of diameters (d) and heights (h) measured at different points along the tree stem. Diameters should be in centimeters, and heights should be in meters. The diameter at breast height (DBH) and total tree height (Ht) are essential inputs.
using ForestMensuration
# Diameters at different heights (cm)
d = [9.0, 7.0, 5.8, 5.1, 3.8, 1.9, 0.0]
# Corresponding heights (m)
h = [0.3, 1.3, 3.3, 5.3, 7.3, 9.3, 10.8]
# Calculate cubage using the Smalian method
cubage(Smalian, h, d)
Row | vt | v0 | vc | vr | vn | dbh | ht | hc | aff | nff | qf |
---|---|---|---|---|---|---|---|---|---|---|---|
Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | |
1 | 0.0229254 | 0.00190852 | 0.0208751 | 0.0 | 0.000141764 | 7.0 | 10.8 | 9.3 | 0.551578 | 0.488267 | 0.719286 |
- vt: Total volume
- v0: Volume of the stump
- vc: Commercial bole volume
- vr: Residual volume above commercial limit
- vn: Volume of the top (cone)
- dbh: Diameter at breast height
- ht: Total tree height
- hc: Commercial height
- aff: Artificial form factor
- nff: Natural form factor
- qf: Form quotient
Including Bark Thickness
With the bark thickness value, it is possible to calculate the bark factor and total and commercial volumes without bark. Note: the provided thickness should be the 'single thickness' in centimeters. The function will convert it into 'double thickness'.
# Bark thickness at corresponding heights (cm)
bark = [0.9, 0.5, 0.3, 0.2, 0.2, 0.1, 0.0]
# Define a commercial diameter limit
diameter_limit = 4.0
# Calculate cubage using the Newton method, including bark thickness and diameter limit
cubage(Newton, h, d, bark, diameter_limit)
Row | vt | v0 | vc | vr | vn | dbh | ht | hc | aff | nff | qf | k | vtwb | v0wb | vcwb | vrwb | vnwb |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | |
1 | 0.0130233 | 0.00190852 | 0.0109731 | 0.0 | 0.000141764 | 7.0 | 10.8 | 6.99231 | 0.313338 | 0.277372 | 0.719286 | 0.932515 | 0.0113249 | 0.00165962 | 0.00954201 | 0.0 | 0.000123276 |
Additional columns include:
- k: Bark factor
- : vtwb, v0wb, vcwb, vrwb, vnwb: Corresponding volumes without bark
Cubing Multiple Trees
To calculate cubage for multiple trees, organize your data in a DataFrame with columns for tree identifiers, heights, diameters, and optionally bark thickness.
using ForestMensuration
using DataFrames
# Sample data for multiple trees
data = DataFrame(
tree = [148, 148, 148, 148, 148, 148, 148, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222],
h = [0.3, 1.3, 3.3, 5.3, 7.3, 9.3, 10.8, 0.3, 1.3, 3.3, 5.3, 7.3, 9.3, 11.3, 13.3, 15.3, 17.3, 19.5],
d = [9.0, 7.0, 5.8, 5.1, 3.8, 1.9, 0.0, 16.0, 12.0, 11.6, 10.1, 9.4, 8.2, 7.0, 6.0, 4.0, 2.0, 0.0],
bark = [0.9, 0.5, 0.3, 0.2, 0.2, 0.1, 0.0, 1.2, 0.5, 0.3, 0.3, 0.2, 0.2, 0.3, 0.0, 0.0, 0.0, 0.0]
)
# Define a commercial diameter limit
diameter_limit = 2.5
# Calculate cubage for each tree using the Huber method
cubage(Huber, :tree, :h, :d, data, diameter_limit)
Row | tree | vt | v0 | vc | vr | vn | dbh | ht | hc | aff | nff | qf |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Int64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | |
1 | 148 | 0.023353 | 0.00190852 | 0.0206984 | 0.000604364 | 0.000141764 | 7.0 | 10.8 | 8.66842 | 0.561867 | 0.497375 | 0.719286 |
2 | 222 | 0.106503 | 0.00603186 | 0.0993921 | 0.00084823 | 0.000230383 | 12.0 | 19.5 | 16.8 | 0.482918 | 0.493554 | 0.660833 |
Including Bark Thickness for Multiple Trees
Additionally, bark thickness values can be provided to calculate bark factors and volumes without bark.
# Calculate cubage including bark thickness
cubage(Huber, :tree, :h, :d, :bark, data, diameter_limit)
Row | tree | vt | v0 | vc | vr | vn | dbh | ht | hc | aff | nff | qf | k | vtwb | v0wb | vcwb | vrwb | vnwb |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Int64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | |
1 | 148 | 0.023353 | 0.00190852 | 0.0206984 | 0.000604364 | 0.000141764 | 7.0 | 10.8 | 8.66842 | 0.561867 | 0.497375 | 0.719286 | 0.932515 | 0.0203074 | 0.00165962 | 0.017999 | 0.000525546 | 0.000123276 |
2 | 222 | 0.106503 | 0.00603186 | 0.0993921 | 0.00084823 | 0.000230383 | 12.0 | 19.5 | 16.8 | 0.482918 | 0.493554 | 0.660833 | 0.965238 | 0.0992267 | 0.00561978 | 0.092602 | 0.000790282 | 0.000214644 |
Fitting Linear Regressions
The regression
function automatically generates and evaluates multiple regression models based on the provided data. It explores various transformations of the dependent and independent variables, creating a comprehensive set of models for analysis.
Adjusting a Hypsometric Relationship
In forestry, hypsometric relationships model the relationship between tree height (h) and diameter at breast height (dbh). The regression function generates numerous models to find the best fit.
using ForestMensuration
using DataFrames
# Sample dataset with tree heights and diameters
data = DataFrame(
plot = ["A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A",
"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B",
"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C",
"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", "D", "D", "D", "D", "D"],
h = [20.9, 19.6, 13.2, 23.3, 19.2, 16.2, 8.3, 19.7, 11.0, 24.0, 25.8, 28.2, 24.2, 26.2, 28.3,
14.4, 14.9, 15.6, 8.2, 22.1, 16.7, 22.3, 19.5, 15.9, 16.7, 24.5, 21.7, 23.8,
20.8, 17.7, 19.3, 16.7, 22.2, 18.6, 6.9, 22.3, 8.7, 22.1, 21.0, 23.5,
19.5, 19.7, 18.2, 13.9, 12.3, 14.5, 12.3, 18.6, 18.0, 17.4, 24.3, 22.8, 23.2, 23.5, 25.2],
dbh = [31.5, 30.0, 26.5, 31.0, 29.0, 26.5, 14.5, 28.8, 19.0, 31.5, 32.5, 33.8, 32.5, 33.3, 36.0,
24.0, 28.0, 23.0, 15.5, 31.0, 27.0, 29.0, 28.0, 26.0, 29.0, 30.0, 29.0, 30.5,
25.0, 26.8, 27.5, 26.0, 26.0, 25.8, 10.8, 27.0, 16.5, 26.5, 27.0, 26.3,
26.0, 25.5, 25.0, 23.5, 22.0, 23.0, 23.0, 26.0, 25.5, 27.5, 26.5, 26.5, 27.8, 26.0, 27.0]
)
# Perform regression analysis between height and diameter
models = regression(:h, :dbh, data);
# Alternative print of fitted models
models_eq = ModelEquation.(models)
492-element Vector{ModelEquation}:
h = -38.303464 - 0.00127861 * dbh ^ 2 + 5.17003 * log(dbh) ^ 2 + 1893.09 * dbh ^ -2
h = -24.957989 + 1.99422 * dbh - 0.0155284 * dbh ^ 2 + 1427.45 * dbh ^ -2
h = 33.797445 - 374.073 * dbh ^ -1
h = -121.169643 + 39.5447 * log(dbh) + 220.379 * dbh ^ -1 + 1600.96 * dbh ^ -2
h = 57.276168 - 1334.96 * dbh ^ -1 + 8652.01 * dbh ^ -2
h = -46.598571 + 20.1454 * log(dbh)
h = -87.32823 + 0.00156365 * dbh ^ 2 + 31.0905 * log(dbh) + 2359.99 * dbh ^ -2
h = 199.7007 - 2.22874 * dbh - 160.35 * log(dbh) + 37.6057 * log(dbh) ^ 2
h = -159.803271 + 48.056 * log(dbh) + 564.396 * dbh ^ -1
h = 14.630413 + 7.59575 * dbh - 0.0547852 * dbh ^ 2 - 14.7528 * log(dbh) ^ 2
⋮
dbh ^ 2 / (h - 1.3) = -196.548669 + 13.2052 * log(dbh) ^ 2 + 3216.97 * dbh ^ -1 - 18169.5 * dbh ^ -2
dbh ^ 2 / (h - 1.3) = 29.509715 + 0.0156314 * dbh ^ 2
dbh ^ 2 / (h - 1.3) = 19.926992 + 0.788533 * dbh
dbh ^ 2 / (h - 1.3) = 35.023912 + 1.29219 * log(dbh) ^ 2 - 202.01 * dbh ^ -1
dbh ^ 2 / (h - 1.3) = -16.994315 + 0.000112617 * dbh ^ 2 + 17.7219 * log(dbh)
dbh ^ 2 / (h - 1.3) = 47.295535 + 0.00514874 * dbh ^ 2 - 258.43 * dbh ^ -1
dbh ^ 2 / (h - 1.3) = 157.069799 - 5.12466 * dbh + 0.0801834 * dbh ^ 2 - 975.019 * dbh ^ -1
dbh ^ 2 / (h - 1.3) = -437.04287 + 0.0645113 * dbh ^ 2 + 341.086 * log(dbh) - 63.8074 * log(dbh) ^ 2
dbh ^ 2 / (h - 1.3) = 713.371614 + 5.46491 * dbh - 221.457 * log(dbh) - 2429.6 * dbh ^ -1
This generates 240 different models combining various transformations of h and dbh.
#number of fitted regressions
length(models)
492
Regression Selection Criteria
After fitting the models, you can evaluate and rank them based on specific criteria using the criteria_table
function.
# Evaluate models based on all criteria
best_models = criteria_table(models)
Row | model | rank | adjr2 | syx | rmse | mae | aic | normality | significance |
---|---|---|---|---|---|---|---|---|---|
ModelEqu… | Int64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | |
1 | h = -35.332287 + 4.82761 * log(dbh) ^ 2 + 1744.93 * dbh ^ -2 | 7 | 0.729676 | 13.947 | 2.58306 | 1.9932 | 364.471 | 1.0 | 1.0 |
2 | h = -96.165886 + 34.0209 * log(dbh) + 2613.1 * dbh ^ -2 | 15 | 0.729649 | 13.9477 | 2.58319 | 2.0052 | 364.476 | 1.0 | 1.0 |
3 | h = -159.803271 + 48.056 * log(dbh) + 564.396 * dbh ^ -1 | 18 | 0.729505 | 13.9514 | 2.58388 | 1.99526 | 364.505 | 1.0 | 1.0 |
4 | h = -57.37389 + 5.95902 * log(dbh) ^ 2 + 326.761 * dbh ^ -1 | 23 | 0.729037 | 13.9635 | 2.58611 | 2.00102 | 364.6 | 1.0 | 1.0 |
5 | log1p(h) = 4.926569 - 65.7614 * dbh ^ -1 + 375.735 * dbh ^ -2 | 28 | 0.726429 | 14.0305 | 2.59853 | 2.00519 | 365.127 | 1.0 | 1.0 |
6 | log(h) = 4.98045 - 69.1379 * dbh ^ -1 + 389.578 * dbh ^ -2 | 34 | 0.725409 | 14.0567 | 2.60337 | 2.01038 | 365.332 | 1.0 | 1.0 |
7 | log(h) = -1.489449 + 1.34799 * log(dbh) | 35 | 0.729603 | 13.9489 | 2.60813 | 2.05679 | 367.533 | 1.0 | 1.0 |
8 | h = 57.276168 - 1334.96 * dbh ^ -1 + 8652.01 * dbh ^ -2 | 42 | 0.724805 | 14.0721 | 2.60623 | 2.08089 | 365.453 | 1.0 | 1.0 |
9 | log(h) = 0.718653 + 0.111317 * dbh - 0.00105888 * dbh ^ 2 | 45 | 0.723769 | 14.0986 | 2.61113 | 2.04218 | 365.659 | 1.0 | 1.0 |
10 | log_minus(h - 1.3) = 5.064047 - 73.9976 * dbh ^ -1 + 407.009 * dbh ^ -2 | 48 | 0.72357 | 14.1037 | 2.61207 | 2.02274 | 365.699 | 1.0 | 1.0 |
# Evaluate models based on Adjusted R², Standard Error and chosing the 5 bests
best_5_models = criteria_table(models, :adjr2, :syx, best=5)
Row | model | rank | adjr2 | syx |
---|---|---|---|---|
ModelEqu… | Int64 | Float64 | Float64 | |
1 | h = -35.332287 + 4.82761 * log(dbh) ^ 2 + 1744.93 * dbh ^ -2 | 2 | 0.729676 | 13.947 |
2 | h = -96.165886 + 34.0209 * log(dbh) + 2613.1 * dbh ^ -2 | 4 | 0.729649 | 13.9477 |
3 | log(h) = -1.489449 + 1.34799 * log(dbh) | 6 | 0.729603 | 13.9489 |
4 | h = -159.803271 + 48.056 * log(dbh) + 564.396 * dbh ^ -1 | 8 | 0.729505 | 13.9514 |
5 | log1p(h) = -1.130284 + 1.25502 * log(dbh) | 10 | 0.729334 | 13.9559 |
Selecting the Best Model
To select the best model based on the combined ranking you can simply use the criteria_selection
function:
# Select the top model
top_model = criteria_selection(models)
# View the model equation
ModelEquation(top_model)
h = -35.332287 + 4.82761 * log(dbh) ^ 2 + 1744.93 * dbh ^ -2
Plotting the Regression
You can visualize the regression model using the plot_regression
function.
# Plot the top model
plot_regression(top_model)
Prediction
The prediction
function. allows you to generate predicted values from a regression model on the original scale of the dependent variable. This is particularly useful when the model involves transformations of the dependent variable (e.g., logarithmic transformations). The function automatically applies the appropriate inverse transformations and corrections, such as the Meyer correction factor for logarithmic models.
# Returns the predicted values from the model on the original scale
h_pred = prediction(top_model)
55-element Vector{Float64}:
23.886535658137483
22.453059822566104
18.99950646590383
23.411978901717674
21.481320689389754
18.99950646590383
7.489654855515589
21.28547158864369
11.355391771886561
23.886535658137483
⋮
15.428102129764762
18.49503039939057
17.98822155030051
20.000749135189402
18.99950646590383
18.99950646590383
20.29897925585609
18.49503039939057
19.501465152261932
The prediction!
function extends this by adding the predicted values directly to your DataFrame. It creates new columns for the predicted and actual values, combining observed measurements with model predictions where data may be missing. This is especially useful in forest inventory datasets where certain tree attributes might not be measured for every tree, and predictions need to be filled in for these gaps.
# Automatically adds predicted and actual height columns to the provided DataFrame.
# This combines observed heights and predicted heights for trees with missing or unmeasured heights.
prediction!(top_model, data)
# Firsts values of dataset
println(data[1:10, :])
10×5 DataFrame
Row │ plot h dbh h_prediction h_real
│ String Float64 Float64 Float64? Float64
─────┼─────────────────────────────────────────────────
1 │ A 20.9 31.5 23.8865 20.9
2 │ A 19.6 30.0 22.4531 19.6
3 │ A 13.2 26.5 18.9995 13.2
4 │ A 23.3 31.0 23.412 23.3
5 │ A 19.2 29.0 21.4813 19.2
6 │ A 16.2 26.5 18.9995 16.2
7 │ A 8.3 14.5 7.48965 8.3
8 │ A 19.7 28.8 21.2855 19.7
9 │ A 11.0 19.0 11.3554 11.0
10 │ A 24.0 31.5 23.8865 24.0
Adjusting a Qualitative (Dummy) Hypsometric Relationship
If your data includes categorical variables (e.g., different plots or species), you can include them in the regression analysis.
# Perform regression including 'plot' as a categorical variable
qualitative_models = regression(:h, :dbh, data, :plot)
# Select the best model
top_qual_model = criteria_selection(qualitative_models, :adjr2, :syx, :aic)
# View the model equation
ModelEquation(top_qual_model)
1 / √(h - 1.3) = 0.570482 - 0.0440831 * dbh + 0.000398895 * dbh ^ 2 + 0.0534853 * log(dbh) ^ 2 - 0.00397926 * plot: B - 0.025622 * plot: C - 0.0245227 * plot: D
Plotting the Qualitative Regression
# Plot the top qualy model
plot_regression(top_qual_model)
Site Classification
Frequency and Statistical Functions
Creating Frequency Tables
The frequency_table
function creates frequency distributions for a vector of values, which is useful for analyzing the distribution of diameters or heights in your data.
# Frequency table for diameters using Sturges' formula for class intervals
frequency_table(data.dbh)
Row | LI | Xi | LS | fi | Fi | fri | Fri |
---|---|---|---|---|---|---|---|
Float64 | Float64 | Float64 | Int64 | Int64 | Float64 | Float64 | |
1 | 10.0 | 12.5 | 15.0 | 1 | 1 | 1.81818 | 1.81818 |
2 | 15.0 | 17.5 | 20.0 | 3 | 4 | 5.45455 | 7.27273 |
3 | 20.0 | 22.5 | 25.0 | 2 | 6 | 3.63636 | 10.9091 |
4 | 25.0 | 27.5 | 30.0 | 27 | 33 | 49.0909 | 60.0 |
5 | 30.0 | 32.5 | 35.0 | 19 | 52 | 34.5455 | 94.5455 |
6 | 35.0 | 37.5 | 40.0 | 3 | 55 | 5.45455 | 100.0 |
- LI: Lower class limit
- Xi: Class center
- LS: Upper class limit
- fi: Frequency count
- Fi: Cumulative frequency
- fri: Relative frequency (%)
- Fri: Cumulative relative frequency (%)
Specifying Class Width
You can specify the class width (hi) to customize the intervals.
# Frequency table for heights with class width of 4 meters
frequency_table(data.h, 4)
Row | LI | Xi | LS | fi | Fi | fri | Fri |
---|---|---|---|---|---|---|---|
Float64 | Float64 | Float64 | Int64 | Int64 | Float64 | Float64 | |
1 | 8.0 | 10.0 | 12.0 | 4 | 4 | 7.27273 | 7.27273 |
2 | 12.0 | 14.0 | 16.0 | 5 | 9 | 9.09091 | 16.3636 |
3 | 16.0 | 18.0 | 20.0 | 12 | 21 | 21.8182 | 38.1818 |
4 | 20.0 | 22.0 | 24.0 | 14 | 35 | 25.4545 | 63.6364 |
5 | 24.0 | 26.0 | 28.0 | 17 | 52 | 30.9091 | 94.5455 |
6 | 28.0 | 30.0 | 32.0 | 3 | 55 | 5.45455 | 100.0 |
Calculating Dendrometric Averages
he dendrometric_averages
function computes various dendrometric averages of a forest stand, providing insights into the stand structure and growth patterns.
# Calculate dendrometric averages for the dataset
dendrometric_averages(data.dbh, area=0.05)
Row | d₋ | d̅ | dg | dw | dz | d₁₀₀ | d₊ |
---|---|---|---|---|---|---|---|
Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | |
1 | 21.8401 | 26.5164 | 26.9182 | 27.2 | 26.5 | 33.62 | 31.1927 |
- d₋: Lower Hohenadl's diameter
- d̄: Mean diameter
- dg: Quadratic mean diameter
- dw: Weise's diameter (60th percentile)
- dz: Diameter of the tree with central basal area
- d₁₀₀: Mean diameter of the 100 largest trees per hectare (returns NaN if fewer than 100 trees)
- d₊: Upper Hohenadl's diameter
Estimating Heights Using a Regression Model
If you have a regression model (e.g., top_model from earlier), you can estimate the corresponding heights for each calculated diameter.
# Estimate heights for dendrometric averages using the regression model
dendrometric_averages(top_model, area=0.05)
Row | d₋ | d̅ | dg | dw | dz | d₁₀₀ | d₊ | h₋ | h̅ | hg | hw | hz | h₊ | h₁₀₀ |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | Float64 | |
1 | 21.8401 | 26.5164 | 26.9182 | 27.2 | 26.5 | 33.62 | 31.1927 | 14.2341 | 19.016 | 19.4195 | 19.7015 | 18.9995 | 25.8619 | 23.5952 |
Forest Inventory
In this example, we will perform a forest inventory using the simple_casual_sampling
function to conduct simple random sampling. We will use a desired error margin of 10% (default) and present the results in English (default).
using ForestMensuration
# First, define the volumes measured in each sample plot
v = [381.7, 458.9, 468.2, 531.7, 474.1, 401.9, 469.1, 437.4, 435.3, 403.2, 397.1];
#Define the area of each plot
plot_area = 0.05 # hectares
#Define the total area of the forest
total_area = 10 # hectares
# Use the simple_casual_sampling function
simple_casual_sampling(v, plot_area, total_area)
Row | Parameters | Values | Units |
---|---|---|---|
String | Float64 | String | |
1 | plot volume | 441.691 | m³/0.05ha |
2 | coefficient of variation | 10.03 | % |
3 | mean variance | 168.498 | (m³/0.05ha)² |
4 | standard error | 12.9807 | m³/0.05ha |
5 | absolute error | 28.9227 | m³/0.05ha |
6 | relative error | 6.55 | % |
7 | hectare volume | 8833.82 | m³ha⁻¹ |
8 | Total Volume | 88338.2 | m³ |
9 | confidence interval lower | 82553.6 | m³ |
10 | confidence interval upper | 94122.7 | m³ |
11 | population | 0.945 | finite |
12 | measured plots | 11.0 | n |
13 | required plots | 7.0 | n |
14 | missing plots | 0.0 | n |
15 | possible plots | 200.0 | N |
You can also set error threshold and change language
# Setting the error to 5% and the language to Portuguese-BR
simple_casual_sampling(v, plot_area, total_area, e=5, lg=:pt)
Row | Parâmetros | Valores | Unidades |
---|---|---|---|
String | Float64 | String | |
1 | volume por parcela | 441.691 | m³/0.05ha |
2 | coeficiente de variação | 10.03 | % |
3 | variância média | 168.498 | (m³/0.05ha)² |
4 | erro padrão | 12.9807 | m³/0.05ha |
5 | erro absoluto | 28.9227 | m³/0.05ha |
6 | erro relativo | 6.55 | % |
7 | volume por hectare | 8833.82 | m³ha⁻¹ |
8 | Volume Total | 88338.2 | m³ |
9 | intervalo de confiança inferior | 82553.6 | m³ |
10 | intervalo de confiança superior | 94122.7 | m³ |
11 | população | 0.945 | finita |
12 | parcelas medidas | 11.0 | n |
13 | parcelas necessárias | 17.0 | n |
14 | parcelas faltantes | 6.0 | n |
15 | parcelas possíveis | 200.0 | N |