[R] bnlearn: how to compute boot strength with mmhc and a blacklist

Leonore Wigger leonore.wigger at unil.ch
Fri Apr 12 14:25:07 CEST 2013

Thanks a lot, Marco. This works. And your remark regarding less reliable 
arc strengths with "cpdag=FALSE" was very helpful.

Le 12/04/2013 11:08, Marco Scutari a écrit :
> Dear Leonore,
> On Wed, Apr 10, 2013 at 5:51 PM, Leonore Wigger <leonore.wigger at unil.ch> wrote:
>> Question: I have specified a blacklist. I would have expected this to
>> completely disallow the arcs on the blacklist. But the result shows that
>> some of the blacklisted arcs have a strength > 0 (rows 7,8,10,11). It
>> seems that only the arc that was blacklisted in both directions was
>> actually banned (x1-x2, in rows 9 and 12). What is the reason for this?
>> Is there a way to completely disallow all blacklisted arcs, such that
>> their strength is 0.0? Or is there a compelling reason why that should
>> not be done?
> Because by default boot.strength() runs with "cpdag = TRUE". This
> means that reversible arcs can have positive strength in both
> directions. You should set "cpdag = FALSE" to get the result you are
> expecting. In that case the probabilities of the arc directions should
> be taken with a grain of salt, as they can be influenced by many
> things (optimized = TRUE/FALSE, order of the variables in the data
> set) unless you are doing causal modelling.
>> This code makes 50 different networks from the same data, then uses them
>> as input for custom.strength. The networks are constructed using the
>> algorithm "hc". A different network is produced every time "hc" is
>> invoked because a random starting network is supplied to the parameter
>> "start". I would like to do the same thing, but use "mmhc" instead of
>> "hc". However, in my hands, the networks that are constructed by "mmhc"
>> are all identical, and I am not sure how to introduce a random element
>> into the construction. Question: Which parameters do I need to give to
>> "mmhc" in order to obtain a different network every time it is run on
>> the same data set?
> This is not surprising, because mmhc() does not have a "start"
> argument, so it's starting from the same network over and over. There
> is no way to provide a random seed to mmhc(), so the only way to
> perturb it is through bootstrap.
> Marco

Leonore Wigger
University of Lausanne
Genomic Technologies Facility
Génopode Building
1015 Lausanne

++41 (0)21 692 41 16

More information about the R-help mailing list