Infer.net and WinBUGS (Migrated from community.research.microsoft.com) RRS feed

  • Question

  • antianticamper posted on 04-26-2010 3:27 PM


    Hello all,

    I have been fitting multilevel models in WinBUGS and recently discovered Infer.net.  I was wondering if anyone could briefly compare the two inference methods for _practical applications_.  I understand the mathematical distinctions between using MCMC and variational methods but I was hoping for some insight into the practical decision of using Infer.net vs. WinBUGS for various problems.

    I realize this is probably a basic question so references to previous postings or the literature MUCH appreciated.



    Friday, June 3, 2011 5:41 PM


  • minka replied on 04-27-2010 10:53 AM

    If your question is about MCMC versus variational methods, the short answer is that variational methods are significantly faster, which makes a practical difference when you have a large dataset or want to compare many different models/parameter settings on the same data.  Variational methods are also particularly handy for online processing of streaming data.  The loss of accuracy should only be an issue if your model has a high degree of nonlinearity and many unknown variables, or if you are particularly interested in the tails or high-order moments of the posterior distribution.  If you are using simple multilevel models like normal-normal or beta-binomial and you only care about posterior means and variances, then variational methods should be sufficiently accurate.

    If your question is more broadly about using WinBUGS vs. Infer.NET, there are many practical differences besides the inference algorithms.  Here is a list:

    • Infer.NET does not have a graphical editor for probabilistic models, like WinBUGS does.
    • Infer.NET does not (yet) support as many distribution types as WinBUGS.
    • Infer.NET can be extended to support new distributions and factors using a plugin mechanism.
    • Infer.NET has a more powerful modelling language, allowing derived variables to be observed, supporting jagged arrays, and 'if' statements.
    • Infer.NET can compute marginal likelihoods (Bayes factors) for comparing models.
    • Infer.NET allows different inference algorithms to be tried on the same model.
    • Infer.NET can solve problems that are larger than the memory size of the computer, using 'shared variables' to divide up the problem.
    • Infer.NET is structured as a compiler, allowing generated code to be embedded into applications.  

    Hope this helps.

    Friday, June 3, 2011 5:41 PM