R如何实现分层抽样(学习笔记)

#'strata(data,stratanames=NULL,size,method=c("srswor","srswr","poisson","systematic"),pik,description=FALS)

#'stratanames: 分层依据的变量名

#'size: 各层样本量

#'method: 选择4中抽样方法,分别为不放回简单随机(默认)、有放回简单随机、泊松、系统抽样

#'pik: 各层中样本的抽样概率

#'description: 选择是否输出含有各层基本信息的结果

#——————————————————————————————————————

#【example】

data=iris #提取R自带数据

data=data.frame(data)

N=nrow(data) #定义总体单元数

Nh=table(data$Species) #统计Species变量中元素及出现的频数,即每个子总体的单元数

Wh=Nh/N #计算总体中每层子总体的比例

L=length(unique(data$Species)) #定义层数

library(sampling)

#第一次抽样练习-每层不放回简单随机抽样(每层样本量一致)

nh=rep(5,L) #定义每层抽取5个个案,(若nh=Wh*n,且n已知,即为比例)

sample1=strata(data[order(data$Species),],"Species",nh,"srswor")

#将数据集的行按Species排序,以Species为分层依据,采取不放回简单随机方法,每层抽取5个个案

data_sample1=getdata(data,sample1) #提取抽到的样本单元数据

#第二次抽样练习-每层不放回简单随机抽样(每层样本量不一致)

nh=c(3,5,7)

sample2=strata(data[order(data$Species),],"Species",nh,method="srswor")#

data_sample2=getdata(data,sample2)

#第三次抽样练习-等概率系统抽样

nh=c(3,5,7)

prob=rep(sum(nh)/N,N) #poisson和systematic时需要设置pik

sample3=strata(data[order(data$Species),],"Species",nh,pik=prob,method="systematic")

data_sample3=getdata(data,sample3)

data_sample3

#第四次抽样练习—不等概率系统抽样

nh=c(3,5,7)

prob=data[,1] #参考inclusionprobabilities()函数了解pik设置的含义

sample4=strata(data[order(data$Species),],"Species",nh,pik=prob,method="systematic")

data_sample4=getdata(data,sample4)

data_sample4

写在最后:抽样的很多理论知识忘记了,学习的过程是从代码到理论理解,也许更好的学习方法,应该是先补理论,再到代码实践。此外,对pik的设置和inclusionprobabilities()函数的理解还不是太清晰,也欢迎路过这份笔记,有兴趣的小伙伴一起讨论学习。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部