gpt4 book ai didi

python - 在Python中估计后验?

转载 作者:行者123 更新时间:2023-11-30 22:59:27 25 4
gpt4 key购买 nike

我是贝叶斯统计的新手,我正在尝试估计 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/

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