GAMの連続予測子とカテゴリー予測子の間の相互作用をモデリングするさまざまな方法


8

次の質問は、このページでの議論に基づいています。応答変数y、連続説明変数x、および因子facを指定するxfac、引数間の相互作用を使用して、一般的な加法モデル(GAM)を定義できますby=。Rパッケージのヘルプファイル ?gam.modelsによるとmgcv、これは次のように実行できます。

gam1 <- gam(y ~ fac +s(x, by = fac), ...)

ここで@GavinSimpsonは別のアプローチを提案しています。

gam2 <- gam(y ~ fac +s(x) +s(x, by = fac, m=1), ...)

私は3番目のモデルで遊んでいます:

gam3 <- gam(y ~ s(x, by = fac), ...)

私の主な質問は次のとおりです。これらのモデルのいくつかは間違っているのですか、それとも単に異なるのですか?後者の場合、それらの違いは何ですか? 以下で説明する例に基づいて、それらの違いのいくつかは理解できたと思いますが、それでも何か不足しています。

例として、異なる場所で測定された2つの異なる植物種の花の色スペクトルを持つデータセットを使用します。

rm(list=ls())
# install.packages("RCurl")
library(RCurl) # allows accessing data from URL
df <- read.delim(text=getURL("https://raw.githubusercontent.com/marcoplebani85/datasets/master/flower_color_spectra.txt"))
library(mgcv)

わかりやすくするために、上の図の各線は、density~s(wl)約10の花のサンプルに基づいたフォームの個別のGAMを使用して、各場所で予測された平均カラースペクトルを表しています。灰色の領域は、各GAMの95%CIを表します。

私の最終的な目標は、混合効果GAMのランダム効果として説明しながら、(コードとデータセットで参照される)反射率の(潜在的にインタラクティブな)効果Taxonと波長のモデル化です。今のところ、プレートにミックスエフェクトパーツを追加しません。これは、相互作用をモデル化する方法を理解するのに十分な量です。wldensityLocality

3つのインタラクティブなGAMのうち、最も単純なものから始めます。

gam.interaction0 <- gam(density ~ s(wl, by = Taxon), data = df) 
# common intercept, different slopes
plot(gam.interaction0, pages=1)

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

summary(gam.interaction0)

生成する:

Family: gaussian 
Link function: identity 

Formula:
density ~ s(wl, by = Taxon)

Parametric coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  28.3490     0.1693   167.4   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Approximate significance of smooth terms:
                      edf Ref.df     F p-value    
s(wl):TaxonSpeciesA 8.938  8.999 884.3  <2e-16 ***
s(wl):TaxonSpeciesB 8.838  8.992 325.5  <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

R-sq.(adj) =  0.523   Deviance explained = 52.4%
GCV = 284.96  Scale est. = 284.42    n = 9918

パラメトリックパーツは両方の種で同じですが、種ごとに異なるスプラインが適合されます。ノンパラメトリックであるGAMの要約にパラメトリック部分を含めることは少し混乱します。@IsabellaGhementは説明します:

最初のモデルに対応する推定された滑らかな効果(滑らかさ)のプロットを見ると、それらがほぼゼロに集中していることがわかります。したがって、推定したと思われる滑らかな関数を取得するには、これらの平滑化を「シフト」して(推定切片が正の場合)または下に(推定切片が負の場合)する必要があります。言い換えれば、あなたが本当に望んでいるものを得るには、推定された切片をスムースに追加する必要があります。最初のモデルでは、「シフト」は両方のスムースで同じであると想定されています。

次に進む:

gam.interaction1 <- gam(density ~ Taxon +s(wl, by = Taxon, m=1), data = df)
plot(gam.interaction1,pages=1)

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

summary(gam.interaction1)

与える:

Family: gaussian 
Link function: identity 

Formula:
density ~ Taxon + s(wl, by = Taxon, m = 1)

Parametric coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)    40.3132     0.1482   272.0   <2e-16 ***
TaxonSpeciesB -26.0221     0.2186  -119.1   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Approximate significance of smooth terms:
                      edf Ref.df    F p-value    
s(wl):TaxonSpeciesA 7.978      8 2390  <2e-16 ***
s(wl):TaxonSpeciesB 7.965      8  879  <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

R-sq.(adj) =  0.803   Deviance explained = 80.3%
GCV = 117.89  Scale est. = 117.68    n = 9918

