2016-05-20 15 views
1

RでTweedieを使ってステップワイズ回帰を行う方法を知っている人はいますか?mgcv:Tweedie応答モデルで段階的回帰を行うには?

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

私は、平滑化し話で迷子になった:

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

ご協力いただきありがとうございます。ありがとう。

+0

こんにちはZheyuan。はい、とても助かりました、ありがとうございます。私は座って、このスムージングがどのように機能するのかを理解する必要があります。簡単な質問:mgcvのTweedie機能にもSelect = TRUEとMethod = RELMがありますか?もう一度ありがとう –

+0

私は、gam = familyのTweedieを使うことができるか、Tweedie関数を使うことができます。彼らの違いはまだ分かりません。だから私は、選択と方法をTweedieでも使うことができるかどうか尋ねました。しかし、あなたが言ったことは感謝します、ありがとう。 –

+0

ああ、それは家族に渡されました、ありがとう、たくさんありました。 –

答えて

4

"Tweedie"ファミリーに固有の質問ではありません。モデル選択では一般的なmgcv機能です。

mgcvモデル選択にstep.gamを使用していません。あなたの混乱は別のパッケージgamから来て、step.gamを使用して、用語を追加/削除し、AICを報告します。 ?step.gammgcvに入力すると、?gam.selectionが参照されます。人々がそれを検索する場合は、?step.gamが意図的にそこに残されます。しかし、すべての詳細は?gam.selectionで提供されています。

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

s(x2)はスプリアスモデルの用語であり、モデルに含まれるべきではないながら

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

、そしてmgcv:::gam/bamのようなモデルをその結果、推定した後s(x2)x2に縮小されます

y ~ s(x1) + x2 

あなたは、各モデルの任期を推定円滑な機能を検査するplot.gam()を使用する場合は、s(x1)が曲線である、意味するが、s(x2)は直線です。

これで完全に満足できるわけではありません。

y ~ s(x1) 

しかし、これは達成することは難しいことではありません。完全な、成功したモデル選択のために、我々はすなわち、記述がよりモデルを取得するには、0にs(x2)を縮小し、同様x2をドロップします。我々はs(x2)を0に縮めることができるように収縮スムースクラスbs = 'ts'(収縮薄板回帰スプライン、通常のtp)またはbs = cs'(収縮キュービック回帰スプライン)を使用することができ、mgcv:::gam/bamは縮めることができるはずです。この背後にある数学は、mgcvは0から0.1までの線形項(すなわち空白)の固有値を小さな正の数に変更して、ペナルティが線形項に作用するようにするということです。その結果、あなたがplot.gam()を行うとき、あなたはs(x2)が機能s()に入れることになっている0

bs = 'cs'またはbs = 'ts'で水平線で表示されます。 mgcvの場合は、またはbs = 'tp'はそのままs()に入力しますが、select = TRUEはまたはbam()に入力してください。 select = TRUEは現時点での収縮平滑度がクラスcstsしか持っていないので、より一般的な治療法です。select = TRUEはすべての種類の滑らかな仕様に対応しています。 0固有値を0.1に増やすことによって、基本的に同じことが行われます。

次の例は、?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) 
summary.gam()p-valuesはまた、選択のための証拠を与える、ということ

shrinkage

注:

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 
+0

浙江省。いい答えだ。いくつかの考えをお願いします。あなたの例では、x3、x4、および可能なx5の係数はゼロに向かって縮小されています。これは変数の選択と似ていますか?あなたはこれらを除いてモデルを修理しますか? (私の場合のように、モデル内の多くの変数がゼロに縮小されていれば、これらのゼロ係数はすべてモデルに表示されますが、私は批評家には問題があると思います。 – user2957945

関連する問題