Removing fast.iamb(): it is fast but very wrong
After looking into the performance of fast.iamb() with respect to the other IAMB structure learning
algorithms (link), there seems to be little reason to use it. Thus, I
have decided to remove it to keep the code size of bnlearn. Mostly, it will offset the implementation
of Direct LiNGAM (link), which is surely more of interest in
modern Bayesian network literature.
Firstly, fast.iamb() is faster than iamb() and inter.iamb(), but not by
significantly.
Secondly, fast.iamb() learns networks with higher SHD that those learned by iamb() and
inter.iamb() more often than not.
Overall, iamb() has smaller SHD 59.4% of the time, and
inter.iamb() 65.8% of the time.
Similarly, iamb() has smaller SID 57% of the time, and
inter.iamb() 61.4% of the time. In conclusion,
fast.iamb() is not especially faster and it is less accurate than both iamb() and
inter.iamb().
Sat Mar 28 13:54:21 2026 with bnlearn
5.2-20260320
and R version 4.5.2 (2025-10-31).