Saya telah menjelajahi sejumlah alat untuk perkiraan, dan telah menemukan Generalized Additive Models (GAMs) memiliki potensi paling besar untuk tujuan ini. GAM itu luar biasa! Mereka memungkinkan untuk model yang rumit untuk ditentukan dengan sangat ringkas. Namun, kejelasan yang sama itu membuat saya kebingungan, khususnya terkait dengan bagaimana GAM memahami istilah interaksi dan kovariat.
Pertimbangkan contoh kumpulan data (kode yang dapat direproduksi di akhir posting) yang ymerupakan fungsi monoton yang diganggu oleh beberapa gaussians, ditambah beberapa noise:
Kumpulan data memiliki beberapa variabel prediktor:
x: Indeks data (1-100).w: Fitur sekunder yang menandai bagianytempat gaussian hadir.wmemiliki nilai 1-20 dixantara 11 dan 30, dan 51 hingga 70. Jika tidak,wadalah 0.w2:w + 1, sehingga tidak ada nilai 0.
mgcvPaket R membuatnya mudah untuk menentukan sejumlah model yang mungkin untuk data ini:
Model 1 dan 2 cukup intuitif. Memprediksi yhanya dari nilai indeks xpada kelancaran default menghasilkan sesuatu yang samar-samar benar, tetapi terlalu mulus. Memprediksi yhanya dari whasil dalam model "rata-rata gaussian" hadir y, dan tidak ada "kesadaran" dari titik data lainnya, yang semuanya memiliki wnilai 0.
Model 3 menggunakan keduanya xdan wsebagai smooth 1D, menghasilkan kecocokan yang bagus. Penggunaan Model 4 xdan wdalam 2D mulus, juga memberikan kecocokan yang bagus. Kedua model ini sangat mirip, meskipun tidak identik.
Model 5 model x"oleh" w. Model 6 melakukan yang sebaliknya. mgcvDokumentasi menyatakan bahwa "dengan argumen memastikan bahwa fungsi yang lancar dikalikan dengan [kovariat yang diberikan dalam argumen 'oleh']". Jadi bukankah seharusnya Model 5 & 6 setara?
Model 7 dan 8 menggunakan salah satu prediktor sebagai istilah linier. Ini masuk akal bagi saya, karena mereka hanya melakukan apa yang akan dilakukan GLM dengan prediktor ini, dan kemudian menambahkan efek ke seluruh model.
Terakhir, Model 9 sama dengan Model 5, kecuali yang xdihaluskan "oleh" w2(yang w + 1). Yang aneh bagi saya di sini adalah bahwa tidak adanya nol w2menghasilkan efek yang sangat berbeda dalam interaksi "oleh".
Jadi, pertanyaan saya adalah ini:
- Apa perbedaan antara spesifikasi dalam Model 3 dan 4? Apakah ada contoh lain yang akan menjelaskan perbedaannya lebih jelas?
- Apa, tepatnya, yang "dilakukan" di sini? Banyak dari apa yang saya baca di buku Wood dan situs web ini menunjukkan bahwa "oleh" menghasilkan efek multiplikasi, tetapi saya mengalami kesulitan memahami intuisi itu.
- Mengapa ada perbedaan yang mencolok antara Model 5 dan 9?
Reprex berikut, ditulis dalam 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)


