-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodel_gam.Rmd
89 lines (55 loc) · 3.6 KB
/
model_gam.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
---
title: "GAM"
author: "State of the R"
date: "24-28/08/2020"
output:
html_document:
df_print: default
editor_options:
chunk_output_type: console
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
![](img/GAM.jpg)
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/stateofther/finistR2020/website?filepath=finistR2020_website/gam.Rmd)
## Références
Dans son livre, *Generalized Additive Models, An Introduction with R*, S. Wood commence par des rappels sur les modèles de régression linéaire simples et les GLM avant de présenter les modèles additifs généralisés (GAM) et différentes bases de splines ainsi que leur utilisation. Le livre coexiste avec le package R `mgcv` que nous avons utilisé dans la suite.
Une [formation GAM en R](https://noamross.github.io/gams-in-r-course/) est disponible sur le site RStudio Education et utilise également le package `mgcv`.
## Modèles additifs généralisés
Un modèle additif généralisé est un GLM dans lequel le prédicteur linéaire fait intervenir une somme de fonctions régulières des covariables.
Les modèles additifs généralisés ont une structure de la forme suivante
$$g(\mu_i)=A_i\theta+\sum_j f_j(x_{ji}),\, Y_i\sim\text{EF}(\mu_i,\phi)$$
où $Y_i$ est la variable réponse et $\text{EF}(\mu_i,\phi)$ est une distribution de famille exponentielle de moyenne $\mu_i$ et de paramètre d'échelle $\phi$ et $A_i\theta$ représente une componente paramétrique dans la modélisation.
Pour estimer les $f_j$, on les décompose sur une base de splines. On note $b_{jk}(x)$ la $k$ème fonction de la base de splines choisie, on suppose que $f_j$ s'écrit
$$f_j(x)=\sum_{k=1}^l b_{jk}(x)\beta_{jk},$$
avec $\beta_{jk}$ inconnu.
## Base de splines
On veut construire une base de $k$ fonctions splines $(s_1, \ldots, s_k)$. Pour ceci, on définit $k$ n\oe{}uds, par défaut les extrémités correspondent à $x_{min}$ et $x_{max}$.
Chaque fonction $s_i$ vaut 1 au noeud $i$ et $0$ aux autres n\oe{}uds. En outre. Chaque fonction spline (cubique) est le recollement de $k$ polynomes de degré 3 assurant une fonction de classe $C^2$ sur l'intervalle, comme illustré ci-dessous (extrait du livre de S. Wood).
![](img/spline.jpg)
```{r}
library(mgcv)
library(tidyverse)
library(MASS)
```
```{r}
Mods3 <- gam(accel~s(times,k=10,bs="cr"),data=mcycle)
gam.check(Mods3)
summary(Mods3)
```
$$Y_i = Z_i^T\theta + \sum_{j=1}^p \beta_j f_j(x_{i}) + \epsilon_i$$
où les $f_j$ forment une base de spline, $Z_i$ des variables utilisées comme dans un modèle linéaire, et $x_i$ la variable pour laquelle on utilise une spline. Notons qu'on peut avoir des splines multivariés et plusieurs splines dépendant de différentes variables.
Dans le tableau, `Parametric Coefficients` correspond à la partie des effets linéaires et la partie smooth terms correspond au test sur la variable dont dépend le spline.
La dernière partie contient des informations sur la qualité d'ajustement du modèle type $R^2$ et variance estimée.
Ce tableau contient les $\beta_j$ devant les splines :
```{r}
coef(Mods3)
```
## Autres références :
- Elements of Statistical learning. Hastie et al.
- [Site avec exemple](https://m-clark.github.io/generalized-additive-models), les données sont [ici](https://github.com/m-clark/generalized-additive-models/tree/master/data)
- Generalized Additive Models, An Introduction with R, S. Wood
<!-- [Livre de Simon Wood](https://b-ok.cc/book/2945925/6817d4) -->
- [autre ref](http://environmentalcomputing.net/intro-to-gams/)
- [formation GAM en R](https://noamross.github.io/gams-in-r-course/)