模型和伪代码
所以我在 Python 中做了一些分析,虽然我使用了 pyMC 库,它隐藏了所有 MCMC 数学的东西。我将向您展示我是如何用半伪代码对其进行建模的,以及结果。
我将观察到的数据设置为X=5,Y=10.
X = 5
Y = 10
我以为N有泊松先验,泊松率为 aEXP(1). 这是一个相当公平的事前。虽然我可以在某个时间间隔内选择一些均匀分布:
rate = Exponential( mu = 1 )
N = Poisson( rate = rate)
你提到了 Beta 先验pX和pY,所以我编码:
pX = Beta(1,1) #equivalent to a uniform
pY = Beta(1,1)
我把它们结合起来:
observed = Binomial(n = N, p = [pX, pY], value = [X, Y] )
然后我对 50000 个样本执行 MCMC,烧录了大约一半。下面是我在 MCMC 之后生成的图。
解释:
让我们检查第一个图表N. N Trace图是样本,按顺序,我从后验分布生成。N acorr图是样本之间的自相关。也许还有太多的自相关,我应该更多地老化。最后,N-hist是后验样本的直方图。看起来平均值是 13。还要注意,没有从低于 10 的样本中抽取样本。这是一个好兆头,因为观察到的数据是 5 和 10,这是不可能的。
对于pX和pY图表。



不同的先验N
如果我们限制N作为 Poisson(20) 随机变量(并去除指数层次结构),我们得到不同的结果。这是一个重要的考虑因素,并表明先验可以产生很大的不同。请参阅下面的图表。请注意,这里的收敛时间也要大得多。
另一方面,使用 Poisson(10) 先验产生与 Exp 相似的结果。率先。
