Modelos aditivos generalizados (GAMs), interações e covariáveis


12

Eu estive explorando várias ferramentas de previsão e constatei que os Modelos Aditivos Generalizados (GAMs) têm o maior potencial para essa finalidade. GAMs são ótimos! Eles permitem que modelos complexos sejam especificados de maneira muito sucinta. No entanto, essa mesma sucessão está me causando alguma confusão, especificamente no que diz respeito à forma como os GAMs concebem termos e covariáveis ​​de interação.

Considere um exemplo de conjunto de dados (código reproduzível no final do post) no qual yé uma função monotônica perturbada por alguns gaussianos, além de algum ruído:

insira a descrição da imagem aqui

O conjunto de dados possui algumas variáveis ​​preditoras:

  • x: O índice dos dados (1-100).
  • w: Um recurso secundário que marca as seções em yque um gaussiano está presente. wpossui valores de 1 a 20, xentre 11 e 30 e 51 a 70. Caso contrário, wé 0.
  • w2: w + 1, para que não haja 0 valores.

O mgcvpacote de R facilita a especificação de vários modelos possíveis para esses dados:

insira a descrição da imagem aqui

Os modelos 1 e 2 são bastante intuitivos. Prever yapenas a partir do valor do índice na xsuavidade padrão produz algo vagamente correto, mas suave demais. Prever yapenas a partir de wresultados em um modelo do "gaussiano médio" presente em y, e nenhuma "conscientização" dos outros pontos de dados, todos com o wvalor 0.

O modelo 3 usa ambos xe wcomo 1D suaviza, produzindo um bom ajuste. O modelo 4 usa xe wem um 2D suave, também dando um bom ajuste. Esses dois modelos são muito semelhantes, embora não sejam idênticos.

Modelo 5 modelos x"por" w. O modelo 6 faz o oposto. mgcvA documentação de 'afirma que "o argumento by garante que a função suave seja multiplicada por [a covariável fornecida no argumento' by ']". Os modelos 5 e 6 não deveriam ser equivalentes?

Os modelos 7 e 8 usam um dos preditores como um termo linear. Isso faz sentido para mim, pois eles estão simplesmente fazendo o que um GLM faria com esses preditores e adicionando o efeito ao restante do modelo.

Por fim, o Modelo 9 é igual ao Modelo 5, exceto que xé suavizado "por" w2(que é w + 1). O que é estranho para mim aqui é que a ausência de zeros w2produz um efeito notavelmente diferente na interação "por".

Então, minhas perguntas são estas:

  • Qual é a diferença entre as especificações nos modelos 3 e 4? Existe algum outro exemplo que destacaria a diferença mais claramente?
  • O que exatamente "está" fazendo aqui? Muito do que li no livro de Wood e neste site sugere que "by" produz um efeito multiplicativo, mas estou tendo problemas para entender a intuição.
  • Por que haveria uma diferença tão notável entre os modelos 5 e 9?

Reprex segue, escrito em 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)

É um pouco anti-social para o pessoal aqui usar o pacote arrumado como uma dependência do reprex; Eu uso alguns desses pacotes e ainda assim exigi um festival de instalação apenas para executar seu código. Mínimo , ou seja, listar apenas os pacotes necessários, teria sido mais útil. Dito isto, obrigado pelo reprex; Estou executando agora
Reinstate Monica - G. Simpson

Respostas:


11

Q1 Qual é a diferença entre os modelos 3 e 4?

O modelo 3 é um modelo puramente aditivo

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

αxw

O modelo 4 é uma interação suave de duas variáveis ​​contínuas

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

WxxWf1(x)predict()xwtype = 'terms'predict()s(x)

xw

xwte()

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')

insira a descrição da imagem aqui

Em certo sentido, o modelo 4 é adequado

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

f3xwf3

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

mas observe que isso estima quatro parâmetros de suavidade:

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

O te()modelo contém apenas dois parâmetros de suavidade, um por base marginal.

www2

Q2 O que exatamente "está" fazendo aqui?

bybybywwx

y=α+f1(x)w+ε

xβ1wwxx

Q3 Por que haveria uma diferença tão notável entre os modelos 5 e 9?

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

www


Essa é uma resposta útil para o primeiro trimestre, obrigado! A escolha de somas de suavizações 1D ou uma única suavização 2D parece mais ou menos (novamente, mais ou menos ) análoga aos efeitos principais vs. interações na modelagem linear padrão. Mas isso torna a existência do byparâmetro ainda mais desconcertante.
Jdobres

Eu adicionei algo no segundo trimestre agora, o que espero explicar o que esses modelos estão fazendo. Vou dar uma olhada no terceiro trimestre agora.
Reinstate Monica - G. Simpson

Eu acho que a resposta para o terceiro trimestre é apenas uma questão simples de interação aritmética com a parte com coeficiente variável dos modelos de 5 e 9.
Reinstate Monica - G. Simpson -

Muito útil! Para esclarecer Q2, você está dizendo que o preditor fornecido no argumento "por" se torna essencialmente um coeficiente extra para o resultado do preditor suavizado? Eu suspeito que a minha intuição está errada, como deveria levar a Modelo 5 olhando semelhante ao Modelo 2.
jdobres

α+f1(w)α+f1(x)wwwxwwxw
Reinstate Monica - G. Simpson
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.