Tahmin için bir dizi araç araştırıyorum ve Genelleştirilmiş Katkı Modellerinin (GAM) bu amaç için en yüksek potansiyele sahip olduğunu gördüm. OYUNLAR harika! Karmaşık modellerin çok kısa bir şekilde belirlenmesine izin verirler. Bununla birlikte, aynı özlük bana, özellikle de GAM'ların etkileşim terimlerini ve ortak değişkenleri nasıl algıladıkları konusunda bazı karışıklıklara neden oluyor.
y
Birkaç gaussian tarafından rahatsız edilen monoton bir fonksiyonun yanı sıra biraz gürültü olan bir örnek veri setini (post sonunda tekrarlanabilir kod) düşünün :
Veri kümesinin birkaç tahmin değişkeni vardır:
x
: Verilerin dizini (1-100).w
: Biry
gaussianın bulunduğu bölümleri belirten ikincil bir özellik . 1 ila 20 arasındadır,w
buradax
11 ila 30 ve 51 ila 70 arasındadır. Aksi takdirdew
0'dır.w2
:w + 1
, böylece 0 değer olmaz.
R'nin mgcv
paketi, bu veriler için bir dizi olası modeli belirtmeyi kolaylaştırır:
Model 1 ve 2 oldukça sezgiseldir. Varsayılan pürüzsüzlükte y
yalnızca indeks değerinden tahmin etmek x
belirsiz bir şekilde doğru, ama çok pürüzsüz bir şey üretir. Tahmin y
sadece gelen w
içinde "ortalama Gauss" mevcut bir modelinde sonuç y
ve, her biri diğer veri noktaları, bir "duyarlılık" w
0 değeri.
Model 3 kullanır hem x
ve w
güzel bir uyum üreten 1D yumuşatır gibi. Model 4, 2D pürüzsüz olarak kullanır x
ve w
ayrıca güzel bir uyum sağlar. Bu iki model aynı olmasa da çok benzer.
Model 5 modelleri x
"by" w
. Model 6 tam tersini yapar. mgcv
dokümantasyonunda "by argümanı, düzgün işlevin ['by' argümanında verilen eşdeğişken] ile çarpılmasını sağlar. Öyleyse Model 5 ve 6 eşdeğer olmamalı mı?
Model 7 ve 8, öngörücülerden birini doğrusal bir terim olarak kullanır. Bunlar benim için sezgisel bir anlam taşıyor, çünkü bunlar sadece bir GLM'nin bu öngörücülerle ne yapacağını yapıyor ve daha sonra etkiyi modelin geri kalanına ekliyorlar.
Son olarak, Model 9, Model 5 ile aynıdır, ancak x
"by" w2
(ki w + 1
) düzeltir . Burada garip olan şey, sıfırların yokluğunun w2
"by" etkileşimi üzerinde oldukça farklı bir etki yaratmasıdır.
Yani, sorularım:
- Model 3 ve 4'teki özellikler arasındaki fark nedir? Farkı daha açık bir şekilde ortaya koyacak başka bir örnek var mı?
- Tam olarak, "by" burada ne yapıyor? Wood'un kitabında ve bu web sitesinde okuduğum şeylerin çoğu "by" ın çarpma etkisi oluşturduğunu, ancak sezgisini kavramakta güçlük çektiğimi gösteriyor.
- Model 5 ve 9 arasında neden bu kadar dikkate değer bir fark olsun ki?
Reprex, R ile yazılmıştı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)