如何在R的blockrand()函数中设置组的不等分配及指定块大小?
解决blockrand包实现2:1分组、块大小3和6的问题
你之前的问题核心是没正确设置处理组比例参数:blockrand默认是1:1分组,此时block.sizes的数值会自动乘以组数(2)得到总块大小;当需要非1:1比例时,必须显式指定分组比例,此时block.sizes直接对应每个块的总样本量,包会自动按比例分配各组人数。
具体代码实现
library(blockrand) # 生成符合要求的随机分组 rand_output <- blockrand( n = 30, # 总样本量,需为3和6的公倍数,比如30、18、24等 treatments = c("A", "B"), # 两组名称,可自定义 treatment.ratio = c(2, 1), # 指定组A:组B = 2:1的分配比例 block.sizes = c(3, 6), # 直接设置目标块总大小为3和6 id.prefix = "PT-", # 受试者ID前缀,可自定义 block.prefix = "BLOCK-" # 块ID前缀,可自定义 ) # 查看前几条分组结果 head(rand_output)
结果验证
你可以通过以下代码检查每个块的分组是否符合2:1比例:
# 按块统计各组人数分布 table(rand_output$block, rand_output$treatment)
输出结果会显示:
- 大小为3的块:2个A、1个B
- 大小为6的块:4个A、2个B
关键注意事项
treatment.ratio = c(2,1)是实现2:1分配的核心,必须显式设置block.sizes直接填目标总块大小即可,无需做倍数调整- 总样本量
n需是3和6的公倍数,确保所有样本能被分配到完整的块中
内容的提问来源于stack exchange,提问作者Oscar
相关产品推荐
相关产品推荐

