用贝叶斯估计给出身高体重的均值和方差(注意不是极大似然估计方法)
import numpy as np
import pandas as pd
from scipy.stats import norm
# 加载数据集
data = pd.read_csv('/home/aistudio/data/data14232/SG_TZ_Sample.csv')
x1 = data['x1'].values
x2 = data['x2'].values
# 贝叶斯估计的均值计算
def bayes_mean(data, prior_mu, prior_sigma):
posterior_mu = (prior_mu * np.sum(data) + np.sum(data)) / (prior_mu + len(data))
posterior_sigma = (prior_sigma ** 2 + np.sum((data - prior_mu) ** 2)) / (prior_mu + len(data))
return posterior_mu, posterior_sigma
# 设定先验分布的参数,这里我们假设先验分布的均值为0,标准差为10,这代表我们对数据的分布一无所知
prior_mu = 0
prior_sigma = 10
# 计算后验分布的均值和标准差
x1_posterior_mu, x1_posterior_sigma = bayes_mean(x1, prior_mu, prior_sigma)
x2_posterior_mu, x2_posterior_sigma = bayes_mean(x2, prior_mu, prior_sigma)