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