R 中的系统采样(附示例)


研究人员经常从人群中抽取样本,并利用样本中的数据得出关于整个人群的结论。

常用的抽样方法是系统抽样,它通过简单的两步过程实现:

1.将群体中的每个成员按一定的顺序排列。

2.选择一个随机起点并n 中选择一个成员作为样本的一部分。

本教程介绍如何在 R 中执行系统采样。

示例:R 中的系统抽样

假设校长想要从一所共有 500 名学生的学校中获取 100 名学生的样本。她选择使用系统抽样,根据每个学生的姓氏按字母顺序排列,随机选择一个起点,并选择每五个学生作为样本。

以下代码展示了如何创建一个在 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 中的聚类采样

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注