R中的双抽样方法
我的双重采样初始代码如下。我只做了一个样本R中的双抽样方法,r,arrays,multidimensional-array,R,Arrays,Multidimensional Array,我的双重采样初始代码如下。我只做了一个样本 # Data samples<-matrix(NA,nrow = 12, ncol = 2000) for (i in 1:12) { samples[i,]<- rbinom(2000,1,prob = 0.05) } # Double Sampling Plan accept<-rep(0,12) for (i in 1:12) { if (sum(samples[i,1:80])<=5){
# Data
samples<-matrix(NA,nrow = 12, ncol = 2000)
for (i in 1:12) {
samples[i,]<- rbinom(2000,1,prob = 0.05)
}
# Double Sampling Plan
accept<-rep(0,12)
for (i in 1:12) {
if (sum(samples[i,1:80])<=5){
accept[i]<-1
} else if (sum(samples[i,1:80]<=8) & sum(samples[i,1:80]>5) ) {
if (sum(samples[i,1:160])<=12) {
accept[i]<-1
}
}
}
sum(accept)
#数据
samples如果我们遵循@onyanbu的建议,我们可以在函数中嵌入一个模拟,并在如下循环中调用它:
one_double_sampling <- function(){
# Data
samples<-matrix(NA,nrow = 12, ncol = 2000)
for (i in 1:12) {
samples[i,]<- rbinom(2000,1,prob = 0.05)
}
# Double Sampling Plan
accept<-rep(0,12)
for (i in 1:12) {
if (sum(samples[i, 1:80])<=5){
accept[i]<-1
} else if (sum(samples[i,1:80]<=8) & sum(samples[i,1:80]>5) ) {
if (sum(samples[i,1:160])<=12) {
accept[i]<-1
}
}
}
return(sum(accept))
}
set.seed(123)
# number of sample
n <- 100
# stock the result
res <- rep(0, n)
for(i in 1:n){
res[i] <- one_double_sampling()
}
# mean
mean(res)
模拟随机变量时的一个良好做法是使用set.seed()
函数。有关双采样使用函数的说明,请参见其说明。只需编写一个函数,在1种情况下生成所需的内容。然后复制100个times@R埃米·库劳德,谢谢。你觉得剩下的代码怎么样?我在下面回答。只需做mean(复制(100,一双采样())
one_double_sampling <- function(){
# Data
samples<-matrix(NA,nrow = 12, ncol = 2000)
for (i in 1:12) {
samples[i,]<- rbinom(2000,1,prob = 0.05)
}
# Double Sampling Plan
accept<-rep(0,12)
for (i in 1:12) {
if (sum(samples[i, 1:80])<=5){
accept[i]<-1
} else if (sum(samples[i,1:80]<=8) & sum(samples[i,1:80]>5) ) {
if (sum(samples[i,1:160])<=12) {
accept[i]<-1
}
}
}
return(sum(accept))
}
set.seed(123)
# number of sample
n <- 100
# stock the result
res <- rep(0, n)
for(i in 1:n){
res[i] <- one_double_sampling()
}
# mean
mean(res)
mean(replicate(n, one_double_sampling()))