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

追加リソース

サンプリング方法の種類
R でのクラスター サンプリング
R での体系的なサンプリング

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です