2

RでTweedieを使用して段階的な回帰を行う方法を知っている人はいますか?

mgcvどうやら Tweedie の電力パラメーターを推定する別のパラメーターとして扱っているパッケージを見つけました。tweedie.profileこれは、 を使用して の外側の電力を推定する必要があることを改善するglmように思われるため、自動化されたステップワイズ関数を使用して回帰を行うことを奨励しているようです。しかし、パッケージが段階的な機能も提供しているかどうかはわかりません。パッケージマニュアルにはこう書かれています。

スムーズについての話で迷ってしまいました:

mgcv パッケージには step.gam はありません。
完全に自動化されたモデル選択を容易にするために、パッケージは、滑らかさの選択の一部として滑らかさをゼロに縮小できるようにするために使用できる 2 つの滑らかな変更技術を実装しています。

よろしくお願いします。ありがとう。

4

1 に答える 1

7

あなたの質問は「Tweedie」ファミリーに固有のものではありません。これは、mgcvモデル選択における一般的な機能です。

mgcvstep.gam機種選定には使用しません。あなたの混乱は別のパッケージから来ていると思いgamますstep.gam. に入る場合?step.gammgcv、 を指します?gam.selection?step.gam人々が検索する場合に備えて、意図的にそこに残されています。ただし、すべての詳細は に記載されてい?gam.selectionます。

step.gamで行う必要はありませんmgcv。モデル推定とモデル選択は に統合されていmgcvます。ペナルティ付き回帰/平滑化スプラインの場合、平滑化パラメータが無限大 (非常に大きい) になると、その 2 次導関数はゼロにペナルティされ、単純な線形項が残ります。たとえば、次のようなモデルを指定するとします。

y ~ s(x1, bs = 'cr') + s(x2, bs = 'cr')

whiles(x2)は偽のモデル項であり、モデルに含めるべきではありません。その後、推定後mgcv:::gam/bamに収縮s(x2)し、次のようなモデルになります。x2

y ~ s(x1) + x2

これは、plot.gam()モデル項ごとに推定された平滑化関数を調べるために を使用するs(x1)と、曲線であるがs(x2)直線であることを意味します。

今、これは完全に満足のいくものではありません。モデルの選択を完全に成功させるためにx2、同様にドロップ、つまりs(x2)0 に縮小して、表記上のモデルを取得します。

y ~ s(x1)

しかし、これを達成するのは難しくありません。収縮平滑化クラスbs = 'ts'(通常の とは対照的に、収縮薄板回帰スプラインtp) またはbs = cs'(通常の 'cr' とは対照的に、収縮 3 次回帰スプライン) をmgcv:::gam/bam使用でき、0 に収縮できるはずですs(x2)。この背後にある数学は、これはmgcv、線形項 (つまり、ヌル スペース) の固有値を 0 から 0.1 (小さいが正の数) に変更して、線形項にペナルティが適用されるようにすることです。その結果、 を実行すると、が 0 の位置に横線plot.gam()が表示されます。s(x2)

bs = 'cs'またはbs = 'ts'関数に入れることになっていますs()。また、 のままにすることも、そのままmgcvにすることもできますが、bs = 'cr'またはを入れることができます。は、より一般的な処理です。現時点では、収縮スムースにはクラスとしかありませんが、あらゆる種類のスムース仕様に対応しています。0 の固有値を 0.1 に増やすことで、本質的に同じことを行います。bs = 'tp's()select = TRUEgam()bam()select = TRUEcstsselect = TRUE

次の例は、 の例から抜粋したもの?gam.selectionです。select = TRUEがいくつかの項を 0 に縮小し、有益なモデル選択を行う方法に注意してください。

library(mgcv)
set.seed(3);n<-200
dat <- gamSim(1,n=n,scale=.15,dist="poisson") ## simulate data
dat$x4 <- runif(n, 0, 1);dat$x5 <- runif(n, 0, 1) ## spurious
b <- gam(y~s(x0)+s(x1)+s(x2)+s(x3)+s(x4)+s(x5),data=dat,
        family=poisson,select=TRUE,method="REML")
summary(b)
plot.gam(b,pages=1)

収縮

p-valuesinは、summary.gam()そのような選択の証拠も提供することに注意してください。

Approximate significance of smooth terms:
            edf Ref.df  Chi.sq p-value    
s(x0) 1.7655119      9   5.264  0.0397 *  
s(x1) 1.9271039      9  65.356  <2e-16 ***
s(x2) 6.1351372      9 156.204  <2e-16 ***
s(x3) 0.0002618      9   0.000  0.4088    
s(x4) 0.0002766      9   0.000  1.0000    
s(x5) 0.1757146      9   0.195  0.2963    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

R-sq.(adj) =  0.545   Deviance explained = 51.6%
-REML = 430.78  Scale est. = 1         n = 200
于 2016-05-20T17:39:03.880 に答える