Exercise 1: Causal and statistical dependency.

For each of the following programs:

a)

var a = flip() 
var b = flip()
var c = flip(a && b ? .8 : .5)

b)

var a = flip() 
var b = flip(a ? .9 : .2)
var c = flip(b ? .7 : .1)

c)

var a = flip()
var b = flip(a ? .9 : .2)
var c = flip(a ? .7 : .1)

d)

var a = flip(.6)
var c = flip(.1)
var z = flip() ? a : c;
var b = z ? 'foo' : 'bar'

e)

var examFairPrior = Bernoulli({p: .8})
var doesHomeworkPrior = Bernoulli({p: .8})
var examFair = mem(function(exam) {return sample(examFairPrior)})
var doesHomework = mem(function(student) {return sample(doesHomeworkPrior)});

var pass = function(student, exam) {
  return flip(examFair(exam) ?
              (doesHomework(student) ? .9 : .5) :
              (doesHomework(student) ? .2 : .1));
}
var a = pass('alice', 'historyExam');
var b = pass('bob', 'historyExam');

Exercise 2: Epidemiology

Imagine that you are an epidemiologist and you are determining people’s cause of death. In this simplified world, there are two main diseases, cancer and the common cold. People rarely have cancer, , but when they do have cancer, it is often fatal, . People are much more likely to have a common cold, , but it is rarely fatal, . Very rarely, people also die of other causes .

Write this model in WebPPL and use Infer to answer these questions (Be sure to include your code in your answer):

Infer({method: 'enumerate'}, function() {
  ...
});

a) Compute and . How do these probabilities compare to and ? Using these probabilities, give an example of explaining away.

b) Compute and . How do these probabilities compare to and ? Using these probabilities, give an example of explaining away.