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列的数据框。