第二章第二节
一、 确定样本容量
x=seq(6,20,by =0.1)
y=2^(x)
plot(x,y)
samp = round(y)[-c(1:51)][-c(69:90)]
n <- length(samp)
二、确定样本质量:
###### 读取数据 mydata <- read.csv("D:/lending club/LoanStats3c.csv",header=T,skip=1) #读入数据,第一行有标题,所以要跳过第一行从第二行读起 data0 <- na.omit(mydata[,'annual_inc'])#删除annual_inc列的缺失值 N <- length(data0) #### 对数据进行分段,变成因子型数据 data1 <- cut(data0,breaks=c(0,10000*(1:10),150000,100000*(2:5),max(data0)))#数据分成15段 PD <- table(data1)/N x=seq(6,20,by =0.1) y=2^(x) plot(x,y) samp = round(y)[-c(1:51)][-c(69:90)] n <- length(samp) Q <- rep(0,n) J <- NULL |
##set.seed(1) 随机数种子 ########简单随机抽样 ## 选出68个样本量,求每个样本量里面的具体样本数都放在一个矩阵里,以备之后的apply使用 fun1 <- function(i) { #set.seed(1) p <- sample(data0, i) p <- c(p,matrix(NA, 1, samp[n]-length(p))) #将抽样变量统一长度 ##function里面能少用参数就少用 return(p) } samp <- as.matrix(samp) ma <- apply(samp, 1, fun1) ##求样本质量 fun2 <- function(datasam1) { datasam11 <- cut(na.omit(datasam1),breaks=c(0,10000*(1:10),150000,100000*(2:5),max(data0))) PS <- table(datasam11)/length(na.omit(datasam1))+0.0000000001 ##出现频数为0 J <- sum((PS-PD)*(log(PS/PD))) q <- exp(-J) return(q) } Q1 <- apply(ma, 2, fun2) plot(samp,Q1)
########分层随机抽样 ##首先求出样本矩阵 str <- length(levels(data1)) data2 <- cbind(data0,data1) fun3 <- function(s){ p <- NULL for(j in 1:str){ samp2 <- NULL samp2 <- sample((1:N)[data2[,2] == j],round(s*PD[j])) p <- c(p,samp2) } res <- c(data0[p],matrix(NA, 1, samp[n]+5-length(p))) return(res) } mb <- apply(samp, 1, fun3) Q2 <- apply(mb, 2, fun2) plot(samp, Q2) |
3、《大数据探索性分析》程序代码.docx
(68.21 KB, 需要: RMB 19 元)


雷达卡




京公网安备 11010802022788号







