下面是一个用Python实现贝叶斯信息准则(BIC)的函数的示例代码:
import numpy as np
from scipy.stats import norm
def bic(data, k, log_likelihood):
n = len(data)
bic_value = -2 * log_likelihood + k * np.log(n)
return bic_value
# 示例数据
data = np.array([1.2, 1.4, 1.6, 1.8, 2.0])
# 最大似然估计的均值和方差
mu_ml = np.mean(data)
sigma_ml = np.std(data)
# 计算最大似然估计的对数似然值
log_likelihood_ml = np.sum(norm.logpdf(data, mu_ml, sigma_ml))
# 计算BIC值
bic_value_ml = bic(data, 2, log_likelihood_ml)
print("BIC值(最大似然估计):", bic_value_ml)
这个示例代码计算了一组示例数据的BIC值。首先,通过计算数据的最大似然估计的均值和方差。然后,使用norm.logpdf()
函数计算最大似然估计的对数似然值。最后,使用定义的bic()
函数计算BIC值。输出结果为BIC值(最大似然估计)。在这个例子中,k
参数为2,表示模型参数个数为2(均值和方差)。
下一篇:贝叶斯因子中的模型太多了