python 贝叶斯信息准则 (BIC) 函数

python function for bayesiasn information criterion (BIC)

我正在学习贝叶斯信息准则 (BIC) 来选择能更好地代表一组数据点的模型,我想计算一个 python 函数来评估 BIC 值。

我知道理论和主要方程:BIC=ln(n)k -2ln(L)(来自here) 但实际上我不明白我必须做什么。

我有一组数据点和一个模型,但在我的函数中实现L的逻辑段落是什么?

作为替代方案,是否有已经实现了一些 BIC 功能的软件包?

更新 感谢@dang 我正在寻找一个更简单的等式 here:

BIC = n*log(residual sum of squares/n) + k*log(n)

这听起来比较熟悉,我唯一的问题是关于 k 值,我不确定它指的是我模型中的总参数数还是自由参数数。

但我有疑问:根据维基百科页面,第二个等式是 "the model errors or disturbances are independent and identically distributed according to a normal distribution" 情况下的近似值。 这个近似值合理吗?

谷歌搜索 bayesian information criterion python 在 pypi 上得到 RegscorePy library。它的BIC功能似乎很有帮助。

经过一些研究,我发现更好的选择是根据您的数据编写您自己的函数。 为了回答我上面的一个问题,k 是模型中自由参数的数量,而不是参数总数(即,不自由的参数被冻结)。

我自己的功能很简单:

def BIC_calc(free_param, stat, dof):
    n = dof + free_param
    k = free_param
    return stat + np.log(n)*k