from scipy.stats import beta
import matplotlib.pyplot as plt
import numpy as np
import sympy as sy
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
#X二项分布,n=5,x=3
#似然函数
x1=np.arange(0,1,0.01)
y1=10*x1**3*(1-x1)**2
plt.plot(x1,y1,label="似然函数")
#先验为U(0,1)
a,b=4,3
x2 = np.linspace(beta.ppf(0, a, b),beta.ppf(1, a, b), 100)#ppf分位数
plt.plot(x2, beta.pdf(x2, a, b),label="先验为U(0,1)")
# 先验为三角分布-2x+2
x3=np.arange(0,1,0.01)
y3=140*(-x3+1)*x3**3*(1-x3)**2
plt.plot(x3,y3,label="先验为三角分布-2x+2")
#先验分布为倒三角分布2x
x4=np.arange(0,1,0.01)
y4=105*x4**4*(1-x4)**2
plt.plot(x4,y4,label="先验为倒三角分布2x")
plt.title("不同先验分布下的后验分布对比\n X$\sim B(5,"r"\theta),x=3$")#latex语法,注意Python中“\”为转义字符
plt.legend()#图例,loc关键字传参
#算期望
xx=sy.symbols("xx")
yy=xx*105*xx**4*(1-xx)**2
sy.integrate(yy,(xx,0,1))
贝叶斯统计后验概率Python实现
最新推荐文章于 2024-02-19 21:47:25 发布