Wood et al. (2015) ont étudié la croissance de Abies balsamea. Ils réalisent différents modèles linéaires et non linéaires et mettent en évidence que le modèle de Gompertz est le plus approprié.
abies <- read("../data/data_raw/abies.csv")
## Rows: 1959 Columns: 4
## ── Column specification ────────────────────────────────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (4): HEIGHT, DIAMETER, ELEVATION, CANOPYHEIGHT
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
chart(data = abies, HEIGHT ~ DIAMETER) +
geom_point() +
labs(x = "Diamètre", y = "Hauteur [m]")

Ce graphique de la hauteur des arbres en fonction de leur diamètre permet de se rendre compte que lorsque diamètre augmente, la hauteur de l’abre augmente également.
abies_nls1 <- nls(data = abies, HEIGHT ~ SSlogis(DIAMETER, Asym, xmid, scal))
summary(abies_nls1)
##
## Formula: HEIGHT ~ SSlogis(DIAMETER, Asym, xmid, scal)
##
## Parameters:
## Estimate Std. Error t value Pr(>|t|)
## Asym 14.60949 0.16443 88.85 <2e-16 ***
## xmid 10.30983 0.15534 66.37 <2e-16 ***
## scal 5.15317 0.08832 58.34 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.173 on 1956 degrees of freedom
##
## Number of iterations to convergence: 5
## Achieved convergence tolerance: 1.738e-06
La dernière ligne, “achieved convergence” indique que le modèle a pu être calculé. Ici, nous obtenons Asym = 14.61, xmid = 10.31 et scal = 5.15.
\[ y = 5.15317x + 14.60949 \]
pgh_model <- function(x, HEIGHT_max, ELEVATION, CANOPYHEIGHT)
HEIGHT_max * (1 - exp(-x * ELEVATION/HEIGHT_max)) * (exp(-x * CANOPYHEIGHT/HEIGHT_max))
abies_nls2 <- nls(data = abies, HEIGHT ~ pgh_model(DIAMETER, HEIGHT_max, ELEVATION, CANOPYHEIGHT), start = list(HEIGHT_max = 19.94501, ELEVATION = 1, CANOPYHEIGHT = 0))
summary(abies_nls2)
##
## Formula: HEIGHT ~ pgh_model(DIAMETER, HEIGHT_max, ELEVATION, CANOPYHEIGHT)
##
## Parameters:
## Estimate Std. Error t value Pr(>|t|)
## HEIGHT_max 11.53631 1.41476 8.154 6.21e-16 ***
## ELEVATION 0.95784 0.01830 52.329 < 2e-16 ***
## CANOPYHEIGHT -0.14724 0.02016 -7.303 4.08e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.22 on 1956 degrees of freedom
##
## Number of iterations to convergence: 5
## Achieved convergence tolerance: 8.229e-06
La dernière ligne, “achieved convergence” indique que le modèle a pu être calculé. Ici, nous obtenons HEIGHT_max = 11.53, ELEVATION = 0.96 et CANOPYHEIGHT = -0.15.
\[ y = 0.95784x + 11.53630 \]
chart(data = abies, HEIGHT ~ DIAMETER) +
geom_point() +
labs(x = "Diamètre", y = "Hauteur [m]") +
stat_function(fun = as.function(abies_nls1), color = "green")

Ce modèle ne représente très bien le phénomène étudié, et il ne s’ajuste pas très bien.
chart(data = abies, HEIGHT ~ DIAMETER) +
geom_point() +
labs(x = "Diamètre", y = "Hauteur [m]") +
stat_function(fun = as.function(abies_nls2), color = "green")

Ce modèle représente très bien le phénomène étudié, et il s’ajuste d’ailleurs très bien.
AIC(abies_nls1, abies_nls2)
## # A data.frame: 2 x 2
## ` ` df AIC
## <rownames> <dbl> <dbl>
## 1 abies_nls1 4 6189.
## 2 abies_nls2 4 6343.
D’après le critère d’Akaike, le modèle 2 (nls2) est le moins bon, tandis que le modèle 1 (nls1), plus complexe est meilleur. Même si la différence est relativement faible entre les deux modèle.
Ici, l’avantage de cette analyse est la comparaison entre 2 modèles différents. Cela nous a permis de se rendre compte lequel est le plus interéssant Nous pouvons désormais dire que le modèle 2 est le plus interréssant.