R での層別サンプリング (例あり)
研究者は多くの場合、母集団からサンプルを採取し、そのサンプルのデータを使用して母集団全体についての結論を導き出します。
一般的に使用されるサンプリング方法は、層化ランダムサンプリングです。このサンプリングでは、母集団をグループに分割し、各グループから一定数のメンバーがサンプルに含められるようランダムに選択されます。
このチュートリアルでは、R で層化ランダム サンプリングを実行する方法について説明します。
例: R での層化サンプリング
高校は、1 年生、2 年生、3 年生、または 4 年生の 400 人の生徒で構成されています。各学年から 10 人の生徒がサンプルに含まれるように、40 人の生徒の層別サンプルを取得するとします。
次のコードは、400 人の生徒のサンプル データ フレームを生成する方法を示しています。
#make this example reproducible set.seed(1) #create data frame df <- data.frame(grade = rep(c('Freshman', 'Sophomore', 'Junior', 'Senior'), each =100), gpa = rnorm(400, mean=85, sd=3)) #view first six rows of data frame head(df) gpa grade 1 Freshman 83.12064 2 Freshman 85.55093 3 Freshman 82.49311 4 Freshman 89.78584 5 Freshman 85.98852 6 Freshman 82.53859
行数を使用した層別サンプリング
次のコードは、 dplyrパッケージのgroup_by()関数とsample_n()関数を使用して、各学年 10 人の生徒計 40 人の層化ランダム サンプルを取得する方法を示しています。
library (dplyr) #obtain laminated sample strat_sample <- df %>% group_by (grade) %>% sample_n (size=10) #find frequency of students from each grade table(strat_sample$grade) Freshman Junior Senior Sophomore 10 10 10 10
行の一部を使用した層別サンプリング
次のコードは、 dplyrパッケージのgroup_by()関数とsample_frac()関数を使用して、各学年の 15% の生徒をランダムに選択する層別ランダム サンプルを取得する方法を示しています。
library (dplyr) #obtain laminated sample strat_sample <- df %>% group_by (grade) %>% sample_frac (size=.15) #find frequency of students from each grade table(strat_sample$grade) Freshman Junior Senior Sophomore 15 15 15 15