You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R语言的mstage()函数实现两阶段分层抽样?

用R的mstage()实现两阶段分层抽样

mstage()函数可以一次性完成你需要的两阶段分层抽样,以下是参数补全说明和完整代码:

参数补全逻辑

  • stage:两阶段均为分层抽样,因此填list("stratified", "stratified")
  • varnames:两次抽样都基于group列分层,因此填list("group", "group")
  • size:
    • size1:总体各层的原始规模(已由table(data_sample_frame$group)正确生成)
    • size2:第一阶段抽样量,对应A/B/C组的10/20/30条
    • size3:第二阶段抽样量,对应A/B/C组的5/10/15条,填c(5,10,15)
  • method:分层抽样采用无放回简单随机抽样,填list("", "srswor", "srswor")(第一个空对应总体框架,无需指定方法)

完整代码

library(sampling)
library(data.table)

set.seed(345092123)

data_sample_frame <- 
  data.table(group = sample(LETTERS[1:3], 
                            500, 
                            prob = c(1, 2, 3),
                            replace = T))

data_sample_frame[, id := 1:.N]

setorder(data_sample_frame, group)

set.seed(2340598)

# 运行mstage两阶段抽样
sampling_result <- mstage(data_sample_frame,
       stage = list("stratified", "stratified"),
       varnames = list("group", "group"),
       size = list(size1 = table(data_sample_frame$group),
                   size2 = c(10, 20, 30),
                   size3 = c(5,10,15)),
       method = list("", "srswor", "srswor"))

# 提取最终样本
final_sample <- getdata(data_sample_frame, sampling_result)
# 验证样本规模
table(final_sample$group)

注意事项

  • srswor是无放回简单随机抽样,若需要有放回抽样,可替换为srswr
  • 运行后通过getdata()函数可直接从原数据框中提取最终的两阶段抽样样本

内容的提问来源于stack exchange,提问作者zeming

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 17:10:13