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()))