简单随机抽样
常选取70%的客户(数据)用于调研(建模),剩下30%用来测试。
用set.seed()这个函数设置随机种子,随机数的产生需要有一个随机的种子,因为用计算机产生的随机数是通过递推的方法得来的,必须有一个初始值。用同一台电脑,且在初始值和递推方法相同的情况下,可以产生相同的随机序列。 set.seed(100), set.seed(100), set.seed(33),前两组产生的样本相同。
clients<-read.csv("clients.csv")
set.seed(100)
select<-sample(1:nrow(clients),length(clients$client_id)*0.7,
replace=FALSE) #默认replace=FALSE不放回抽样
train_clinet<-clients[select,] #选取训练集数据
test_clinet<-clients[-select,] #剩下的测试集数据
分层抽样
按照变量bad_ind做分层抽样,
accepts <- read.csv("accepts.csv")
library(sampling)
fc<-prop.table(table(accepts$bad_ind)) #计算各层的占比
n<-round(nrow(accepts)*0.7,0) #计算抽取70%的总数量
n0<-n*fc[1] #计算bad_ind=0时应抽取多少
n1<-n*fc[2] #计算bad_ind=1时应抽取多少
sample_accepts_stra<-strata(
accepts,stratanames="bad_ind",
size =c(n1,n0),method="srswor",
description=TRUE) #默认srswor无放回抽样
table(sample_accepts_stra$bad_ind) #查看抽样结果是否正确
select<-getdata(accepts,sample_accepts_stra) #得到抽样数据
train<-accepts[select$ID_unit,] #整理训练数据集
test<-accepts[-select$ID_unit,] #从总数据集中减去训练数据集
#得到测试数据集
- 附:
strata(data,stratanames=NULL,size,method=c(“srswor”,”srswr”,”poisson”,”systematic”), pik,description=FALSE)
data: 带抽样数据。
stratanames: 进行分层所依据的变量名称。
size: 各层中要抽出的观测样本数。
method: 选择4中抽样方法,分别为无放回、有放回、泊松、系统抽样,默认为srswor。
pik: 设置各层中样本的抽样概率。
description: 选择是否输出含有各层基本信息的结果。