일반화 된 가산 모델 (GAM), 상호 작용 및 공변량


12

예측을위한 여러 가지 도구를 살펴 보았으며이 목표를 달성 할 수있는 가장 일반적인 잠재력을 가진 GAM (Generalized Additive Models)을 발견했습니다. GAM은 훌륭합니다! 복잡한 모델을 간결하게 지정할 수 있습니다. 그러나 동일한 간결함은 특히 GAM이 상호 작용 항과 공변량을 어떻게 생각하는지에 관해 혼란을 유발합니다.

y몇 개의 가우시안에 의해 혼동 된 단조 함수와 약간의 노이즈 인 예시 데이터 세트 (포스트 종료시 재현 가능한 코드)를 고려하십시오 .

여기에 이미지 설명을 입력하십시오

데이터 세트에는 몇 가지 예측 변수가 있습니다.

  • x: 데이터의 색인 (1-100).
  • w: y가우스가 있는 부분을 표시하는 보조 기능입니다 . w값은 1-20이며, 여기서 x11과 30 사이, 51과 70 사이 w입니다. 그렇지 않으면 0입니다.
  • w2: w + 10 값이 없도록합니다.

R의 mgcv패키지를 사용하면 이러한 데이터에 대해 여러 가지 가능한 모델을 쉽게 지정할 수 있습니다.

여기에 이미지 설명을 입력하십시오

모델 1과 2는 매우 직관적입니다. 기본 매끄러움에서 y인덱스 값만 예측 x하면 모호하게 정확하지만 너무 매끄 럽습니다. 에서 예측 된 "평균 가우시안"모델의 결과 y만 예측 하고 다른 데이터 포인트의 "인식"은 값이 0입니다.wyw

모델 3 개 사용 둘 xw편안한 착용감을 생산하는 1 차원 부드럽게, 같은. 모델 4 용도 xw차원에도 좋은 착용감을주고, 부드럽게. 이 두 모델은 동일하지는 않지만 매우 유사합니다.

모델 5 모델 x"by" w. 모델 6은 그 반대입니다. mgcv의 문서에 따르면 "by 인수는 부드러운 함수에 [ 'by'인수에 제공된 공변량]이 곱해집니다"라고 명시되어 있습니다. 모델 5와 6이 동일하지 않아야합니까?

모형 7과 8은 예측 변수 중 하나를 선형 항으로 사용합니다. GLM이 이러한 예측 변수를 사용하여 수행 한 작업을 수행 한 다음 나머지 모델에 효과를 추가하므로 직관적으로 이해가됩니다.

마지막으로, Model 9는 x"by" w2(즉 w + 1) 인 것을 제외하고 Model 5와 동일합니다 . 여기서 이상한 점은 0이 없으면 w2"by"상호 작용에서 현저히 다른 효과를 낸다는 것입니다.

그래서 내 질문은 다음과 같습니다.

  • 모델 3과 4의 사양은 어떻게 다릅니 까? 차이를 더 명확하게 이끌어내는 다른 예가 있습니까?
  • "여기서"정확히 무엇을하고 있습니까? 내가 Wood의 책과이 웹 사이트에서 읽은 내용의 대부분은 "by"가 곱셈 효과를 낸다고 제안하지만 직관을 이해하는 데 어려움을 겪고 있습니다.
  • 모델 5와 9 사이에 눈에 띄는 차이점이있는 이유는 무엇입니까?

Reprex는 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)

여기에 사람들이 tidyverse 패키지를 reprex 의 의존성으로 사용하는 것은 약간의 반 사회적입니다 . 나는 그 패키지 중 상당수를 사용하지만 여전히 코드를 실행하기 위해 설치 페스트가 필요했습니다. Minimal , 즉 필요한 패키지 만 나열하는 것이 더 유용했을 것입니다. 즉 reprex 주셔서 감사합니다; 난 그냥 지금 그것을 실행하는거야
분석 재개 모니카 - G. 심슨에게

답변:


11

Q1 모델 3과 4의 차이점은 무엇입니까?

모델 3은 순전히 가산 모델입니다

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

αxw

모델 4는 두 개의 연속 변수의 원활한 상호 작용입니다

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

여기에 이미지 설명을 입력하십시오

어떤 의미에서, 모델 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')

그러나 이것은 4 평활도 매개 변수를 추정합니다.

  1. 의 주요 부드러운 효과와 관련된 것x
  2. 의 주요 부드러운 효과와 관련된 것w
  3. 의 한계 스무딩과 관련된 것x
  4. 의 한계 스무딩과 관련된 것w

te()모형에는 한계 기준 당 하나씩 두 개의 평활도 매개 변수 만 포함되어 있습니다.

www2

Q2 여기서 "by"는 정확히 무엇입니까?

bybybywwx

y=α+f1(x)w+ε

xβ1wwxx

Q3 모델 5와 9 사이에 왜 눈에 띄는 차이가 있습니까?

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

www


Q1에 대한 유용한 답변입니다. 감사합니다. 1D 스무스 또는 단일 2D 스무드의 합의 선택은 표준 선형 모델링의 주요 효과 대 상호 작용과 대략 ( 거의 ) 대략 유사합니다. 그러나 이것은 by매개 변수 의 존재를 더욱 복잡 하게 만듭니다 .
jdobres

나는 Q2에 무언가를 추가했다. Q3를 보겠습니다.
복원 Monica Monica-G. Simpson

Q3에 대한 답은 산술이 5와 9에서 모델의 다양한 계수 부분과 상호 작용하는 단순한 문제라고 생각합니다.
Reinstate Monica-G. Simpson

매우 도움이되었습니다! Q2를 명확히하기 위해, "by"인수로 제공된 예측 변수가 기본적으로 평활화 된 예측 변수의 결과에 대한 추가 계수가된다고 말하는가? 내 직관이 틀렸다고 생각합니다. Model 5는 Model 2와
비슷해 보일 것입니다

α+f1(w)α+f1(x)wwwxwwxw
복원 모니카
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.