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()函数的理解还不是太清晰,也欢迎路过这份笔记,有兴趣的小伙伴一起讨论学习。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
