测试环境:
pymc3==3.11.2
代码:
import numpy as np
import pymc3 as pm
import matplotlib.pyplot as plt
if __name__ == '__main__':
# 生成随机数据
np.random.seed(123)
x = np.linspace(0, 1, 100)
y = 0.5 * x + np.random.normal(0, 0.1, size=100)
# 定义概率模型
with pm.Model() as model:
# 定义先验分布
alpha = pm.Normal('alpha', mu=0, sd=1)
beta = pm.Normal('beta', mu=0, sd=1)
sigma = pm.HalfNormal('sigma', sd=1)
# 定义线性关系
mu = alpha + beta * x
# 定义似然函数
likelihood = pm.Normal('y', mu=mu, sd=sigma, observed=y)
# 进行贝叶斯推断
trace = pm.sample(1000, tune=1000)
# 可视化结果
pm.traceplot(trace)
plt.show()
结果: