By: Francis Smart
Re-posted from: http://www.econometricsbysimulation.com/2014/10/julia-distributions-package.html
You can find the excellent documentation on the “Distributions” package at:
http://distributionsjl.readthedocs.org/en/latest/index.html
# First let’s set the current directory
cd(“C:/Dropbox/Econometrics by Simulation/2014-10-October/”)
# This post uses the following distributions
using Distributions
using Gadfly
# I have got to say that I love the way Julia handles distributions
# as I discovered through this post.
# The Distributions package gives trenendous power to the user by
# providing a common framework to apply various function.
# For instance let’s say you want to draw 10 draws from a Binomial(n=10, p=.25) distribution
rand(Binomial(10, .25), 1, 10)
# 4 3 0 5 1 3 5 2 2 1
# Looks pretty standard right? Well, what if we want the mean?
mean(Binomial(10, .25))
# 2.5
# mode, skewness, kurtosis, median?
a = Binomial(10, .25)
println(“mode:”, mode(a), ” skewness:”, skewness(a),
” kurtosis:”, kurtosis(a), ” median:”, median(a))
# mode:3 skewness:0.3651483716701107 kurtosis:-0.06666666666666667 median:3
# Cool huh?
# Let’s see how we can use Gadfly to easily plot some distributions:
# First we generate the plot (assign it to a ‘p’ for later drawing to disk)
# In order to plot the different CDFs I will use an ‘anonymous’ function defined:
# argument -> f(argument)
p=plot([x -> cdf(Normal(5,5^.5), x),
x -> cdf(Gamma(3,1), x),
x -> cdf(Exponential(2), x)]
, 0, 10)
# Write the graph to disk
draw(PNG(“2014-10-06CDF.png”, 24cm, 12cm), p)
g = plot([x -> pdf(Normal(5,2), x),
x -> pdf(Gamma(3,1), x),
x -> pdf(Exponential(2), x)]
, 0, 10)
draw(PNG(“2014-10-06PDF.png”, 24cm, 12cm), g)