R语言两种方法实现随机分层抽样
创作时间:
作者:
@小白创作中心
R语言两种方法实现随机分层抽样
引用
CSDN
1.
https://blog.csdn.net/dege857/article/details/138675019
随机分层抽样是一种常用的统计抽样方法,通过将数据按特征分层,然后在每个层次中抽取一定量的样本,可以有效减少数据分布的不平衡,提高样本的代表性。本文将介绍如何使用R语言中的sampling包和dplyr包实现随机分层抽样。
使用sampling包进行随机分层抽样
首先,我们需要导入数据和sampling包:
library(sampling)
bc <- read.csv("E:/r/test/demo.csv", sep=',', header=TRUE)
这个数据集包含了体检相关的信息,其中SEX变量表示性别。我们将根据性别进行分层抽样。
函数格式
sampling包中的strata函数用于实现分层抽样,其基本格式如下:
strata(data, stratanames=NULL, size, method=c("srswor","srswr","poisson",
"systematic"), pik,description=FALSE)
data:待抽样的数据集stratanames:分层变量的名称size:每层的样本量method:抽样方法,包括不放回简单随机抽样(srswor)、放回简单随机抽样(srswr)、泊松抽样(poisson)和系统抽样(systematic)
示例代码
假设我们想按性别等比例抽取60%的样本:
n <- round(3/5 * nrow(bc) / 2)
sub_train <- strata(bc, stratanames="SEX", size=c(n, n), method="srswor")
table(sub_train$SEX)
如果想按不同比例抽取,例如男性190个,女性100个:
sub_train1 <- strata(bc, stratanames="SEX", size=c(190, 100), method="srswor")
table(sub_train1$SEX)
提取抽样后的数据:
data_train <- bc[sub_train$ID_unit, ]
data_test <- bc[-sub_train$ID_unit, ]
使用dplyr包进行随机分层抽样
dplyr包提供了更简洁的语法来实现分层抽样:
library(dplyr)
固定数量抽样
每组抽取固定数量250个:
strat <- bc %>% group_by(SEX) %>% slice_sample(n = 250)
按比例抽样
每组按一定比例抽样:
strat1 <- bc %>% group_by(SEX) %>% slice_sample(prop = 0.50)
dplyr包直接返回抽样后的数据,无需额外提取。
参考文献
热门推荐
各船型替代燃料、节能技术应用的比例都是多少?
房产周边配套怎么描述
卵白具有什么作用?
七夕节的习俗
桑椹茯苓泡水喝的功效与作用
“一日三次”服药的正确打开方式:不是三餐后,而是这样吃!
生产车间的plc编程软件
2025转职!9大简历(CV)秘诀让你成功获得面试关注!
氢氧化镁是沉淀吗?从性质到应用的全面解析
星币二正位:感情、事业、财运与灵性解读
如何用糯米粉做麻糬?
黄金投资应该选择什么股票?选择这些股票的依据是什么?
买房贷款常见的信用污点有哪些
生物教材封面青蛙课件
KOSHER犹太认证百科
犹太节日:光明节、安息日、逾越节等

玉桂的功效与作用
延续强劲发展势头 全球造船格局加速重构
油桶如何安全给汽车加油?这些加油方法有哪些注意事项?
农场起品牌名避坑指南:从商标注册到传播力
如何识别你的皮肤类型?护肤误区大揭秘!
深度学习入门指南
计算机二级证,考了真的 “香” 吗?一文为你揭秘!
当年明月:11岁读二十四史,写出《明朝那些事儿》之初却饱受质疑
“文献名邦”里的瑰宝——大理名碑
心脏自愈的六个方法是什么
赵构最信任的武将,杨家将后人,执掌禁军二十年,囚岳飞、斩岳云
赵构有多厉害,不仅只身一人建立南宋,还牢牢掌控国家大权
过硫酸钾:性质、制法、用途及安全性详解
商业银行的资金来源、净资产与资产业务详解