Uogólnione modele addytywne (GAM), interakcje i zmienne towarzyszące

12

Eksplorowałem szereg narzędzi do prognozowania i odkryłem, że Uogólnione Modele Addytywne (GAM) mają największy potencjał do tego celu. GRY są świetne! Pozwalają na bardzo zwięzłe określenie złożonych modeli. Jednak ta sama zwięzłość powoduje pewne zamieszanie, szczególnie w odniesieniu do tego, w jaki sposób GAM postrzegają terminy interakcji i zmienne towarzyszące.

Rozważ przykładowy zestaw danych (odtwarzalny kod na końcu postu), w którym yjest monotoniczna funkcja zakłócona przez kilku gaussów, plus trochę szumu:

wprowadź opis zdjęcia tutaj

Zestaw danych ma kilka zmiennych predykcyjnych:

  • x: Indeks danych (1-100).
  • w: Drugorzędna cecha, która wyznacza sekcje, w yktórych obecny jest gaussian. wma wartości 1-20, gdzie xjest między 11 a 30, i 51 do 70. W przeciwnym razie wwynosi 0.
  • w2: w + 1, aby nie było 0 wartości.

mgcvPakiet R ułatwia określenie szeregu możliwych modeli tych danych:

wprowadź opis zdjęcia tutaj

Modele 1 i 2 są dość intuicyjne. Prognozowanie ytylko na podstawie wartości indeksu w xdomyślnej gładkości powoduje coś niejasno poprawnego, ale zbyt płynnego. Prognozowanie ytylko na podstawie wwyników w modelu „przeciętnego gaussa” obecnego w y, i brak „świadomości” innych punktów danych, z których wszystkie mają wwartość 0.

Model 3 wykorzystuje zarówno wygładzanie 1D, jak xi wzapewnia dobre dopasowanie. Model 4 zastosowania xoraz ww 2D gładka, również dając piękny dopasowanie. Te dwa modele są bardzo podobne, choć nie identyczne.

Model 5 modeli x„przez” w. Model 6 robi odwrotnie. mgcvDokumentacja stwierdza, że ​​„argument przez zapewnia, że ​​funkcja gładka zostaje pomnożona przez [zmienną podaną w argumencie„ przez ”]. Czy zatem modele 5 i 6 nie powinny być równoważne?

Modele 7 i 8 wykorzystują jeden z predyktorów jako termin liniowy. Są dla mnie intuicyjne, ponieważ robią po prostu to, co GLM zrobiłby z tymi predyktorami, a następnie dodają efekt do reszty modelu.

Wreszcie, Model 9 jest taki sam jak Model 5, z tą różnicą, że xjest wygładzany „przez” w2(czyli jest w + 1). Dziwne dla mnie jest to, że brak zer w w2wywołuje znacząco inny efekt w interakcji „przez”.

Więc moje pytania są następujące:

  • Jaka jest różnica między specyfikacjami w modelach 3 i 4? Czy jest jakiś inny przykład, który lepiej uwidoczniłby różnicę?
  • Czym dokładnie jest „robienie” tutaj? Wiele z tego, co przeczytałem w książce Wooda i na tej stronie, sugeruje, że „przez” daje efekt multiplikatywny, ale mam problem z uchwyceniem intuicji.
  • Dlaczego miałaby być tak zauważalna różnica między modelami 5 i 9?

Następuje reprex napisany w 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
źródło
Ludzie są trochę antyspołeczni, aby używać pakietu tidyverse jako zależności przedrostka; Używam całkiem sporo z tych pakietów i wciąż potrzebuję festu instalacyjnego, żeby uruchomić twój kod. Minimalna , tj. Wyświetlenie tylko potrzebnych pakietów, byłaby bardziej przydatna. To powiedziawszy, dziękuję za przedrostek; Właśnie go uruchamiam
Przywróć Monikę - G. Simpson,

Odpowiedzi:

11

P1 Jaka jest różnica między modelami 3 i 4?

Model 3 jest modelem czysto addytywnym

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

αxw

Model 4 jest płynną interakcją dwóch zmiennych ciągłych

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

wprowadź opis zdjęcia tutaj

W pewnym sensie pasuje model 4

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

f3xwf3

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

ale zwróć uwagę, że szacuje 4 parametry gładkości:

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

te()Model zawiera tylko dwa parametry gładkość, jeden na podstawie marginalnej.

www2

Q2 Czym dokładnie jest „wykonanie” tutaj?

bybybywwx

y=α+f1(x)w+ε

xβ1wwxx

P3 Dlaczego miałaby być tak zauważalna różnica między modelami 5 i 9?

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

www

Przywróć Monikę - G. Simpson
źródło
To przydatna odpowiedź na pierwszy kwartał, dzięki! Wybór sum gładkości 1D lub pojedynczej gładkości 2D wydaje się z grubsza (ponownie, z grubsza ) analogiczny do głównych efektów vs. interakcje w standardowym modelowaniu liniowym. Ale to sprawia, że ​​istnienie byparametru jest jeszcze bardziej kłopotliwe.
jdobres,
Dodałem teraz coś do Q2, które, mam nadzieję, wyjaśnia, co robią te modele. Spojrzę teraz na Q3.
Przywróć Monikę - G. Simpson,
Myślę, że odpowiedź na trzeci kwartał jest po prostu kwestią interakcji arytmetycznej z tym, co zmienna część modeli w 5 i 9.
Przywróć Monikę - G. Simpson
Bardzo pomocne! Aby wyjaśnić pytanie 2, czy mówisz, że predyktor podany w argumencie „przez” zasadniczo staje się dodatkowym współczynnikiem dla wyniku wygładzonego predyktora? Podejrzewam, że moja intuicja jest błędna, ponieważ powinna doprowadzić do tego, że Model 5 będzie wyglądał podobnie do Modelu 2.
jdobres
α+f1(w)α+f1(x)wwwxwwxw
Przywróć Monikę - G. Simpson,