現在、各種には独自のパラメトリック推定があります。

次のモデルは、私が理解できない問題です。

gam.interaction2 <- gam(density ~ Taxon + s(wl) + s(wl, by = Taxon,  m=1), data = df)
plot(gam.interaction2, pages=1)

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

これらのグラフが何を表しているのか私には明確な考えがありません。

summary(gam.interaction2)

与える:

Family: gaussian 
Link function: identity 

Formula:
density ~ Taxon + s(wl) + s(wl, by = Taxon, m = 1)

Parametric coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)    40.3132     0.1463   275.6   <2e-16 ***
TaxonSpeciesB -26.0221     0.2157  -120.6   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Approximate significance of smooth terms:
                      edf Ref.df     F p-value    
s(wl)               8.940  8.994 30.06  <2e-16 ***
s(wl):TaxonSpeciesA 8.001  8.000 11.61  <2e-16 ***
s(wl):TaxonSpeciesB 8.001  8.000 19.59  <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

R-sq.(adj) =  0.808   Deviance explained = 80.8%
GCV = 114.96  Scale est. = 114.65    n = 9918

のパラメトリック部分gam.interaction2は、の場合とほぼ同じですがgam.interaction1、スムーズな項には3つの推定値があり、これを解釈することはできません。

3つのモデルの違いを理解するのに時間を割いてくださる方に感謝します。


2
なんて美しいポスト、マルコ!最初のモデルに対応する推定された滑らかな効果(滑らかさ)のプロットを見ると、それらがほぼゼロに集中していることがわかります。したがって、推定したと思われる滑らかな関数を取得するには、これらの平滑化を(推定切片が正の場合)または下(推定切片が負の場合)に「シフト」する必要があります。言い換えれば、あなたが本当に欲しいものを得るには、推定切片をスムースに追加する必要があります。最初のモデルでは、「シフト」は両方のスムースで同じであると想定されています。
Isabella Ghement

1
モデルを指定するとき、Taxonの主な効果、wlの主な(滑らかな)効果、およびTaxonとwlの間の(滑らかな)相互作用があるはずです。Gavin Simpsonの投稿へのリンクは、これが彼がこの種のモデルを設定する方法であることを示唆しています。彼はまた、モデルの滑らかな効果に同じ値のkを使用しているようです。通常、2つの予測子変数の間に交互作用項を含める場合、それらの変数の主効果も含める必要があります。
Isabella Ghement

タクソンの主な効果が省略されているため、最初のモデルは破棄します。Gavinの提案を使用して、必要な主効果と相互作用効果を取得します(モデルによって生成されたスムースはデフォルトで約0を中心とし、切片の項に応じて上または下に「シフト」する必要があることを思い出しながら)
Isabellaゲーメント

こんにちは@IsabellaGhementとフィードバックに感謝します。summary(gam.interaction2)が各種に関連するs(wl)の有意性推定を生成するだけでなく、どちらの種にもリンクされていないs(wl)の有意性推定を生成するという事実をどのように解釈しますか?それはタクソンに関係なく、y(私の場合は密度)の平滑化関数に対するwlの影響ですか?密度〜s(wl)をフィッティングするだけで計算されますか?私はそのようなモデルを実行し、それはパラメトリック係数を推定します。パラメトリック係数の平均に非常に近い。2つの種のedfと関連するedfは、summary(gam.interaction2)で指定されたs(wl)のedfに非常に近いです。
Marco Plebani、

1
同僚と私には、これらの問題について多くの詳細が記載された新聞(プレプリントはこちら)があります。これは、フィット可能なモデルの範囲とそれらの中から選択する方法の両方を理解するのに役立ちます。私にとっては、私はあなたがここで必要なのはあると思いますプラスのために何か効果に加えて、あなたが非一定の分散の問題について何かをする必要があります。これらのデータは、下限があるため、条件付きで分布したガウス分布ではないようです。gam1 SampleID
Gavin Simpson

回答:


1

gam1そしてgam2大丈夫です。モデルグループ固有のスムースである同じことを実行しようとしていますが、それらは異なるモデルです。

gam1フォーム

y ~ f + s(x, by = f)

これは、f(それfが標準因子であると仮定して)の各レベルに対して個別のスムーザーを推定することによってこれを行い、実際、個別の平滑度パラメーターも各スムーズに対して推定されます。

gam2フォーム

y ~ f + s(x) + s(x, by = f, m = 1)

