用マップ、きちんと::巣、と私はこれは私が何をしたいのかという点で少し私を助けてと思います - 私はちょうど一緒にそれを置くことはできません。アドバイス:: purrr対の操作を行います。私はちょうどpurrrパッケージに出くわした予測
私は、これはポストに沿ったものになるだろうと思いますが、私は多くの人がそううまくいけば、これは同様にそれらの使用であるに実行すると思う一般的な使用例を乗り越えます。異なるサブグループのそれぞれに複数のモデルを実行する一つの大きなデータセットから
- :
これは私が目指してるものです。
- 係数、精度などを調べるために、これらのモデルをすぐに利用できるようにしてください。
- 異なるグループごとにこの保存されたモデルリストから、対応するモデルを対応するテストセットグループに適用できます。
grouping_vals = c("cyl", "vs") library(purrr) library(dplyr) set.seed(1) train=mtcars noise = sample(1:5,32, replace=TRUE) test = mtcars %>% mutate(hp = hp * noise) # just so dataset isn't identical models = train %>% group_by_(grouping_vals) %>% do(linear_model1 = lm(mpg ~hp, data=.), linear_model2 = lm(mpg ~., data=.) )
- 私はこれまでのところ得ているが、私は、対応するグループ化された値については、「テスト」データセットに対応するモデルを「マップ」するのか分かりません。
- これで、linear_model1またはlinear_model2のトレーニングから、対応するグループのトレーニングデータを使用して残差を取得しようとしている可能性があります。
モデル$ linear_model1 [[2]] $ residualsは、model1の2番目のグループの残差を表示します。私はちょうどすべてのモデルが列車のデータセットに$ linear_model1 $残差をどのように言うかわかりません。
私の理解では、私は私のDO()モデルの作成を作成するときにtidyrの巣()関数が発生した同じことをやっているということです。
models_with_nest = train %>%
group_by_(grouping_vals) %>%
nest() %>%
mutate(linear_model2 = purrr::map(data, ~lm(mpg~., data=.)),
linear_model1 = purrr::map(data, ~lm(mpg~ hp+disp, data=.))
)
は再びちょうど簡単にトレーニングデータセットにこれらの残差/トレーニングの予測「をマッピングする」と私は上記で作成したような目に見えないテストデータセットに対応するモデルを適用し、適用することができるようにする方法を探してください。
私はちょうどそれを一緒に配置する方法を見つけ出すことはできませんここで約束の多くを見るので、これは混乱ではありません願っています。
は、私は、これは人々のトンは、このより「自動化」の方法で行うことができるようにしたいタスクである理解ではなく、一歩一人は非常にゆっくりやる何かとステップがあります。
パッケージほうきの 'augment'を追加するときに便利ですモデルに適合するために使用されたデータセットの残差。テストデータセットで予測を行うには、 'newdata'引数を使って' map'で 'predict'を使うことができます。あなたがまだそれを見ていないなら、dplyrで多くのモデルをフィッティングする例を見ているこの[talk by Hadley Wickham](https://www.youtube.com/watch?v=rz3_FDVt9eg)に興味があるかもしれません/ tidyr/purrr/broom。 – aosmith
はい私はBroomを考えましたが、実行しているモデルのほとんどはそれに従っていないようです - これは簡単な例でしたが、ニューラルネットワーク、SVM、ランダムフォレストなどを使って実行されると思っていました – runningbirds
http ://r4ds.had.co.nz/many-models.html? – hadley