In [ ]:
Pkg.status()
In [ ]:
Pkg.add("Sigma")
In [ ]:
Pkg.checkout("Sigma") # Update to latest version
In [ ]:
using Sigma
In [ ]:
## Very simple reasoning
## =====================
person_is_man = flip(0.7)
person_is_mortal = ifelse(person_is_man,
true,
flip(0.777))
prob(person_is_mortal)
In [ ]:
prob(person_is_man, person_is_mortal)
In [ ]:
prob(person_is_mortal, person_is_man)
In [ ]:
## Paramter Estimation
## ===================
λ = uniform(0,2)
x = mvexponential(λ, 3)
observations = x == [0.083, 0.55, 2.37]
λsamples = rand(λ, observations, 1000; precision = 0.001)
In [ ]:
plot(x=λsamples, Geom.histogram)
In [ ]:
using PyPlot
In [ ]:
## Sample from implicit equations
## ==============================
X = uniform(-2,2)
Y = uniform(-2,2)
Z = uniform(-2,2)
# Constants control shape of elipsoid
a = 2
b = 1
c = 0.5
ellip_cond = ((X*X)/(a*a) + (Y*Y)/(b*b) + (Z*Z)/(c*c)) == 1.0
xyz = RandArray([X,Y,Z])
samples_ellipsoid = rand(xyz, ellip_cond, 1000)
In [ ]:
scatter3D([s[1] for s in samples_ellipsoid], [s[2] for s in samples_ellipsoid], [s[3] for s in samples_ellipsoid])
In [ ]:
## Matrix Factorization
## ====================
matrix_to_factorize = [ 0.266358 0.136936 0.202717 0.332619
0.0819769 0.0283733 0.0352097 0.088259
0.632486 0.364566 0.55913 0.8302
1.008 0.468944 0.669905 1.20826 ]
# Factors have prior probabilities
# Create random array size 5x2, all uniformly distributed between 0 and 1
W = mvuniform(0.0,1.0,4,2)
H = mvuniform(0.0,1.0,2,4)
W_sample, H_sample = rand((W,H), W*H == matrix_to_factorize; precision = 0.01)
W_sample * H_sample