Bootstrap

R-抽样

简单随机抽样

常选取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: 选择是否输出含有各层基本信息的结果。

;