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包直接返回抽样后的数据,无需额外提取。
参考文献
热门推荐
教你如何用AI技术创作全家福绘画照片
为什么这几大生肖更容易成功?
想成为FPGA工程师需要学什么?主要工作内容是什么?
9年随访病例揭示:肺结节风险评估需从"先来后到"转向"风险优先"
无偿献血科普:从历史到科学,全面解析献血安全
绯花玉的养殖方法
血小板波动揭秘:它们会一天一个样吗?
MySQL数据库连接创建指南:从安装到编程语言连接
微波消解仪的用途及优点
运城名胜古迹之魅力
腓总神经损伤脚肿怎么办
论文选题指南:11种研究视角助你写出优质论文
案例分析:员工提前30日通知辞职,单位有权要求立即走人吗?
艺术漆可以马上入住吗?深度解析环保性能与安全性
黄山烧饼的制作方法
美媒评西部各队表现评级:湖人A-,太阳仅获F,勇士B+,雷霆A+!
《津生有你——讲好献血者故事》系列——肖翰:献血,让生命延续;奉献,让真情永存
市面上各种成分的驱蚊产品,宝宝可以安全使用吗?
英国到北京飞行时间及距离详解
为何黄金下跌比特币飞涨?有何关联吗?
红烧海参怎么做 5种口味的红烧海参做法
TVBox接口配置详解:从HDMI到蓝牙,一文读懂常用接口功能
中国公民因私出国、出境证件申办程序及收费标准
顶楼冤种¥60+遮阳防晒小妙招
述情障碍—无法感知和表达情绪的人,到底有多痛苦?
周围神经损伤和中枢神经损伤的区别:病因、症状与治疗方法全解析
痛风病人能吃海参吗?
中国动力锂电池行业全景图谱:产业链、竞争格局与发展趋势
如何选择高质量的建筑材料?住宅质量如何保障?
如何提高团队成员的收入