3

これはばかげた質問かもしれませんが、それを行うためのパッケージが見つかりません...必要なものを取得するためにいくつかのコードを書くことができることは知っていますが、それを自動的に行う機能があると便利です!

したがって、基本的には、glm モデルの k 分割交差検証を実行したいと考えています。各検証セットの予測と実際の値も自動的に取得したいと考えています。したがって、10 倍の CV を実行している場合、実際の応答と予測をすべてまとめて 10 個の検証セットを返す関数が必要です。

前もって感謝します!

4

2 に答える 2

14

コメントに記載されているように、caretクロス検証が非常に簡単になります。次のように、「glm」メソッドを使用するだけです。

> library(caret)
> set.seed(2)
> dat <- data.frame(label=round(runif(100,0,5)),v1=rnorm(100),v2=rnorm(100))
> tc <- trainControl("cv",10,savePred=T)
> (fit <- train(label~.,data=dat,method="glm",trControl=tc,family=poisson(link = "log")))
100 samples
  2 predictors

No pre-processing
Resampling: Cross-Validation (10 fold) 

Summary of sample sizes: 90, 91, 91, 90, 90, 89, ... 

Resampling results

  RMSE  Rsquared  RMSE SD  Rsquared SD
  1.53  0.146     0.131    0.235      


> fit$finalModel$family

Family: poisson 
Link function: log 

> head(fit$pred)
      pred obs rowIndex .parameter Resample
1 2.684367   1        1       none   Fold01
2 2.165246   1       18       none   Fold01
3 2.716165   3       35       none   Fold01
4 2.514789   3       36       none   Fold01
5 2.249137   5       47       none   Fold01
6 2.328514   2       48       none   Fold01
于 2013-08-28T19:56:59.517 に答える
2

glm モデルを使用しているためcv.glm、 package から調査することをお勧めします。boot別のオプションは packagecvToolsです。ただし、CV 用に独自の関数を作成する方が便利であることがわかりました。途中で終了する CV 関数が必要なようです。私が見たほとんどの CV 関数は、すべての検証セットの予測誤差を平均し、平均値のみを返します (もちろん、クロス検証の定義です)。

于 2013-08-28T20:02:36.793 に答える