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包直接返回抽样后的数据,无需额外提取。
参考文献
热门推荐
ARP欺骗攻击原理与防护措施详解
托帕石的六大颜色:从红色帝王到无色钻石
身上有小红点像血点不痛不痒怎么办
逝者 | BCS超导理论开创者库珀去世,享年94岁
“词家之冠”周邦彦最经典的10首,雨后风荷,江南倦客,值得收藏
小孩扁桃体发炎怎么办?最有效的5种治疗方法
耳鸣 是身体在发出警告!
赞美春天的古诗20首
脑有疾,耳先知?当耳朵出现这几种迹象,多是大脑发出的求救信号
经颅多普勒检测仪是怎么检查脑血管的
自媒体一年能赚1000万,他们究竟有何独特运营秘诀?
签订合同时需要注意什么?律师教你避免合同纠纷的秘诀
重庆30个免费公园全攻略!从湿地公园到滨江公园,总有一款适合你
汽缸压力过低表现现象、原因及故障诊断排除
如何处理因着凉引起的头晕、恶心、不消化的症状
测绘地理信息服务行业深度研究报告
新生儿衣物洗涤有标准,7个要点新手爸妈要谨记
揭秘DC-DC转换器设计:环路补偿如何影响你的电源稳定性
乡镇综合行政执法队的职责与实践
辛亥革命内容概括:一场改变中国命运的革命
报销电子化系统:如何实现企业报销的数字化管理?
全口牙种植需要怎么护理?
战国时期新兴的地主阶级的崛起与影响
湖南省考资料分析:易混淆的概念与公式
C919国产动力,CJ1000A发动机召开适航取证大会,关键就在这一步
电脑不识别硬盘怎么办?原因分析与解决方案全攻略
以为是腰突?7步鉴别梨状肌综合征!含治疗要点
徐迟:《江南小镇》(节选)
WLK怀旧服P3阶段TOC 生存猎BIS装备宝石附魔推荐
火炎土燥的八字详解:特征、影响与化解方法