R での系統的サンプリング (例付き)


研究者は多くの場合、母集団からサンプルを採取し、そのサンプルのデータを使用して母集団全体についての結論を導き出します。

一般的に使用されるサンプリング方法は系統的サンプリングであり、これは単純な 2 段階のプロセスで実装されます。

1.母集団の各メンバーを特定の順序で配置します。

2.ランダムな開始点を選択し、サンプルの一部となるメンバーを n 人から1 人選択します。

このチュートリアルでは、R で体系的なサンプリングを実行する方法について説明します。

例: R での体系的なサンプリング

校長が、合計 500 人の生徒がいる学校から 100 人の生徒のサンプルを取得したいとします。彼女は、各生徒を姓に基づいてアルファベット順に配置し、開始点をランダムに選択し、サンプルに含める生徒を 5 人ごとに選択するという体系的なサンプリングを使用することを選択しました。

次のコードは、R で使用する偽のデータ フレームを作成する方法を示しています。

 #make this example reproducible
set.seed(1)

#create simple function to generate random last names
randomNames <- function (n = 5000) {
  do.call(paste0, replicate(5, sample(LETTERS, n, TRUE), FALSE))
}

#create data frame
df <- data.frame(last_name = randomNames(500),
                 gpa = rnorm(500, mean=82, sd=3))

#view first six rows of data frame
head(df)

  last_name gpa
1 GONBW 82.19580
2 JRRWZ 85.10598
3 ORJFW 88.78065
4 XRYNL 85.94409
5 FMDCE 79.38993
6 XZBJC 80.49061

次のコードは、体系的なサンプリングを通じて 100 人の生徒のサンプルを取得する方法を示しています。

 #define function to obtain systematic sample
obtain_sys = function (N,n){
  k = ceiling(N/n)
  r = sample(1:k, 1)
  seq(r, r + k*(n-1), k)
}

#obtain systematic sample
sys_sample_df = df[obtain_sys( nrow (df), 100), ]

#view first six rows of data frame
head(sys_sample_df)

   last_name gpa
3 ORJFW 88.78065
8 RWPSB 81.96988
13 RACZU 79.21433
18 ZOHKA 80.47246
23 QJETK 87.09991
28 JTHWB 83.87300

#view dimensions of data frame
dim(sys_sample_df)

[1] 100 2

サンプルに含まれる最初のメンバーは、元のデータ フレームの行 3 にあったことに注意してください。サンプルの次の各メンバーは、前のメンバーの 5 行後に配置されます。

そしてdim()を使用すると、取得した体系的なサンプルが 100 行 2 列のデータ フレームであることがわかります。

追加リソース

サンプリング方法の種類
R での層別サンプリング
R でのクラスター サンプリング

コメントを追加する

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