Cours n°01 : Introduction à l’inférence bayésienne Cours n°02 : Modèle Beta-Binomial Cours n°03 : Introduction à brms, modèle de régression linéaire Cours n°04 : Modèle de régression linéaire (suite) Cours n°05 : Markov Chain Monte Carlo Cours n°06 : Modèle linéaire généralisé Cours n°07 : Comparaison de modèles Cours n°08 : Modèles multi-niveaux Cours n°09 : Modèles multi-niveaux généralisés Cours n°10 : Data Hackathon
Le modèle linéaire Gaussien qu’on a vu aux Cours n°03 et n°04 est caractérisé par un ensemble de postulats, entre autres choses :
Les résidus sont distribués selon une loi Normale.
La variance de cette distribution Normale est constante (postulat d’homogénéité de la variance).
Les prédicteurs agissent sur la moyenne de cette distribution.
La moyenne suit un modèle linéaire ou multi-linéaire.
Introduction
Cette modélisation (le choix d’une distribution Normale) induit plusieurs contraintes, par exemple :
Les données observées sont définies sur un espace continu.
Cet espace n’est pas borné.
Comment modéliser certaines données qui ne respectent pas ces contraintes ? Par exemple, la proportion de bonnes réponses à un test (bornée entre 0 et 1), un temps de réponse (restreint à des valeurs positives et souvent distribué de manière approximativement log-normale), un nombre d’avalanches…
Introduction
Nous avons déjà rencontré un modèle différent : le modèle Beta-Binomial (cf. Cours n°02).
Rendre compte de données discrètes (e.g., échec/succès) générées par un processus unique.
Introduire des prédicteurs dans le modèle.
Deux changements par rapport au modèle Gaussien :
L’utilisation d’une distribution de probabilité Binomiale.
Le modèle linéaire ne sert plus à décrire directement un des paramètres de la distribution, mais une fonction de ce paramètre (on peut aussi considérer que le modèle Gaussien était formulé avec une fonction identité).
Fonction de lien
Les fonctions de lien ont pour tâche de mettre en correspondance l’espace d’un modèle linéaire (non borné) avec l’espace d’un paramètre potentiellement borné comme une probabilité, définie sur l’intervalle \([0, 1]\).
Fonction de lien
Les fonctions de lien ont pour tâche de mettre en correspondance l’espace d’un modèle linéaire (non borné) avec l’espace d’un paramètre potentiellement borné comme une probabilité, définie sur l’intervalle \([0, 1]\).
Régression logistique
La fonction logit du GLM binomial (on parle de “log-odds”) :
La cote d’un évènement (“odds” en anglais) est le ratio entre la probabilité que l’évènement se produise et la probabilité qu’il ne se produise pas. Le logarithme de cette cote est prédit par un modèle linéaire.
Ces fonctions de lien posent des problèmes d’interprétation : Un changement d’une unité sur un prédicteur n’a plus un effet constant sur la probabilité mais la modifie plus ou moins en fonction de son éloignement à l’origine. Quand \(x = 0\), une augmentation d’une demi-unité (i.e., \(\Delta x = 0.5\)) se traduit par une augmentation de la probabilité de \(0.25\). Puis, chaque augmentation d’une demi-unité se traduit par une augmentation de \(p\) de plus en plus petite…
Complications induites par la fonction de lien
Deuxième complication : cette fonction de lien “force” chaque prédicteur à interagir avec lui même et à interagir avec TOUS les autres prédicteurs, même si les interactions ne sont pas explicites…
Dans un modèle Gaussien, le taux de changement de \(y\) en fonction de \(x\) est donné par \(\partial(\alpha + \beta x)~/~\partial x = \beta\) et ne dépend pas de \(x\) (i.e., \(\beta\) est constant).
Dans un GLM binomial (avec une fonction de lien logit), la probabilité d’un évènement est donnée par la fonction logistique :
'data.frame': 504 obs. of 8 variables:
$ actor : int 1 1 1 1 1 1 1 1 1 1 ...
$ recipient : int NA NA NA NA NA NA NA NA NA NA ...
$ condition : int 0 0 0 0 0 0 0 0 0 0 ...
$ block : int 1 1 1 1 1 1 2 2 2 2 ...
$ trial : int 2 4 6 8 10 12 14 16 18 20 ...
$ prosoc_left : int 0 0 1 0 1 1 1 1 0 0 ...
$ chose_prosoc: int 1 0 0 1 1 1 0 0 1 1 ...
$ pulled_left : int 0 1 0 0 1 1 0 0 0 0 ...
pulled_left : 1 lorsque le chimpanzé pousse le levier gauche, 0 sinon.
prosoc_left : 1 lorsque le levier gauche est associé à l’option prosociale, 0 sinon.
condition : 1 lorsqu’un partenaire est présent, 0 sinon.
Régression logistique
Le problème
On cherche à savoir si la présence d’un singe partenaire incite le chimpanzé à appuyer sur le levier prosocial, c’est à dire l’option qui donne de la nourriture aux deux individus. Autrement dit, est-ce qu’il existe une interaction entre l’effet de la latéralité et l’effet de la présence d’un autre chimpanzé sur la probabilité d’actionner le levier gauche.
Les variables
Observations (pulled_left) : Ce sont des variables de Bernoulli. Elles prennent comme valeur 0/1.
Prédicteur (prosoc_left) : Est-ce que les deux plats sont sur la gauche ou sur la droite ?
Prédicteur (condition) : Est-ce qu’un partenaire est présent ?
Modèle mathématique sans prédicteur. Comment choisir une valeur pour \(\omega\)… ?
Prior predictive check
On écrit le modèle précédent avec brms et on échantillonne à partir du prior afin de vérifier que les prédictions du modèle (sur la base du prior seul) correspondent à nos attentes.
library(brms)mod1.1<-brm(# "trials" permet de définir le nombre d'essais (i.e., n)formula = pulled_left |trials(1) ~1,family =binomial(),prior =prior(normal(0, 10), class = Intercept),data = df1,# on veut récupérer les échantillons issus du priorsample_prior ="yes" )
Prior predictive check
# récupère les échantillons (sur la base) du priorprior_draws(x = mod1.1) %>%# applique la fonction de lien inversemutate(p = brms::inv_logit_scaled(Intercept) ) %>%ggplot(aes(x = p) ) +geom_density(fill ="steelblue", adjust =0.1) +labs(x ="Probabilité a priori de tirer le levier gauche", y ="Densité de probabilité")