python - 在Python中估计后验?

标签 python statistics probability bayesian poisson

我是贝叶斯统计的新手,我正在尝试估计 Python 中泊松分布(似然)和 Gamma 分布(先验)的后验。我试图估计的参数是泊松分布中的 lambda 变量。我认为后验将采用 Gamma 分布的形式(先验共轭?),但我不想利用它。我唯一得到的是数据(名为“my_data”)。这是我的代码:

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
%matplotlib inline
import scipy.stats 

x=np.linspace(1,len(my_data),len(my_data))
lambda_estimate=np.mean(my_data)

prior= scipy.stats.gamma.pdf(x,alpha,beta) #the parameters dont matter for now

likelihood_temp = lambda yi, a: scipy.stats.poisson.pmf(yi, a)
likelihood = lambda y, a: np.log(np.prod([likelihood_temp(data, a) for data in my_data]))

posterior=likelihood(my_data,lambda_estimate) * prior

当我尝试绘制后验图时,我得到一个空图。我绘制了先验图,看起来不错,所以我认为问题在于可能性。我获取日志是因为数据相当大,而且我不希望事情变得不稳定。谁能指出我的代码中的问题吗?任何帮助将不胜感激。

最佳答案

在贝叶斯统计中,一个目标是计算给定数据的参数 (lambda) 的后验分布以及 lambda 的一系列可能值的先验分布。在您的代码中,您计算​​数组 x 的先验,但您使用 lambda 的单个值来计算可能性。后验和可能性也应该超过 x,类似于:

posterior = [likelihood(my_data, lambda_i) for lambda_i in x] * prior

(假设您没有记录先验和可能性)

您可能想看看 PyMC3 库。

关于python - 在Python中估计后验?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35756579/

相关文章:

r - 为什么R的物流增长产出与另一个不同?

c++ - 如何根据一定的概率得到一个值

testing - 如何测试加密算法的质量?

python - 如何从并行进程中运行的函数中检索值?

python - 获取对当前异常的引用

c++ - 如何实现高效的C++运行时统计

r - 根据行和列元数据将 data.frame 中的一个值除以备用 data.frame 中的另一个值

python - 在 Scipy 中,为什么具有统一概率的 custom.rvs() 仅返回开始区域中的值?

python - DRF(django-rest-framework) Action 装饰器不工作

python - 在 Django/Python 中从网站抓取图像的有效方法