Я досліджував цілий ряд інструментів для прогнозування і виявив, що узагальнені моделі добавок (GAM) мають найбільший потенціал для цієї мети. Ігри чудові! Вони дозволяють задавати складні моделі дуже стисло. Однак ця сама лаконічність викликає у мене певну плутанину, зокрема, стосовно того, як GAM сприймають терміни взаємодії та коваріати.
Розглянемо приклад набору даних (відтворюваного коду в кінці посту), в якому y
монотонна функція, обурена парою гаусів, плюс деякий шум:
Набір даних має кілька змінних прогнозів:
x
: Індекс даних (1-100).w
: Вторинна особливість, яка позначає розділи,y
де присутній гаусс.w
має значення 1-20, деx
знаходиться між 11 і 30, і 51 до 70. В іншому випадкуw
- 0.w2
:w + 1
, щоб не було 0 значень.
mgcv
Пакет R полегшує вказівку кількох можливих моделей для цих даних:
Моделі 1 і 2 досить інтуїтивно зрозумілі. Прогнозування y
лише від значення індексу у x
плавності за замовчуванням створює щось неясно правильне, але занадто гладке. Прогнозування y
лише за w
результатами в моделі "середнього гауса", яка присутня в y
, і не "усвідомлення" інших точок даних, всі вони мають w
значення 0.
Модель 3 використовує як x
і w
1D гладкі, створюючи приємну форму. Модель 4 використовує x
і w
в 2D гладкій, що також приємно підходить. Ці дві моделі дуже схожі, хоча і не тотожні.
Модель 5 моделей x
"від" w
. Модель 6 робить навпаки. mgcv
Документація "зазначає, що" аргумент by забезпечує, що гладка функція помножується на [ковариант, заданий в аргументі "на"]. Тож чи не повинні Моделі 5 та 6 бути еквівалентними?
Моделі 7 і 8 використовують один з предикторів як лінійний термін. Це має для мене інтуїтивний сенс, оскільки вони просто роблять те, що робитиме ГЛМ з цими прогнозами, а потім додають ефект до решти моделі.
Нарешті, Модель 9 така ж, як і модель 5, за винятком того, що x
вона згладжена "на" w2
(що є w + 1
). Для мене тут дивно, що відсутність нулів у w2
надзвичайно різному впливає на взаємодію "від".
Отже, мої запитання такі:
- Чим відрізняються технічні характеристики в моделях 3 і 4? Чи є якийсь інший приклад, який би чіткіше зрозумів різницю?
- Що, саме, "тут" роблять? Багато з того, що я читав у книзі Вуда та на цьому веб-сайті, говорить про те, що "від" дає мультиплікативний ефект, але у мене виникають труднощі зрозуміти його інтуїцію.
- Чому могла бути така помітна різниця між Моделями 5 та 9?
Представляємо далі, написане Р.
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)