と同じ目的を達成しますgam1xyの各レベル間のスムーズな関係をモデル化するfこと)はxys(x)項)に加えてスムーズな差分項(第2 s(x, by = f, m = 1)項)のグローバルまたは平均平滑効果を推定することで実現します。ここでのペナルティは一次導関数(m = 1) for this difference smoother, it is penalising departure from a flat line, which when added to the global or average smooth term (s(x) `)にあるため、グローバルまたは平均効果からの偏差を反映します。

gam3

y ~ s(x, by = f)

s(x, by = f)YfxYxY

ただし、これらのモデルはいずれもデータに適していません。今のところ、応答の誤った分布(density負になることはできず、ガウス以外familyが修正または対処する異質性の問題がある)を無視して、花(SampleIDデータセット内)によるグループ化を考慮していません。

Taxon特定の曲線をモデル化することが目的である場合は、フォームのモデルが出発点になります。

m1 <- gam(density ~ Taxon + s(wl, by = Taxon, k = 20) + s(SampleID, bs = 're'),
          data = df, method = 'REML')

ここSampleIDで、Taxon特定のスムースにランダム効果を追加し、基本拡張のサイズを大きくしました。

このモデルはm1、観測wlがどの種(Taxon)観測に由来する滑らかな効果(Taxonパラメトリック項densityが各種の平均を設定するだけであり、上記で説明したように必要である)またはランダムインターセプトに由来するものとして観測をモデル化します。まとめると、個々の花の曲線は、Taxon特定の曲線のシフトバージョンから生じ、ランダム切片によってシフトの量が与えられます。このモデルは、すべての個体が、Taxon個々の花が由来する特定のスムースによって与えられるものと同じスムースの形状を持っていると想定しています。

このモデルの別のバージョンはgam2上からのフォームですが、ランダム効果が追加されています

m2 <- gam(density ~ Taxon + s(wl) + s(wl, by = Taxon, m = 1) + s(SampleID, bs = 're'),
          data = df, method = 'REML')

このモデルはうまく適合しますが、問題を解決しているとは思いません。以下を参照してください。私が示唆していることの1つは、デフォルトkこれらのモデルのTaxon特定の曲線に対して潜在的に低すぎることです。診断プロットを見ると、モデリングしていない滑らかな変動がまだたくさん残っています。

このモデルは、データに対して制限が多すぎる可能性があります。個々のスムースのプロットの一部の曲線は、Taxon平均曲線の単純なシフトバージョンではないように見えます。より複雑なモデルでは、個人固有のスムーズ化も可能になります。そのようなモデルは、fsまたは因子平滑相互作用基底を使用して推定できます。我々はまだしたいTaxon特定のカーブを私たちも、それぞれに別々のスムーズなを持つようにしたいSampleID、しかし、とは違ってby平滑化し、私が最初にあなたがそれらのすべてたいことを示唆しているSampleID固有の曲線が同じwigglinessを持っています。以前に含めたランダムな切片と同じ意味で、fs 基底はランダムな切片を追加しますが、「ランダムな」スプラインも含みます(GAMのベイジアン解釈のように恐怖の引用符を使用します。これらのモデルはすべて、ランダムな効果の単なるバリエーションです)。

このモデルはあなたのデータに適合します

m3 <- gam(density ~ Taxon + s(wl, by = Taxon, k = 20) + s(wl, SampleID, bs = 'fs'), 
          data = df, method = 'REML')

固有のkスムースでウィグリネスをもっと必要とする場合に備えて、ここで増加していることに注意してくださいTaxonTaxon上記の理由から、パラメトリック効果が必要です。

そのモデルが単一のコアに適合するには長い時間がかかりますgam()bam()ここには比較的多数のランダムな効果があるので、このモデルを適合させる方がおそらく良いでしょう。

これらのモデルを平滑性パラメーター選択修正バージョンのAIC m3と比較すると、この後者のモデルは、桁違いの自由度を使用していても、他の2つのモデルと比べて劇的に優れていることがわかります。

> AIC(m1, m2, m3)
          df      AIC
m1  190.7045 67264.24
m2  192.2335 67099.28
m3 1672.7410 31474.80

このモデルのスムースを見ると、データの当てはめ方がよくわかります。

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

(これは私のgratiaパッケージの関数をdraw(m3)使用して作成されたことに注意してください。左下のプロットの色は無関係であり、ここでは役に立ちません。)draw()

それぞれSampleIDの近似曲線は、切片またはパラメトリック用語のいずれかから構築されるTaxonSpeciesBと2つのTaxon特異的平滑化し、これまでに応じてTaxonそれぞれがSampleID属する、プラス自だSampleID-specifcがスムーズ。

これらのモデルはすべて、異質性を考慮していないため、まだ間違っていることに注意してください。ログリンク付きのガンマモデルまたはトゥイーディーモデルは、これをさらに進めるための私の選択肢です。何かのようなもの:

m4 <- gam(density ~ Taxon + s(wl, by = Taxon) + s(wl, SampleID, bs = 'fs'), 
          data = df, method = 'REML', family = tw())

しかし、現時点でこのモデルのフィッティングに問題があります。これは、複数のスムースがwl含まれているために複雑すぎることを示している可能性があります。

別の形式は、平滑化に対してANOVAのような分解を行う、順序付けされた因子アプローチを使用することです。

  • Taxon パラメトリック項は保持されます
  • s(wl)基準レベルを表すスムーズです
  • s(wl, by = Taxon)他のレベルごとにスムーズな個別のがあります。あなたの場合、あなたはこれらのうちの1つだけを持つでしょう。

このモデルはm3

df <- transform(df, fTaxon = ordered(Taxon))
m3 <- gam(density ~ fTaxon + s(wl) + s(wl, by = fTaxon) +
            s(wl, SampleID, bs = 'fs'), 
          data = df, method = 'REML')

しかし、解釈は異なります。最初はs(wl)を参照するTaxonAとにより暗示滑らかs(wl, by = fTaxon)ための滑らか間の滑らかな差であろうTaxonAとのことTaxonB


ありがとう!私の次の質問は、「しかし、因子が順序付けされているかどうかにかかわらず、要約が異なるのはなぜですか?」でもあなたは私を殴りました、それもありがとう。私のデータセットでSampleIDは、それぞれが単一の花からのスペクトログラムであり、それぞれが別の植物からのものであるためSampleID、ランダムとして指定する必要はないと思います(ただし、間違っている場合は修正してください)。私は確かにあなたに似たモデルを使用していたm3とのTaxon係数を命じたが、指定すると+ s(Locality, bs="re") + s(Locality, wl, bs="re")、ランダムなように。残差の分布と不均一分散についてあなたが提起する問題を調べます。乾杯!
Marco Plebani、

SampleID単一の花からのデータが関連している可能性が高いので、ランダムに含めます。さらに、花に関連する関数全体がそうである場合、ある意味で関数(滑らか)はランダムです。プラントごとに複数の花や分類群ごとに複数の植物は研究であった場合にも使用します(工場用プレーンランダム効果を必要とするかもしれないbs = 're'、私は以前の回答で述べた「滑らかに」。
ギャビン・シンプソン

私が適合しようとしたときm3family = Gamma(link = 'log')またはmgcvが適切な開始値を見つけられないなどのfamily = tw()実際の問題や、mgcvが失敗する原因となっているその他のエラーが発生しましたが、これはまだ下にありません。確かに、あなたが提供したデータからガウスモデルは正しくありません。私はフィットするログリンク付きのガウス分布を取得しましたが、それは役立ちましたが、すべての不均一性もキャプチャしていません。
Gavin Simpson

0

これは、Jacolien van Rij 彼女のチュートリアルページで書いているものです。

相互作用の設定方法は、グループ化予測子のタイプによって異なります。

  • 因子には切片の差が含まれます: Group + s(Time, by=Group)
  • 順序付けされた因子には切片の差と参照平滑が含まれます Group + s(Time) + s(Time, by=Group)
  • バイナリ予測を使用すると、参照スムーズが含まれます。 s(Time) + s(Time, by=IsGroupChildren)

カテゴリー変数は、適切なR関数を使用して、因子、順序付き因子、またはバイナリ因子として指定する必要があります。出力の解釈方法と、各モデルが何を伝え、何を伝えないかを理解するには、Jacolien van Rijのチュートリアルページを直接参照してください。彼女のチュートリアルでは、混合効果GAMを適合させる方法についても説明しています。GAMのコンテキストでの相互作用の概念を理解するには、Peter Laurinecによるこのチュートリアルページも役立ちます。どちらのページにも、さまざまなシナリオでGAMを正しく実行するための詳細情報がたくさんあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.