我正在使用bnlearn
包R
,我想知道包如何计算 BIC-g(高斯分布中的 BIC)。
让我们做一个结构,我可以找到BIC分数如下
library(bnlearn)
X = iris[, 1:3]
names(X) = c("A", "B", "C")
Network = empty.graph(names(X))
bnlearn::score(Network, X, type="bic-g")
bnlearn
为我提供有关如何计算此分数的更详细信息,
bnlearn::score(Network, X, type="bic-g", debug=TRUE)
这导致
----------------------------------------------------------------
* processing node A.
> loglikelihood is -184.041441.
> penalty is 2.505318 x 2 = 5.010635.
----------------------------------------------------------------
* processing node B.
> loglikelihood is -87.777815.
> penalty is 2.505318 x 2 = 5.010635.
----------------------------------------------------------------
* processing node C.
> loglikelihood is -297.588727.
> penalty is 2.505318 x 2 = 5.010635.
[1] -584.4399
我知道如何计算贝叶斯网络中离散数据的 BIC,请参阅此处。但我不知道它如何推广到联合高斯(多元正态)情况。
当然,它可能与近似似然性和惩罚项有关,并且似乎包过程计算每个节点的似然性和惩罚,然后将它们相加。
bnlearn::score(Network, X, type="loglik-g", debug=TRUE)
但我想知道如何根据数据具体计算可能性和惩罚。
我找到了解释(参见第 57 页)的材料Laplace Approximation
,但我无法将其联系起来。
有人帮我吗?