3 つのサイトから結合されたデータセットがあり、普遍的な関係がサイト固有の関係とどのように比較されるかを知りたいです。計画は k 分割交差検証です。このクロス検証された質問に基づいて、異なる数の観測で構成されているため、異なるサイトから比例的にサンプリングする必要があります。以前にk-fold cvを実行しましたcaret
:
library(dplyr)
library(caret)
dF=data_frame(y=runif(100,1,6),x1=runif(100),x2=runif(100),site=c(rep('a',20),rep('b',20),rep('c',60)) %>% group_by(site)
train_control<- trainControl(method="repeatedcv", number = 4, repeats = 3, savePredictions = TRUE)
model<- train(y~x1*x2+I(x2^2), data=dF, trControl=train_control, method='glmStepAIC',family=gaussian(link='log'))# no need to preprocess because x1 and x2 both have theoretical values (0,1].
しかし、より多くの観察結果を持つサイトがモデルのスキルに不当に影響を与えないように、パーティション分割をどのように変更できるかはまだわかっていません。
したがって、私が望む最終結果はr2のデータフレームであり、サイトa、b、c、およびすべてのデータをまとめた絶対誤差を意味します。同様に、各モデル シナリオでの x1 と x2 のパラメーターを知りたいです。
編集キャレットのドキュメントで
見つけdownSample
たのは、これに役立つと思われますが、エラーが発生し続けます。なぜこれが起こっているのか誰か知っていますか?OSX 10.11.1、R 3.2.2、caret_6.0-58
down_train <- downSample(x = dplyr::select(datadF,-basin), y = as.factor(datadF$basin))
Error in sample.int(length(x), size, replace, prob) :
cannot take a sample larger than the population when 'replace = FALSE'