import sympy as sy
alpha_bar = 1 - 0.05
x = sy.symbols('x')
y = 1 / (sy.sqrt(2 * sy.pi) * 8.32) * sy.exp(-1 * ((x - 110.38) ** 2) / (2 * 8.32 ** 2)) # N(110.38,8.32^2)
dy = sy.diff(y,x) # 求导
max_x = sy.solve(dy) # 返回一个列表
max_y = y.subs(x,max_x[0]) # 密度函数最大值
k = max_y / 2
# k=k.evalf(5)#精度
ans = sy.solve([y - k])
theta_1_k = ans[0][x]
theta_2_k = ans[1][x]
s = sy.integrate(y,(x,theta_1_k,theta_2_k)) # 积分,计算概率
n = 1 # 统计运行次数
while True:
if s - alpha_bar > 1e-3:
k = k + 1e-3 # s大,k上移
print(n,":",theta_1_k,theta_2_k)
n = n + 1
elif alpha_bar - s > 1e-3:
k = k - 1e-3 # s大,k下移
print(n,":",theta_1_k,theta_2_k)
n = n + 1
else:
break
ans = sy.solve([y - k])
theta_1_k = ans[0][x]
theta_2_k = ans[1][x]
s = sy.integrate(y,(x,th
贝叶斯统计最大后验密度可信集Python实现2.0
本文介绍了使用Python进行贝叶斯统计分析,重点在于如何实现最大后验密度(MAP)可信集的方法。通过实例,详细阐述了整个运行过程,包括关键的代码实现和解释。
摘要由CSDN通过智能技术生成