予測エラーをテストするためのGAM交差検証


10

私の質問は、mgcv RパッケージのGAMを扱います。サンプルサイズが小さいため、1対1の交差検証を使用して予測エラーを特定したいと思います。これは妥当ですか?どうすればこれを行うことができるパッケージまたはコードがありますか?ipredパッケージのerrorest()関数は機能しません。簡単なテストデータセットは次のとおりです。

library(mgcv)
set.seed(0)
dat <- gamSim(1,n=400,dist="normal",scale=2)
b<-gam(y~s(x0)+s(x1)+s(x2)+s(x3),data=dat)
summary(b)
pred <- predict(b, type="response")

ご協力ありがとうございます!


回答:


3

caretこのようなパッケージは本当に気に入っていますが、残念ながら、formulainをgam正確に指定することはできません。

「このモデルでtrainを使用する場合、(現時点では)gam式を指定することはできません。キャレットには、各予測子が持つ一意のレベルの数などに基づいて式を計算する内部関数があります。つまり、trainは現在、項は平滑化されており、それは普通の線形の主効果です。」

ソース:https : //stackoverflow.com/questions/20044014/error-with-train-from-caret-package-using-method-gam

しかしtrain、滑らかな項を選択させると、この場合はとにかくモデルを正確に生成します。この場合のデフォルトのパフォーマンスメトリックはRMSEですがsummaryFunctiontrainControl関数の引数を使用して変更できます。

LOOCVの主な欠点の1つは、データセットが大きい場合に時間がかかることです。データセットは小さく、非常に高速に動作するため、賢明なオプションだと思います。

お役に立てれば。

library(mgcv)
library(caret)

set.seed(0)

dat <- gamSim(1, n = 400, dist = "normal", scale = 2)

b <- train(y ~ x0 + x1 + x2 + x3, 
        data = dat,
        method = "gam",
        trControl = trainControl(method = "LOOCV", number = 1, repeats = 1),
        tuneGrid = data.frame(method = "GCV.Cp", select = FALSE)
)

print(b)
summary(b$finalModel)

出力:

> print(b)
Generalized Additive Model using Splines 

400 samples
  9 predictors

No pre-processing
Resampling: 

Summary of sample sizes: 399, 399, 399, 399, 399, 399, ... 

Resampling results

  RMSE      Rsquared 
  2.157964  0.7091647

Tuning parameter 'select' was held constant at a value of FALSE

Tuning parameter 'method' was held constant at a value of GCV.Cp

> summary(b$finalModel)

Family: gaussian 
Link function: identity 

Formula:
.outcome ~ s(x0) + s(x1) + s(x2) + s(x3)

Parametric coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   7.9150     0.1049   75.44   <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(x0) 5.173  6.287   4.564 0.000139 ***
s(x1) 2.357  2.927 103.089  < 2e-16 ***
s(x2) 8.517  8.931  84.308  < 2e-16 ***
s(x3) 1.000  1.000   0.441 0.506929    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

R-sq.(adj) =  0.726   Deviance explained = 73.7%
GCV =  4.611  Scale est. = 4.4029    n = 400

0

mgcvライブラリpdfには、

「gam()は、gamモデル式で指定されたモデル構造を前提として、予測エラー基準または尤度ベースの方法を使用して、該当する各モデル項の適切な滑らかさを見つけようとします。使用される予測エラー基準は、一般化(近似)交差検証(GCVまたはGACV)は、スケールパラメーターが不明な場合、または既知の場合、バイアスなしリスク推定量(UBRE)です。」

"mgcvのガムは、一般化交差検証(GCV)基準を使用して平滑化パラメーター推定問題を解決します:nD /(n − DoF)2

または

偏りのないリスク推定(UBRE)基準:D / n + 2sDoF / n − s "

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