R语言如何实现数据抽样?
来源:网络收集 点击: 时间:2024-04-06读取数据集。这里以一个简单的数据集为例。
stu_data=data.frame(group=c(1班,2班,2班,1班,1班,2班,1班,2班),age=c(18,16-18,16,16-18,16-18,16-18,16-18,16-18),sex=c(F,M,F,F,M,M,F,M),score=c(100,92,91,88,81,80,75,66))
stu_data

无放回的简单随机抽样。
在对数据集进行抽取的过程中,一般先随机抽取行号,然后根据行号找到对应的数据集。
例如:
sample1=sample(nrow(stu_data),6,replace=F) #从stu_data总的观测样本个数中抽取6个。
sample1 #显示抽样结果
data1=stu_data #得到这6个数据集。
data1

有放回随机抽样。
sample2=sample(nrow(stu_data),6,replace=T) #有放回地随机抽样
data2=stu_data #得到抽样数据集
data2#查看抽样数据集
由于是有放回地,所以存在部分重复样本。重复的数据会有.1、.2等后缀标记,显示这条数据是重复抽了几次。

分层抽样。利用sampling包中的strata函数进行分层抽样,然后利用getdata获取抽样样本集。
sample3=strata(stu_data,stratanames=group,size=c(1,3),method=srswor) #按照group变量进行分层抽样,分别在1班、2班中抽取1和3个样本,抽样方式为无放回抽样。
sample3 #查看抽样结果
getdata(stu_data,sample3) #显示分层抽样的数据集

各层概率不相等的系统抽样。
sample4=strata(stu_data,stratanames=group,size=c(1,3),method=systematic,pik=stu_data$score) #分层抽样中method选择系统抽样,pik为各层中个样本的抽样概率
sample4 #查看抽样结果
getdata(stu_data,sample4) #获取抽样数据集
从结果中可以看出,score取值越大的,被抽到的概率越高。

利用cluster函数进行整群抽样。当群内样本差异大,群间差异较小时,可考虑整群抽样。例如抽取某一个班级的成绩数据集。
sample5=cluster(stu_data,clustername=group,size=1,method=srswor,description=TRUE) #以group作为划分群的变量,抽取群数size为1,抽样方法是无放回抽样,description显示抽样时各群基本信息。
sample5 #查看抽样结果
getdata(stu_data,sample5) #得到抽样数据集

如果提示没有strata函数,则需要安装sampling包:install.packages(sampling)
分层抽样时,先对要分层的变量进行排序,比如按照1班、2班进行升序排列。这样才能清楚每个层取的是几个观测值。
分层抽样简单随机抽样整群抽样STRATASAMPLE版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_449114.html