BNLearn:如何将高斯贝叶斯网络的估计参数与其条件结构合并?
BNLearn: How to merge the estimating parameters of a Gaussian Bayesian network with its conditional structure?
我使用 iamb
函数定义了高斯贝叶斯网络的结构,然后使用 bn.fit
.
估计了节点的系数
图书馆
library(bnlearn)
数据
{ C E G N V W
48.83 51.48 42.64 54.1 42.96 41.96
48.85 73.43 40.97 60.07 65.29 48.96
67.01 71.1 52.52 51.64 63.22 62.03
37.83 49.33 56.15 49.01 47.75 38.77
55.3 49.27 63.55 54.62 60.57 56.66
56.12 48.72 66.02 43.95 55.54 52.39}
代码
# Definition of mandatory and forbidden nodes - here the white list
wl = data.frame(from = c("E","G","V","W","N"), to = c("V", "V","W","C","C"))
# Definition of the constrained network
network <- iamb(Data, test = "cor", whitelist = wl)
# Estimation of the coefficients according to the structure of the network
est.para <- bn.fit(network, data = Data)
问题是est.para
是一个列表而不是可以绘制的GBN等等。我想知道如何合并网络和估计参数?
如果你想要一些网络图来显示除连接之外的一些额外信息,你可以使用 strength.plot
。按照你的例子:
library(Rgraphviz)
strength <- arc.strength(network, Data)
strength.plot(network, strength, shape = "ellipse")
如果绝对需要使用 GBN est.para
参数的结果,您可以使用 graphviz.plot
参数来突出边和节点(可以使用 edgeRenderInfo
和 nodeRenderInfo
)。举个例子,您可以使用参数来选择边缘的宽度:
library(data.table)
plot <- graphviz.plot(network, shape = "ellipse")
arc.sizes <- data.table(network$arcs)
arc.sizes[, edge.name := paste0(arc.sizes$from, "~", arc.sizes$to)]
arc.sizes[, param := abs(est.para[[to]]$coefficients[[from]]), by = .(from, to)]
arc.sizes[, lwd := 5*((param - min(param))/(max(param) - min(param)))]
lwd <- as.vector(arc.sizes$lwd)
names(lwd) <- arc.sizes$edge.name
edgeRenderInfo(plot) <- list(lwd = lwd)
renderGraph(plot)
我使用 iamb
函数定义了高斯贝叶斯网络的结构,然后使用 bn.fit
.
图书馆
library(bnlearn)
数据
{ C E G N V W
48.83 51.48 42.64 54.1 42.96 41.96
48.85 73.43 40.97 60.07 65.29 48.96
67.01 71.1 52.52 51.64 63.22 62.03
37.83 49.33 56.15 49.01 47.75 38.77
55.3 49.27 63.55 54.62 60.57 56.66
56.12 48.72 66.02 43.95 55.54 52.39}
代码
# Definition of mandatory and forbidden nodes - here the white list
wl = data.frame(from = c("E","G","V","W","N"), to = c("V", "V","W","C","C"))
# Definition of the constrained network
network <- iamb(Data, test = "cor", whitelist = wl)
# Estimation of the coefficients according to the structure of the network
est.para <- bn.fit(network, data = Data)
问题是est.para
是一个列表而不是可以绘制的GBN等等。我想知道如何合并网络和估计参数?
如果你想要一些网络图来显示除连接之外的一些额外信息,你可以使用 strength.plot
。按照你的例子:
library(Rgraphviz)
strength <- arc.strength(network, Data)
strength.plot(network, strength, shape = "ellipse")
如果绝对需要使用 GBN est.para
参数的结果,您可以使用 graphviz.plot
参数来突出边和节点(可以使用 edgeRenderInfo
和 nodeRenderInfo
)。举个例子,您可以使用参数来选择边缘的宽度:
library(data.table)
plot <- graphviz.plot(network, shape = "ellipse")
arc.sizes <- data.table(network$arcs)
arc.sizes[, edge.name := paste0(arc.sizes$from, "~", arc.sizes$to)]
arc.sizes[, param := abs(est.para[[to]]$coefficients[[from]]), by = .(from, to)]
arc.sizes[, lwd := 5*((param - min(param))/(max(param) - min(param)))]
lwd <- as.vector(arc.sizes$lwd)
names(lwd) <- arc.sizes$edge.name
edgeRenderInfo(plot) <- list(lwd = lwd)
renderGraph(plot)