根据样本统计信息从二项分布中随机抽取

时间:2012-12-18 03:49:35

标签: r random montecarlo

编辑:改写问题,以明确我想要实现的目标。

我有一个观察到的数据集,我想从中使用一些信息来提供蒙特卡罗模拟。我在这项研究中使用R.

e.g。 8/8个人在我观察到的数据集中具有特定的特征。

我想要做的是使用此观察数据的采样分布来选择一些可能的人口比例来输入随机数生成器,然后我可以生成一些模拟计数(我还需要使用更大的分母)

观察数据和95%置信区间如下:

binom.test(8, 8)
## gives point estimate of 1 and 95% CI 0.63, 1
然后,我想从该采样分布中取出(例如)1000个随机抽取,以便为更大的分母(例如,每次迭代12次试验)提供随机二进制结果生成器。假设第一次随机抽取是0.75的机会有一个事件(下面的代码只是说明了一次迭代):

set.seed(456)    
rbinom(1, 12, 0.75)
## Gives a count of 11 events out of 12 for this single iteration.

我的问题是如何让R从观测数据的采样分布中提取概率(即这些绘制概率的95%应该落在0.63和1之间,形状由基础统计理论定义),我然后可以用来生成具有更大分母的随机计数(可能使用rbinom)。

编辑:我原来的帖子更复杂和令人困惑:我没有充分考虑使用人口参数的rbinom的影响,尽管我很确定这是我与rbinom“问题”的根源。感谢DavidRobinson和DWin的评论/答案澄清了我的答案以及我修改过的问题...

2 个答案:

答案 0 :(得分:1)

你很困惑......因为你的第一个问题是胡说八道......这是讨论的错误场所。有许多理论人群可以合理地,甚至难以置信地从二项式人口中产生8/8的观察到的伯努利系列图。假设你在一个瓮中有99个黑球和一个白球。如果在8次抽签中获得8/8个黑球并且更换是合理合理的。这种序列的概率为(99/100)^ 8 = 0.923

此代码显示了它在R“practice”中的工作原理

> set.seed(123)
> sum(rbinom(10000, 8, .99)==8)
[1] 9263

因此在这个模拟中,8个绘制序列中有92.63%的所有8个球都是黑色的。现在重新考虑你的要求并提出更多这样的问题(在stats.stackexchange。

答案 1 :(得分:1)

这个答案是由@DavidRobinson的评论(感谢!)制定的,他建议根据我观察到的数据做出合理概率的后验分布。

代码改编p。 Hoff,P.D。的42 (2009年),贝叶斯统计学第一期课程,Springer,NY。

## Set a uniform prior.
a <- 1; b <- 1
## Set observed data.
n <- 8; y <- 8

## Posterior 95% confidence interval:
qbeta(c(.025, .975), a+y, b+n-y)
## returns [1] 0.6637329 0.9971909

这非常接近基于二项分布的置信区间,由于先验的影响而略有不同。

binom.test(8, 8)
## returns  95% CI of 0.6305834 1.0000000.

现在我可以从这个后验分布中绘制一组随机概率,用于生成一些计数。我将在这里使用五个绘图进行说明。

set.seed(9876)
n.draws <- 5

## Use rbeta to get n.draws from posterior distribution.
drawn.probs <- rbeta(n.draws, a+y, b+n-y)

## Now I can use these drawn probabilities in rbinom to get simulated counts.
rbinom(n.draws, 12, drawn.probs)

感谢您的评论/回答 - 这让我意识到这不仅仅是我尝试使用rbinom时遇到的问题,而是我错过了一个中间步骤。