首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用仿真计算概率

用仿真计算概率
EN

Stack Overflow用户
提问于 2019-05-24 02:05:40
回答 1查看 360关注 0票数 1

设X~U(0,30)为随机变量。如果取一个n=12样本,那么我们有兴趣知道这个比例大于18的概率,即$P(\overline X_{12}>18)$

不使用仿真和应用CLT,答案是.1150。

下面是我使用模拟在R中实现这一点的方法:

代码语言:javascript
复制
SimProb<-function(N)
{
n=12

M<-matrix(runif(1,0,30),N,n)
rowMeann<-rowMeans(M)

for(i in 1:N)
{
  if(rowMeann[i]>18)
    c=cumsum(rowMeann[i])
    c

}
prob<-1-c
return(prob)
}

代码没有显示任何错误,但不能正常工作。

当我检查的时候,发现c= 6.083532是不可能的。

对于不同的N值,SimProb只返回负值,我不明白为什么。

有人能帮帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-24 02:19:36

这是一个循序渐进的解决方案。

  1. 要生成单个样本,我们可以使用runif(12, 0, 30)
  2. 相应的样本平均值是mean(runif(12, 0, 30))
  3. 至于真实概率的估计,我们需要模拟许多这样的例子,这是可以用的。

代码语言:javascript
复制
replicate(mean(runif(12, 0, 30)), n = 10000)
  1. 然后我们要找到( mean(runif(12, 0, 30))大于18的次数)/ 10000,这可以用

代码语言:javascript
复制
set.seed(1)
mean(replicate(mean(runif(12, 0, 30)), n = 10000) > 18)
# [1] 0.1163

这确实非常接近你提供的价值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56284971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档