Desenvolvida com dados de inventários florestais em povoamentos nativos e plantados.
Pacotes necessários
library(readxl)
library(gamlss)
Leitura dos dados
dados<- read_xlsx("Eucalipto_CampoVerde.xlsx")
attach(dados) # padronizar o nome de entrada
head(dados) # mostrar primiros dados
e viabilizar diferentes abordagens de modelagem (linear e não linear).
y_lm <- di.cm/dap.cm # variável resposta
x <- hi.m/ht.m #
y_nl <- di.cm
Modelos de regressão polinomial e modelos não-lineares parametrizados são alternativas flexíveis para capturar curvaturas, pontos de inflexão e assintotas.
Aqui, serão testados cinco modelos com preditores lineares nos parâmetros: polinômios de 3º, 4º e 5º graus, e um modelo tradicionais da área florestal — Hradetzky (1976).
A escolha entre as distribuições foi realizada com base em critérios de informação, particularmente o GAIC (Generalized Akaike Information Criterion), considerando diferentes valores do parâmetro de penalização k (k = 2, k = 3,84 e k = 6,74). O critério GAIC é definido como: GAIC=−2log(L)+k×df
em que L representa a verossimilhança do modelo e df o número de graus de liberdade estimados. Valores menores de GAIC indicam melhor equilíbrio entre qualidade de ajuste e complexidade do modelo.
O pacote gamlss.dist fornece acesso a mais de 100 distribuições de resposta explícitas voltadas para aplicações no modelo GAMLSS e, além disso, facilita a geração de distribuições de variáveis de resposta “implícitas” definidas pelo usuário.
Será realizado ajuste dos modelos com preditores lineares via gamlss utilizando as distribuições TF2, JSU e SST com, além da verificação dos resíduos e avaliação do desempenho dos modelos ajustados.
Captura até um ponto de inflexão Modelo paramétrico linear nos coeficientes
\[ \frac{d(h)}{D} = \beta_0 + \beta_1 x + \beta_2 x^2 + \beta_3 x^3 \]
onde \[ x = \frac{h}{H}\] Regressão Linear
m.p3_lm <- lm(y_lm ~ x + I(x^2) + I(x^3))
summary(m.p3_lm)
Qualidade do ajuste: R² = 0.9743
R² ajustado = 0.9742
Erro padrão residual = 0.0513
Todos os termos são altamente significativos (p < 2e-16).
summary(m.p3_lm)
plot(m.p3_lm)
wp(m.p3_lm) # nao mostra bom ajuste
Captura Média e Variância
\[Y∼N(μ(x),σ(x))\]
## polinomio de 3º grau
m.p3 <- gamlss(y_lm ~ x + I(x^2) + I(x^3),
sigma.formula = ~ x + I(x^2) + I(x^3),
family = NO)
summary(m.p3) #Assimetria = 0.719 (moderada); Curtose = 4.41 (cauda mais pesada que Normal)
plot(m.p3)
wp(m.p3) # não indicou bom ajuste
Equação do modelo ajustado por distribuição normal
Média (μ): μ = 1,1085 - 1,2208·x + 0,9822·x² - 0,9121·x³ Desvio Padrão: σ = exp(-2,4553 - 4,4405·x + 8,6931·x² - 5,3509·x³)
dist_m.p3 <- chooseDist(m.p3, type="realAll") ; dist_m.p3 # definindo as distribuições
best_dist_m.p3 <- dist_m.p3[c("TF2","JSU","SST"),] # selecionar dentre as três
min(best_dist_m.p3[,1]) # p/ k=2.00 #melhor dist ? JSU
min(best_dist_m.p3[,2]) # p/ k=3.84 #melhor dist ? JSU
min(best_dist_m.p3[,3]) # p/ k=6.74 #melhor dist ? JSU
best_dist_m.p3 # a melhor AIC dentre as 3 selecionadas: JSU
m.p3_1 <- gamlss(y_lm ~ x + I(x^2) + I(x^3),
sigma.formula = ~ x + I(x^2) + I(x^3),
family = JSU)
summary(m.p3_1)
plot(m.p3_1)
wp(m.p3_1) # resíduos no intervalo de confianças
ν = 1.4259 (p = 0.006) τ = 0.8139 (p < 0.001)
Comparação entre os modelos:
| Modelo | Global Deviance | AIC |
|---|---|---|
| Normal (NO) | -2729.324 | -2713.324 |
| Johnson SU | -2801.79 | -2781.79 |
A distribuição Johnson SU (JSU), mostrou-se superior à distribuição Normal (NO) para todos os critérios de informação avaliados. A especificação do modelo é dada por:
μ = 1,105 - 1,217·x + 0,998·x² - 0,927·x³ log(σ) = -2,677 - 3,148·x + 6,991·x² - 4,620·x³ ν = 1,426 (assimetria constante) τ = 2,256 (curtose constante)
A significância estatística dos parâmetros ν (p = 0,006) e τ (p < 0,001) confirma a presença de assimetria e curtose não-normais nos dados, justificando a escolha da distribuição JSU. A análise dos resíduos quantílicos indica excelente ajuste, com estatísticas muito próximas dos valores teóricos ideais (média = 0,002; variância = 1,001; assimetria = 0,024; curtose = 3,000).
modelo: μ = 1,105402 - 1,216621·x + 0,998129·x² - 0,927394·x³ Parâmetro de Escala (σ - Desvio Padrão)
log(σ) = -2,67717 - 3,14763·x + 6,99114·x² - 4,61954·x³ σ = exp(-2,67717 - 3,14763·x + 6,99114·x² - 4,61954·x³) Parâmetro de Assimetria (ν - Nu)
ν = 1,4259 (constante) Parâmetro de Curtose (τ - Tau)
log(τ) = 0,8139 τ = exp(0,8139) = 2,256 (constante)
\[ μ(x)=β 0 +β 1 x+β 2 x^2 +β 3 x^3 +β 4 x^4 \]
Ajustando com distribuição NO
mod_pol_4 <- gamlss(y_lm ~ x + I(x^2) + I(x^3) + I(x^4),
sigma.formula = ~ x + I(x^2) + I(x^3) + I(x^4),
family = NO)
summary(mod_pol_4)
plot(mod_pol_4) # resíduos assimétricos
wp(mod_pol_4) # Melhorar a modelagem
Coeficiente de Assimetria = 0.773, indica:Distribuição assimétrica à direita Presença de mais resíduos positivos extremos
Curtose = 4.45, Valor> 3 - leptocurtose, caudas mais pesadas que a Normal
Filliben Correlation = 0.9837: indica pequenos desvios da normalidade, especialmente nas caudas.
dist_mod_pol_4 <- chooseDist(mod_pol_4, type="realAll") ; dist_mod_pol_4
best_dist_mod_pol_4 <- dist_mod_pol_4[c("TF2","JSU","SST"),] ; best_dist_mod_pol_4
best_dist_mod_pol_4 <- na.omit(best_dist_mod_pol_4) ; best_dist_mod_pol_4
min(best_dist_mod_pol_4[,1]) # p/ k=2.00 #melhor dist ? SST
min(best_dist_mod_pol_4[,2]) # p/ k=3.84 #melhor dist ? SST
min(best_dist_mod_pol_4[,3]) # p/ k=6.74 #melhor dist ? SST
2 3.84 6.74 TF2 -2778.796 -2758.556 -2726.656 JSU -2827.089 -2805.009 -2770.209 SST -2828.296 -2806.216 -2771.416
A distribuição SST forneceu o menor AIC para o modelo
\[ Y∼SST(μ(x),σ(x),ν,τ) \]
mod_pol_4_1 <- gamlss(y_lm ~ x + I(x^2) + I(x^3) + I(x^4),
sigma.formula = ~ x + I(x^2) + I(x^3) + I(x^4),
family = SST
)
summary(mod_pol_4_1)
plot(mod_pol_4_1) # bom ajuste
wp(mod_pol_4_1) # dentro do intervalo de confiança
\[ μ(x)=β 0 +β 1 x+β 2 x^2 +β3x^3 +β 4x^4 \] \[log(σ(x))=γ 0 +γ 1 x+γ 2 x^2 +γ 3 x^3 +γ4 x^4 \] \[log(ν)=δ 0 \] \[ τ=constante (implícita)\]
\[μ(x) =1.1268−1.68995x+3.22563x^2 −4.49433x^3 +1.82285x^4\] \[log(σ(x))=−2.7849−0.1013x−9.5413x^2 +24.7893x^3 −16.4381x^4\] \[log(ν)=0.39333\] \[ τ =≈constante (não //estimada) \]
\[μ(x)=β 0 +β 1 x+β 2 x^2 +β 3 x^3 +β 4 x^4 +β 5 x^5\]
Ajustando com distbuição - family: Normal
mod_pol_5 <- gamlss(y_lm ~ x + I(x^2) + I(x^3) + I(x^4)+ I(x^5),
sigma.formula = ~ x + I(x^2) + I(x^3) + I(x^4)+ I(x^5),
family = NO)
summary(mod_pol_5) # não capturou sigma
plot(mod_pol_5) # resíduos assimétricos
wp(mod_pol_5) # precisa melhorar o ajuste dos resíduos
x⁴ e x⁵ não contribuem para a média (sem sifnificância)
σ: heterocedasticidade não foi capturada (somente β0 significativo)
dist_mod_pol_5 <- chooseDist(mod_pol_5, type="realAll") ; dist_mod_pol_5
best_dist_mod_pol_5 <- dist_mod_pol_5[c("TF2", "JSU","SST"),] ; best_dist_mod_pol_5
min(best_dist_mod_pol_5[,1]) # p/ k=2.00 #melhor dist SST
min(best_dist_mod_pol_5[,2]) # p/ k=3.84 #melhor dist SST
min(best_dist_mod_pol_5[,3]) # p/ k=6.74 #melhor dist SST
best_dist_mod_pol_5
SST apresentou mellhor distribuição
2 3.84 6.74 TF2 -2778.640 -2754.720 -2717.020 JSU -2826.835 -2801.075 -2760.475 SST -2827.995 -2802.235 -2761.635
mod_pol_5_1 <- gamlss(y_lm ~ x + I(x^2) + I(x^3) + I(x^4)+ I(x^5),
sigma.formula = ~ x + I(x^2) + I(x^3) + I(x^4) + I(x^5),
family = SST)
summary(mod_pol_5_1)
plot(mod_pol_5_1)
wp(mod_pol_5_1) # adequado
μ(x)= coeficientes estatisticamente significativos (p < 0.001, exceto x⁵ que ainda é significativo p = 0.000115).
Sinais alternados (- + - + -) indicam múltiplas mudanças de concavidade ao longo da altura: Permite capturar detalhes finos do afilamento do tronco. o polinômio de 5º grau é capaz de modelar com precisão pequenas irregularidades na forma do fuste que não seriam capturadas com polinômios de grau menor
log(σ(x))= apenas o termo x⁵ é significativo (p = 0.0386), x e x⁴ têm significância marginal (p < 0.1).
Isso indica que a variabilidade muda ao longo da altura, mas de forma complexa e não linear.
Assimetria (ν) = exp(0.39461) ≈ 1.484, significativa (p < 0.001)
Indica assimetria positiva, ou seja, a cauda direita é mais longa
O modelo de Hradetsky é uma generalização polinomial contínua, mas em vez de usar apenas potências inteiras (x², x³…), ele usa uma série de potências fracionárias ou pequenas sobre a variável independente x.
A ideia \[ y=f(x)+ϵ\] com: \[ f(x)= i ∑ βix^p i \]
o modelo tenta capturar padrões não-lineares complexos em x usando várias potências fracionárias e inteiras.
pot1 <- seq(0.005, 0.01, by = 0.001) ; pot1 # pequenos expoentes <0.01
pot2 <- seq(0.01, 0.1, by = 0.01) ; pot2 # pequenos expoentes 0.01-0.1
pot3 <- seq(0.1, 1, by = 0.1) ; pot3 # 0.1-1
pot4 <- seq(1, 30, by = 1) ; pot4 # grandes expoentes 1-30
m.hrad <- gamlss(y_lm ~ I(x^0.005) + I(x^pot1[2]) + I(x^pot1[3])+ I(x^pot1[4]) + I(x^pot1[5]) + I(x^pot1[6]) +
I(x^pot2[1]) + I(x^pot2[2]) + I(x^pot2[3])+ I(x^pot2[4]) + I(x^pot2[5]) + I(x^pot2[6]) + I(x^pot2[7]) + I(x^pot2[8])+ I(x^pot2[9]) + I(x^pot2[10]) +
I(x^pot3[1]) + I(x^pot3[2]) + I(x^pot3[3])+ I(x^pot3[4]) + I(x^pot3[5]) + I(x^pot3[6]) + I(x^pot3[7]) + I(x^pot3[8])+ I(x^pot3[9]) + I(x^pot3[10]) +
I(x^pot4[1]) + I(x^pot4[2]) + I(x^pot4[3])+ I(x^pot4[4]) + I(x^pot4[5]) + I(x^pot4[6]) + I(x^pot4[7]) + I(x^pot4[8])+ I(x^pot4[9]) + I(x^pot4[10]) +
I(x^pot4[11]) + I(x^pot4[12]) + I(x^pot4[13])+ I(x^pot4[14]) + I(x^pot4[15]) + I(x^pot4[16]) + I(x^pot4[17]) + I(x^pot4[18])+ I(x^pot4[19]) + I(x^pot4[20]) +
I(x^pot4[21]) + I(x^pot4[22]) + I(x^pot4[23])+ I(x^pot4[24]) + I(x^pot4[25]) + I(x^pot4[26]) + I(x^pot4[27]) + I(x^pot4[28])+ I(x^pot4[29]) + I(x^pot4[30])
#sigma.formula = ~ I(x^0.005) + I(x^pot1[2]) + I(x^pot1[3])+ I(x^pot1[4]) + I(x^pot1[5]) + I(x^pot1[6]) +
#I(x^pot2[1]) + I(x^pot2[2]) + I(x^pot2[3])+ I(x^pot2[4]) + I(x^pot2[5]) + I(x^pot2[6]) + I(x^pot2[7]) + I(x^pot2[8])+ I(x^pot2[9]) + I(x^pot2[10]) +
#I(x^pot3[1]) + I(x^pot3[2]) + I(x^pot3[3])+ I(x^pot3[4]) + I(x^pot3[5]) + I(x^pot3[6]) + I(x^pot3[7]) + I(x^pot3[8])+ I(x^pot3[9]) + I(x^pot3[10]) +
#I(x^pot4[1]) + I(x^pot4[2]) + I(x^pot4[3])+ I(x^pot4[4]) + I(x^pot4[5]) + I(x^pot4[6]) + I(x^pot4[7]) + I(x^pot4[8])+ I(x^pot4[9]) + I(x^pot4[10]) +
#I(x^pot4[11]) + I(x^pot4[12]) + I(x^pot4[13])+ I(x^pot4[14]) + I(x^pot4[15]) + I(x^pot4[16]) + I(x^pot4[17]) + I(x^pot4[18])+ I(x^pot4[19]) + I(x^pot4[20]) +
#I(x^pot4[21]) + I(x^pot4[22]) + I(x^pot4[23])+ I(x^pot4[24]) + I(x^pot4[25]) + I(x^pot4[26]) + I(x^pot4[27]) + I(x^pot4[28])+ I(x^pot4[29]) + I(x^pot4[30]),
)
summary(m.hrad)
plot(m.hrad) # assimetria
wp(m.hrad) # não estimou bem os residuos
media = 4.448e-12
variancia = 1.001183 → aproximadamente 1, consistente com Normal
v = 1.294, bastante assimetria
t = 7.363, alta curtose, presença de outliers ou caudas pesadas
Filliben correlation = 0.9658, qq-plot ainda razoável, mas menor que modelos mais simples
O modelo não conseguiu capturar bem a forma da distribuição residual.
Há resíduos assimétricos e caudas pesadas, mesmo com tantas potências.
Isso sugere que a distribuição Normal pode não ser adequada para o Hradetsky ou que o modelo está muito instável.
dist_m.hrad <- chooseDist(m.hrad, type="realAll") ; dist_m.hrad
best_dist_m.hrad <- dist_m.hrad[c("TF2","JSU","SST"),] ; best_dist_m.hrad
best_dist_m.hrad <- na.omit(best_dist_m.hrad)
min(best_dist_m.hrad[,1]) # p/ k=2.00 #melhor dist SST
min(best_dist_m.hrad[,2]) # p/ k=3.84 #melhor dist SST
min(best_dist_m.hrad[,3]) # p/ k=6.74 #melhor dist SST
best_dist_m.hrad # SST
m.hrad_1 <- gamlss(y_lm ~ I(x^0.005) + I(x^pot1[2]) + I(x^pot1[3])+ I(x^pot1[4]) + I(x^pot1[5]) + I(x^pot1[6]) +
I(x^pot2[1]) + I(x^pot2[2]) + I(x^pot2[3])+ I(x^pot2[4]) + I(x^pot2[5]) + I(x^pot2[6]) + I(x^pot2[7]) + I(x^pot2[8])+ I(x^pot2[9]) + I(x^pot2[10]) +
I(x^pot3[1]) + I(x^pot3[2]) + I(x^pot3[3])+ I(x^pot3[4]) + I(x^pot3[5]) + I(x^pot3[6]) + I(x^pot3[7]) + I(x^pot3[8])+ I(x^pot3[9]) + I(x^pot3[10]) +
I(x^pot4[1]) + I(x^pot4[2]) + I(x^pot4[3])+ I(x^pot4[4]) + I(x^pot4[5]) + I(x^pot4[6]) + I(x^pot4[7]) + I(x^pot4[8])+ I(x^pot4[9]) + I(x^pot4[10]) +
I(x^pot4[11]) + I(x^pot4[12]) + I(x^pot4[13])+ I(x^pot4[14]) + I(x^pot4[15]) + I(x^pot4[16]) + I(x^pot4[17]) + I(x^pot4[18])+ I(x^pot4[19]) + I(x^pot4[20]) +
I(x^pot4[21]) + I(x^pot4[22]) + I(x^pot4[23])+ I(x^pot4[24]) + I(x^pot4[25]) + I(x^pot4[26]) + I(x^pot4[27]) + I(x^pot4[28])+ I(x^pot4[29]) + I(x^pot4[30]),
#sigma.formula = ~ I(x^0.005) + I(x^pot1[2]) + I(x^pot1[3])+ I(x^pot1[4]) + I(x^pot1[5]) + I(x^pot1[6]) +
#I(x^pot2[1]) + I(x^pot2[2]) + I(x^pot2[3])+ I(x^pot2[4]) + I(x^pot2[5]) + I(x^pot2[6]) + I(x^pot2[7]) + I(x^pot2[8])+ I(x^pot2[9]) + I(x^pot2[10]) +
#I(x^pot3[1]) + I(x^pot3[2]) + I(x^pot3[3])+ I(x^pot3[4]) + I(x^pot3[5]) + I(x^pot3[6]) + I(x^pot3[7]) + I(x^pot3[8])+ I(x^pot3[9]) + I(x^pot3[10]) +
#I(x^pot4[1]) + I(x^pot4[2]) + I(x^pot4[3])+ I(x^pot4[4]) + I(x^pot4[5]) + I(x^pot4[6]) + I(x^pot4[7]) + I(x^pot4[8])+ I(x^pot4[9]) + I(x^pot4[10]) +
#I(x^pot4[11]) + I(x^pot4[12]) + I(x^pot4[13])+ I(x^pot4[14]) + I(x^pot4[15]) + I(x^pot4[16]) + I(x^pot4[17]) + I(x^pot4[18])+ I(x^pot4[19]) + I(x^pot4[20]) +
#I(x^pot4[21]) + I(x^pot4[22]) + I(x^pot4[23])+ I(x^pot4[24]) + I(x^pot4[25]) + I(x^pot4[26]) + I(x^pot4[27]) + I(x^pot4[28])+ I(x^pot4[29]) + I(x^pot4[30]),
family = SST)
summary(m.hrad_1) #apenas intercepto significativo
plot(m.hrad_1)
wp(m.hrad_1) # melhorou, resíduos abaixo do intervalo de confiança
| Parâmetro | Interpretação | Valor estimado | Significância |
|---|---|---|---|
| Sigma | dispersão da Normal | -2.985 | *** |
| Nu | assimetria | 0.429 | *** |
| Tau | caudas pesadas | 0.993 | *** |
significativos estatisticamente
mean = -0.0026: bom
variance = 1.0069: quase 1, consistente
skewness = 0.05: resíduos quase simétricos
kurtosis = 2.94: levemente leptocúrticos, perto de Normal
Filliben correlation = 0.99897: qq-plot praticamente perfeito Os resíduos estão aproximadamente normais, simétricos e sem outliers extremos.
O modelo Hradetsky ajustado com a distribuição SST ajusta a relação complexa entre y e x muito melhor do que polinômios de grau 5 ou Hradetsky com Normal. Ele lida com assimetria e caudas pesadas, resultando em resíduos quase normais e ajuste confiável.