python 贝叶斯信息准则 (BIC) 函数
python function for bayesiasn information criterion (BIC)
我正在学习贝叶斯信息准则 (BIC) 来选择能更好地代表一组数据点的模型,我想计算一个 python 函数来评估 BIC 值。
我知道理论和主要方程:BIC=ln(n)k -2ln(L)
(来自here)
但实际上我不明白我必须做什么。
我有一组数据点和一个模型,但在我的函数中实现L
的逻辑段落是什么?
n
为数据点数
k
是我的模型中自由参数的个数
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
我正在学习贝叶斯信息准则 (BIC) 来选择能更好地代表一组数据点的模型,我想计算一个 python 函数来评估 BIC 值。
我知道理论和主要方程:BIC=ln(n)k -2ln(L)
(来自here)
但实际上我不明白我必须做什么。
我有一组数据点和一个模型,但在我的函数中实现L
的逻辑段落是什么?
n
为数据点数k
是我的模型中自由参数的个数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