一般化された加法モデル(GAM)、相互作用、共変量


12

私は予測のための多くのツールを調査してきましたが、一般化された加算モデル(GAM)がこの目的に最も可能性があることがわかりました。GAMは素晴らしいです!複雑なモデルを非常に簡潔に指定できます。ただし、その簡潔さが、特にGAMが相互作用項と共変量をどのように考えているかという点で、混乱を招いています。

yいくつかのガウス分布に加えてノイズが加わった単調関数であるサンプルデータセット(投稿の最後に再現可能なコード)を考えてみましょう。

ここに画像の説明を入力してください

データセットには、いくつかの予測変数があります。

  • x:データのインデックス(1〜100)。
  • wyガウス分布が存在するセクションをマークする2番目の機能。w値は1〜20で、11〜30 x、および51〜70です。それ以外の場合wは0です。
  • w2w + 1ので、0値はありません。

Rのmgcvパッケージにより、これらのデータの多くの可能なモデルを簡単に指定できます。

ここに画像の説明を入力してください

モデル1および2はかなり直感的です。デフォルトの平滑度でyインデックス値のみから予測xすると、あいまいに正しいものが生成されますが、滑らかすぎます。に存在する「平均ガウス」モデルの結果yからのみ予測し、他のデータポイントは「認識」しません。すべてのデータポイントの値は0です。wyw

モデル3は両方xを使用しw、1Dスムースとして使用して、ぴったりとフィットします。モデル4は、2Dスムーズを使用してxおりw、優れた適合性も提供します。これら2つのモデルは非常に似ていますが、同一ではありません。

モデル5モデルx"by" w。モデル6はその逆です。mgcvのドキュメントには、「by引数により、スムーズ関数に['by'引数で指定された共変量]が乗算されることが保証されている」と記載されています。モデル5とモデル6は同等ではありませんか?

モデル7および8は、予測子の1つを線形項として使用します。GLMがこれらの予測子で行うことを単純に実行し、モデルの残りの部分に効果を追加するため、これらは直感的に理にかなっています。

最後に、モデル9はモデル5と同じですが、x「by」w2(つまり)で平滑化されw + 1ます。ここで私にとって奇妙なのは、ゼロの欠如がw2「by」相互作用に著しく異なる効果をもたらすことです。

したがって、私の質問は次のとおりです。

  • モデル3とモデル4の仕様の違いは何ですか?違いをより明確に引き出す他の例はありますか?
  • ここで「by」とは正確には何ですか?私がウッドの本とこのウェブサイトで読んだことの多くは、「by」が相乗効果を生み出すことを示唆していますが、その直観をつかむのに苦労しています。
  • モデル5とモデル9の間に大きな違いがあるのはなぜですか?

Rで書かれたReprexが続きます。

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)

tipreverseの依存関係としてtidyverseパッケージを使用することは、ここの人々にとって少し反社会的です。これらのパッケージのかなりの数を使用していますが、それでもコードを実行するためだけにインストールフェストが必要でした。Minimal、つまり必要なパッケージだけをリストすると、より便利になります。とはいえ、reprexに感謝します。私は今それを実行しています
モニカの回復-G.シンプソン

回答:


11

Q1モデル3とモデル4の違いは何ですか?

モデル3は純粋に加算的なモデルです

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

αxw

モデル4は、2つの連続変数の滑らかな相互作用です

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()モデルは、ちょうど2つの滑らかさのパラメータ、限界的に1つずつ含まれています。

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スムージングの合計または1つの2Dスムースの選択は、主な効果と標準的な線形モデリングの相互作用に大まかに(再び大まかに)似ています。しかし、これにより、byパラメーターの存在がさらに複雑になります。
jdobres

Q2に何かを追加しました。これは、それらのモデルが何をしているのかを説明しています。今からQ3を見てみましょう。
モニカの復職-G.シンプソン

私はQ3への答えは5と9でどのようなモデルの変化する係数部分と算術相互作用の単純な問題だと思う
G.シンプソン-復活モニカ

非常に役立ちます!Q2を明確にするために、「by」引数で提供される予測変数は、本質的に平滑化された予測変数の結果の追加係数になると言っていますか?モデル5がモデル2に似たものになるはずなので、直感が間違っているのではないかと疑っています。
jdobres17年

α+f1(w)α+f1(x)wwwxwwxw
モニカの復職-G.シンプソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.