我在研究贝叶斯统计,我试图估计正态分布的平均值,给定正态先验和正态分布的数据。 我有公式来分析计算后验分布,但我想通过模拟来解决它,看看结果是否一致
平均值的先验值为N(160,10)。 我的数据是存储在熊猫数据帧的一列中的120个样本,它们遵循正态分布N(2562301)。 使用公式,我的平均值后验分布应该是N(195,6.57)
但是,绘制轨迹时,轨迹结果不一致。代码如下:
with pm.Model() as model:
mu = pm.Normal('parameters', mu=160, sd=50)
observed_data = pm.Normal(
'observed_data', mu=mu, observed=df['Cholestoral'])
with model:
# Sample from the posterior
trace = pm.sample(draws=300, chains=2, tune=300,
discard_tuned_samples=True)
如果我以这种方式绘制后验曲线,我会得到一个平均值为256且方差很小的正态分布。 如果我把我的数据的方差2301加到观察到的_数据中,我得到一个均值为160的后验a正态分布
我不明白我的代码出了什么问题。有人能帮忙吗
目前没有回答
相关问题 更多 >
编程相关推荐