मैं पूर्वानुमान के लिए कई उपकरणों की खोज कर रहा हूं, और इस उद्देश्य के लिए सामान्यीकृत एडिटिव मॉडल (GAMs) पाया है। गाम महान हैं! वे जटिल मॉडल को बहुत ही विशिष्ट रूप से निर्दिष्ट करने की अनुमति देते हैं। हालाँकि, वही शालीनता मुझे कुछ भ्रम पैदा कर रही है, विशेष रूप से इस बात के संबंध में कि कैसे गामा बातचीत की शर्तों और सहसंयोजकों की गर्भधारण करता है।
एक उदाहरण डेटा सेट (पोस्ट के अंत में प्रतिलिपि प्रस्तुत करने योग्य कोड) पर विचार करें, जिसमें y
एक मोनोटोनिक फ़ंक्शन होता है जो कि कुछ गौसियों के जोड़े से जुड़ा होता है, साथ ही कुछ शोर:
डेटा सेट में कुछ भविष्यवाणियां होती हैं:
x
: डेटा का सूचकांक (1-100)।w
: एक गौण सुविधा जोy
एक गौसियन मौजूद है के वर्गों को चिह्नित करती है।w
1-20 के मान हैं, जहांx
11 और 30 के बीच है, और 51 से 70 है। अन्यथा,w
0 है।w2
:w + 1
, ताकि 0 मान न हों।
R का mgcv
पैकेज इन डेटा के लिए कई संभावित मॉडल निर्दिष्ट करना आसान बनाता है:
मॉडल 1 और 2 काफी सहज हैं। भविष्यवाणी y
में सूचकांक मूल्य से केवल x
डिफ़ॉल्ट चिकनाई पर थोड़ा सही कुछ पैदा करता है, लेकिन बहुत चिकनी। भविष्यवाणी y
केवल से w
में "औसत गाऊसी" वर्तमान का एक मॉडल में परिणाम y
है, और कोई अन्य डेटा बिंदुओं, जो सभी के लिए एक है "जागरूकता" w
का मान 0।
मॉडल 3 दोनों का उपयोग करता है x
और w
1 डी चिकनी के रूप में, एक अच्छा फिट का उत्पादन करता है। मॉडल 4 का उपयोग करता है x
और w
एक 2 डी चिकनी में, एक अच्छा फिट भी दे रहा है। ये दो मॉडल बहुत समान हैं, हालांकि समान नहीं हैं।
मॉडल 5 मॉडल x
"द्वारा" w
। मॉडल 6 विपरीत करता है। mgcv
के प्रलेखन में कहा गया है कि "द्वारा तर्क यह सुनिश्चित करता है कि सुचारू कार्य कई गुणा हो जाता है [कोविएट में 'तर्क' द्वारा"। तो क्या मॉडल 5 और 6 समान नहीं होना चाहिए?
मॉडल 7 और 8 भविष्यवाणियों में से एक का उपयोग एक रैखिक शब्द के रूप में करते हैं। ये मेरे लिए सहज ज्ञान युक्त हैं, क्योंकि वे बस कर रहे हैं कि एक GLM इन भविष्यवक्ताओं के साथ क्या करेगा, और फिर मॉडल के बाकी हिस्सों में प्रभाव जोड़ देगा।
अंत में, मॉडल 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)