home edit +

Sampling from Distributions

Bernoulli:

var coin = Bernoulli({p: .7});

viz.auto(coin)

Beta:

var showDist = function(dist) {
  var hist = Infer({method: 'rejection', samples: 1000}, function(){
    return sample(dist);
  });
  return viz.auto(hist);
};

showDist(Beta({a: 5, b: 1}));
showDist(Beta({a: 5, b: 5}));
showDist(Beta({a: 1, b: 5}));

Beta-binomial:

var betaBinomial = function(numHeads, numTails) {
  var p = sample(Beta({a: 1, b: 1}));
  var coin = Bernoulli({p: p});
  factor(coin.score(true) * numHeads);
  factor(coin.score(false) * numTails);
  return p;
};

var showBetaBinomial = function(numHeads, numTails) {
  viz.auto(Infer({method: 'rejection', samples: 10000}, function(){
    return betaBinomial(numHeads, numTails);
  }));
}

showBetaBinomial(4, 0);
showBetaBinomial(4, 4);
showBetaBinomial(0, 4);