2016-07-25 3 views
0

RのGAMの変数選択を自動化する方法はありますか? step.gamselection.gamのドキュメントを読んだことがありますが、まだ動作しているコードの回答を見ていません。さらに、私はmethod= "REML"select = TRUEを試しましたが、重要な変数をモデルから削除しません。mgcvによる変数選択

私はステップモデルを作成し、その変数を使ってGAMを作成することが理論化できましたが、それは計算上効率的ではありません。

例:

library(mgcv) 

set.seed(0) 
dat <- data.frame(rsp = rnorm(100, 0, 1), 
        pred1 = rnorm(100, 10, 1), 
        pred2 = rnorm(100, 0, 1), 
        pred3 = rnorm(100, 0, 1), 
        pred4 = rnorm(100, 0, 1)) 

model <- gam(rsp ~ s(pred1) + s(pred2) + s(pred3) + s(pred4), 
      data = dat, method = "REML", select = TRUE) 

summary(model) 

#Family: gaussian 
#Link function: identity 

#Formula: 
#rsp ~ s(pred1) + s(pred2) + s(pred3) + s(pred4) 

#Parametric coefficients: 
#   Estimate Std. Error t value Pr(>|t|) 
#(Intercept) 0.02267 0.08426 0.269 0.788 

#Approximate significance of smooth terms: 
#   edf Ref.df  F p-value 
#s(pred1) 0.8770  9 0.212 0.1174 
#s(pred2) 1.8613  9 0.638 0.0374 * 
#s(pred3) 0.5439  9 0.133 0.1406 
#s(pred4) 0.4504  9 0.091 0.1775 
--- 
#Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

#R-sq.(adj) = 0.0887 Deviance explained = 12.3% 
#-REML = 129.06 Scale est. = 0.70996 n = 100 
+0

、私は上向きに10個の変数(これ私は統計のスキームでそれほど多くないことを認識しています)、パワーを予測する上で大きな損失を伴わずにいくつかの変数を減らしたいと思います。 – IJH

+0

プログラミングに関してではなく統計(モデル選択)であるため、この質問をトピックとして閉じようと投票しています –

答えて

1

マーラとウッド(2011、計算統計とデータ解析55; 2372から2387)は、GAMSにおける機能選択のための様々なアプローチを比較します。彼らは、平滑化選択手順における追加のペナルティ項が最良の結果をもたらしたと結論付けた。これはmgcvに活性化することができる:: GAM()select = TRUE引数/設定、または以下のバリエーションのいずれかを使用して:私が使用する他のデータセットの一部で

model <- gam(rsp ~ s(pred1,bs="ts") + s(pred2,bs="ts") + s(pred3,bs="ts") + s(pred4,bs="ts"), data = dat, method = "REML") 
model <- gam(rsp ~ s(pred1,bs="cr") + s(pred2,bs="cr") + s(pred3,bs="cr") + s(pred4,bs="cr"), 
      data = dat, method = "REML",select=T) 
model <- gam(rsp ~ s(pred1,bs="cc") + s(pred2,bs="cc") + s(pred3,bs="cc") + s(pred4,bs="cc"), 
      data = dat, method = "REML") 
model <- gam(rsp ~ s(pred1,bs="tp") + s(pred2,bs="tp") + s(pred3,bs="tp") + s(pred4,bs="tp"), data = dat, method = "REML") 
+0

'bs ='を追加すると、モデルは何をしますか? – IJH

関連する問題