Biology Reference
In-Depth Information
The arcs identified as significant with this approach are the same as in
avg.boot
(even though some of them are reversed), thus confirming the stability of the av-
eraged network obtained from bootstrap resampling. A comparison of the equiva-
lence classes of
avg.boot
and
avg.start
suggests that the two networks are
equivalent.
> all.equal(cpdag(avg.boot), cpdag(avg.start))
[1] TRUE
Furthermore, note that averaged networks, like the networks they are computed
from, are not necessarily completely directed. In that case, it is not possible to com-
pute their score directly. However, we can identify the equivalence class the aver-
aged network belongs to (with
cpdag
) and then select a DAG within that equiva-
lence class (with
cextend
).
> score(cextend(cpdag(avg.start)), dsachs,
+ type = "bde", iss = 10)
[1] -8498.877
Since all networks in the same equivalence class have the same score (for score
equivalent functions), the value returned by
score
is a correct estimate for the
original, partially directed network.
We can also compute such averaged network structures from bootstrap samples
using the algorithms implemented in
catnet
,
deal
,and
pcalg
. For this purpose, bn-
learn provides a
custom.strength
function that requires only a list of arc sets
as argument, thus facilitating interoperability.
For example, we can replace the hill-climbing search used above with the simu-
lated annealing search implemented in
catnet
as follows:
> library(catnet)
> netlist = vector(500, mode = "list")
> ndata = nrow(dsachs)
> netlist = lapply(netlist, function(net) {
+ boot = dsachs[sample(ndata, replace = TRUE), ]
+ nets = cnSearchOrder(boot)
+ best = cnFindBIC(nets, ndata)
+ cnMatEdges(best)
+})
> sa = custom.strength(netlist, nodes = nodes)
> sa[(sa$strength > 0.85) &
+
(sa$direction >= 0.5), ]
from
to strength direction
1
praf
pmek
1.00
0.5
11
pmek
praf
1.00
0.5
23
plcg
PIP2
0.99
0.5
33
PIP2
plcg
0.99
0.5
34
PIP2
PIP3
1.00
0.5
Search WWH ::
Custom Search