我正在进行Monty问题的模拟,并试图在R中求出置信区间的概率。
# set the door
door <- c(1,2,3)
# count success
count <- 0
MontyHallchallenge3 <- function(a){
for (i in 1:a) {
car <- sample(door, 1)
choice <- sample(door, 1)
if(car == choice){
host <- sample(setdiff(door, car), 1)
}else{
host <- setdiff(door, c(choice, car))
}
secondchoice <- setdiff(door, c(host, choice))
if(secondchoice == car){
count <- count + 1
}
}
p = count/a
return(mean(p))
}
b = c(2,10,100,1000)
mapply(MontyHallchallenge3, a = b)A是一个样本大小,并将其作为参数传递给函数。给我a= 2,10,100,1000,我应该创建每个置信区间。现在,它只迭代一次并得到这些。
> mapply(MontyHallchallenge3, a = b)
[1] 0.500 0.800 0.660 0.642我想迭代每一个样本1000次,以获得置信区间。有任何方法来设置mapply()中的迭代次数吗?
发布于 2020-10-01 03:58:27
您可以使用replicate对b中的每个值迭代1000次,并取其mean。
b = c(2,10,100,1000)
sapply(b, function(x) mean(replicate(1000, MontyHallchallenge3(x))))发布于 2020-10-02 00:28:43
我们可以将replicate与lapply结合使用
b <- c(2, 10, 100, 1000)
lapply(b, function(x) mean(replicate(1000, MontyHallchallenge3(x))))https://stackoverflow.com/questions/64148804
复制相似问题