Modèles additifs généralisés (GAM), interactions et covariables

12

J'ai exploré un certain nombre d'outils de prévision et j'ai trouvé que les modèles additifs généralisés (GAM) avaient le plus de potentiel à cette fin. Les GAM sont super! Ils permettent de spécifier très succinctement des modèles complexes. Cependant, cette même concision me cause une certaine confusion, en particulier en ce qui concerne la façon dont les GAM conçoivent les termes d'interaction et les covariables.

Prenons un exemple d'ensemble de données (code reproductible à la fin de l'article) dans lequel se ytrouve une fonction monotone perturbée par quelques gaussiens, plus du bruit:

entrez la description de l'image ici

L'ensemble de données comporte quelques variables prédictives:

  • x: L'index des données (1-100).
  • w: Une caractéristique secondaire qui délimite les sections yoù un gaussien est présent. wa des valeurs de 1 à 20 où se xsitue entre 11 et 30, et 51 à 70. Sinon, west 0.
  • w2: w + 1, pour qu'il n'y ait pas de valeur 0.

Le mgcvpackage de R facilite la spécification d'un certain nombre de modèles possibles pour ces données:

entrez la description de l'image ici

Les modèles 1 et 2 sont assez intuitifs. Prédire yuniquement à partir de la valeur d'index dans xle lissage par défaut produit quelque chose de vaguement correct, mais trop lisse. Prédire yuniquement à partir des wrésultats dans un modèle de la «moyenne gaussienne» présente dans yles autres points de données, et aucune «prise de conscience», qui ont tous une wvaleur de 0.

Le modèle 3 utilise à la fois xet en wtant que lisses 1D, produisant un ajustement agréable. Le modèle 4 utilise xet wdans un 2D lisse, donnant également un bon ajustement. Ces deux modèles sont très similaires, mais pas identiques.

