I gave a talk at Microsoft Research Cambridge with the title "Typed functional probabilistic programming: ready for practical use?" I am grateful to Drew Purves for inviting me; I enjoyed talking to all the talented people working there. They have several projects that are closely related to BayesHive and Baysig.
One of the interesting things you can do with probabilistic programming is to forecast the future evolution of a timeseries. One thing you need to do this is a model of the system, but you also need to handle the uncertainty correctly. In this blog post, I will show the impact of taking into consideration the uncertainty associated with parameter estimation. I will use Baysig, our purely functional, spatio-temporal, probabilistic programming language, but a similar analysis can be carried out in any other probabilistic programming language. I will use an example from financial data analysis, because stochastic models of financial data have been explored for some time and the data are readily available. However, these principles apply equally to scientific, retail or industrial data.
If I had a penny for every time I heard someone say: "They should have plotted this on a log-scale!" then... I might not be rich, but I could afford several cups of coffee. Even the really expensive ones from Starbucks.
The most successful languages for scientific data analysis are currently MATLAB, R, and Python, with Clojure and Julia1 playing catch-up. Did you notice that all of these have something in common? They are dynamically typed. The heavy-weight Fortran or C++ may be pulled out when performance is critical, but are often not the first go-to tool for researchers in many fields.
Lately, we have made a lot of progress on the BayesHive web application:
Thanks to everyone who logged in to have a look around over the last few months. You have provided a lot of valuable feedback about what worked and what didn't. We have fixed a lot of bugs as a result.
This document will show a simple Bayesian statistical analysis in the Baysig language. The code that carries out this analysis is generated by BayesHive through the "Linear regression" model builder, so you don't have to type it out yourself if you want to do something similar with your own data. But in this document, I want to go a bit more into the meaning of this code.
The web server component of BayesHive is built using Yesod, a web framework for Haskell that combines type safety and good performance with lightweight syntax for routes, persistence and templates. This post is written for other users of Yesod or Haskell, or those who are comparing Yesod and maybe Haskell to other development environments.
BayesHive has now reached a level of stability where we would like to ask for some feedback and beta testing from a larger number of users. BayesHive is still a prototype product, so we are not asking anyone to pay for using it. At this stage we mostly value your input on how ready BayesHive is in supporting your day-to-day data analysis needs. You can use the Feedback system inside BayesHive, or email us on firstname.lastname@example.org.