## Announcing the F# R Type Provider

August 1, 2012 at 2:52 pm | Posted in opensource | 24 CommentsTags: econometrics, fsharp, github, opensource, R, statistics

Here at BlueMountain we like to perform statistical analysis of data. The stats package R is great for doing that. We also like to use the data retrieval and processing capabilities of F#. F#’s interactive environment lends itself pretty well to data exploration, and we can also easily access our existing .NET-based libraries. Once we are done, we can build and release production-supportable applications.

Nothing on the .NET platform competes with R for statistical functionality, so we set about bridging the gap between F# and R. F# 3.0 provides a nice innovative mechanism for doing this, through Type Providers.

We have released an Open Source RProvider on github. Here’s an example of how to use it:

// Pull in stock prices for some tickers then compute returns let data = [ for ticker in [ "MSFT"; "AAPL"; "VXX"; "SPX"; "GLD" ] -> ticker, getStockPrices ticker 255 |> R.log |> R.diff ] // Construct an R data.frame then plot pairs of returns let df = R.data_frame(namedParams data) R.pairs(df)

Any of the calls above that begin R. are actually evaluated inside the R engine.

This produces a lovely pair plot like this:

While we intend to continue to enhance the provider to meet our needs, we really hope others will do the same. If you use F# and work in the statistical/econometrics space, please try it out. If you use R and are looking for a robust environment in which to develop applications, also try it (and F#) out. If you have ideas for improvements, please feel free to share them with us. And if you develop enhancements/fixes, please submit a pull request!

The RProvider is built on the RDotNet project, which handles all the gnarly interop with unmanaged data structures used by R.DLL. The Type Provider provides an easy-to-use layer on top of that to use R from F#. Many thanks go to the RDotNet author, Kosei.

Blog at WordPress.com.

Entries and comments feeds.