Modèle 5 modèles x"par" w. Le modèle 6 fait le contraire. mgcvLa documentation de 'stipule que "l'argument by garantit que la fonction lisse est multipliée par [la covariable donnée dans l'argument" by "]". Les modèles 5 et 6 ne devraient-ils donc pas être équivalents?

Les modèles 7 et 8 utilisent l'un des prédicteurs comme terme linéaire. Cela a un sens intuitif pour moi, car ils font simplement ce qu'un GLM ferait avec ces prédicteurs, puis ajoutent l'effet au reste du modèle.

Enfin, le modèle 9 est le même que le modèle 5, sauf qu'il xest lissé "par" w2(qui est w + 1). Ce qui est étrange pour moi ici, c'est que l'absence de zéros dans w2produit un effet remarquablement différent dans l'interaction "par".

Donc, mes questions sont les suivantes:

  • Quelle est la différence entre les spécifications des modèles 3 et 4? Y a-t-il un autre exemple qui ferait mieux ressortir la différence?
  • Que fait exactement "en" ici? Une grande partie de ce que j'ai lu dans le livre de Wood et ce site Web suggère que "par" produit un effet multiplicatif, mais j'ai du mal à en saisir l'intuition.
  • Pourquoi y aurait-il une différence aussi notable entre les modèles 5 et 9?

Reprex suit, écrit en R.

library(magrittr)
library(tidyverse)
library(mgcv)

set.seed(1222)
data.ex <- tibble(
  x = 1:100,
  w = c(rep(0, 10), 1:20, rep(0, 20), 1:20, rep(0, 30)),
  w2 = w + 1,
  y = dnorm(x, mean = rep(c(20, 60), each = 50), sd = 3) + (seq(0, 1, length = 100)^2) / 2 + rnorm(100, sd = 0.01)
)

models <- tibble(
  model = 1:9,
  formula = c('y ~ s(x)', 'y ~ s(w)', 'y ~ s(x) + s(w)', 'y ~ s(x, w)', 'y ~ s(x, by = w)', 'y ~ s(w, by = x)', 'y ~ x + s(w)', 'y ~ w + s(x)', 'y ~ s(x, by = w2)'),
  gam = map(formula, function(x) gam(as.formula(x), data = data.ex)),
  data.to.plot = map(gam, function(x) cbind(data.ex, predicted = predict(x)))
)

plot.models <- unnest(models, data.to.plot) %>%
  mutate(facet = sprintf('%i: %s', model, formula)) %>%
  ggplot(data = ., aes(x = x, y = y)) +
  geom_point() +
  geom_line(aes(y = predicted), color = 'red') +
  facet_wrap(facets = ~facet)
print(plot.models)
jdobres
la source
C'est un peu antisocial pour les gens ici d'utiliser le package tidyverse comme dépendance du reprex; J'utilise pas mal de ces packages et j'ai toujours eu besoin d'un fest d'installation juste pour exécuter votre code. Un minimum , c'est-à-dire répertorier uniquement les packages nécessaires, aurait été plus utile. Cela dit, merci pour le reprex; Je suis en train de le faire fonctionner maintenant
Rétablir Monica - G. Simpson

Réponses:

11

Q1 Quelle est la différence entre les modèles 3 et 4?

Le modèle 3 est un modèle purement additif

y=α+f1(x)+f2(w)+ε

nous avons donc une constante plus l'effet lisse de plus l'effet lisse de .x wαxw

Le modèle 4 est une interaction fluide de deux variables continues

y=α+f1(x,w)+ε

Dans un sens pratique, le modèle 3 dit que quel que soit l'effet de , l'effet de sur la réponse est le même; si nous fixons à une valeur connue et faisons varier sur une certaine plage, les contributions de au modèle ajusté restent les mêmes. Vérifiez ceci si vous voulez dériver du modèle 3 pour une valeur fixe de et quelques valeurs différentes de et utilisez l' argument de la méthode. Vous verrez une contribution constante aux valeurs ajustées / prévues pour .x x w f 1 ( x )wxxwf1(x)predict()xwtype = 'terms'predict()s(x)

Ce n'est pas le cas du modèle 4; ce modèle dit que l'effet lisse de varie en douceur avec la valeur de et vice versa.wxw

Notez que sauf si et sont dans les mêmes unités ou si nous nous attendons à la même ondulation dans les deux variables, vous devez utiliser pour ajuster l'interaction.wxwte()

m4a <- gam(y ~ te(x, w), data = data.ex, method = 'REML')

pdata <- mutate(data.ex, Fittedm4a = predict(m4a))
ggplot(pdata, aes(x = x, y = y)) +
  geom_point() +
  geom_line(aes(y = Fittedm4a), col = 'red')

entrez la description de l'image ici

Dans un sens, le modèle 4 convient

y=α+f1(x)+f2(w)+f3(x,w)+ε

f3xwf3

m4b <- gam(y ~ ti(x) + ti(w) + ti(x, w), data = data.ex, method = 'REML')

mais notez que cela estime 4 paramètres de lissage:

  1. x
  2. w
  3. x
  4. w

Le te()modèle ne contient que deux paramètres de lissage, un par base marginale.

www2

Q2 Que fait exactement "en" ici?

bybybywwx

y=α+f1(x)w+ε

xβ1wwxx

Q3 Pourquoi y aurait-il une différence aussi notable entre les modèles 5 et 9?

f1(x)wf1(x)×0=0f1(x)×1=f1(x)wf1(x)w

www

Réintégrer Monica - G. Simpson
la source
C'est une réponse utile au premier trimestre, merci! Le choix des sommes de lissages 1D ou d'un seul lissage 2D semble à peu près (encore une fois ) à peu près analogue aux effets principaux par rapport aux interactions dans la modélisation linéaire standard. Mais cela rend d' byautant plus perplexe l'existence du paramètre.
jdobres
J'ai ajouté quelque chose sur Q2 maintenant, qui, espérons-le, explique ce que font ces modèles. Je vais maintenant regarder Q3.
Rétablir Monica - G. Simpson
Je pense que la réponse au Q3 est juste une simple question d'interaction arithmétique avec ce que la partie à coefficient variable des modèles en 5 et 9.
Rétablir Monica - G. Simpson
Très utile! Pour clarifier Q2, dites-vous que le prédicteur fourni dans l'argument "par" devient essentiellement un coefficient supplémentaire pour le résultat du prédicteur lissé? Je soupçonne que mon intuition est fausse, car cela devrait conduire à un modèle 5 ressemblant au modèle 2.
jdobres
α+f1(w)α+f1(x)wwwxwwxw
Rétablir Monica - G. Simpson