gpt4 book ai didi

r - 遍历列表并使用该列表中的元素

转载 作者:行者123 更新时间:2023-12-02 06:21:53 26 4
gpt4 key购买 nike

在下面的代码中,我希望能够执行类似 p=(1:99)/100 的操作,然后循环遍历 p,而不是从 p=0.01 开始然后递增它。例如,让 p=(1:99)/100 而不是 p=0.01。现在,我尝试用 p 替换 for 循环中的 1:99。然而,当我运行代码时,我开始遇到 coverage[i] 的问题(它返回 numeric(0))。看起来这应该是相当微不足道的,所以我希望我只是忽略了代码中的某些内容。

此外,如果您看到任何简单的效率提升,请随时参与!谢谢 =)

w=seq(.01,.99,by=.01)
coverage=seq(1:99)
p=0.01

for (i in 1:99){
count = 0
for (j in 1:1000){
x = rbinom(30,1,p)
se=sqrt(sum(x)/30*(1-sum(x)/30)/30)
if( sum(x)/30-1.644854*se < p && p < sum(x)/30+1.644854*se )
count = count + 1
}
coverage[i]=count/1000
print(coverage[i])
p=p+0.01
}

最佳答案

我会在中间部分而不是外部循环上工作。

coverage <- p <- 1:99/100
z <- qnorm(0.95)

for (i in seq(along=p) ){
# simulate all of the binomials/30 at once
x <- rbinom(1000, 30, p[i])/30

# ses
se <- sqrt(x * (1-x)/30)

# lower and upper limits
lo <- x - z*se
hi <- x + z*se

# coverage
coverage[i] <- mean(p[i] > lo & p[i] < hi)
}

这对我来说几乎是瞬间的。诀窍是矢量化这些模拟和计算。在我使用了 6 年的 Mac Pro 上,增加到 100,000 次模拟重复只用了 4 秒。

(您需要增加重复以查看结果中的结构;plot(p, coverage, las=1) 100k 次重复给出以下结果;不清楚仅重复 1000 次。) plot of coverage

关于r - 遍历列表并使用该列表中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7563680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com