All problems
Normal-Normal Posterior Mean
Problem
A normal prior with mean prior_mean and variance prior_var is updated with n observations whose sample mean is data_mean and whose known variance is data_var. The posterior mean is the precision-weighted average (prior_mean / prior_var + n * data_mean / data_var) divided by (1 / prior_var + n / data_var). Return prior_mean when n <= 0 or either variance is nonpositive.
Hint
Precisions add, and the posterior mean is the precision-weighted average of the prior mean and data mean.
Test cases
case 1
in: [0,1,1,1,1]
expected: 0.5
case 2
in: [0,1,0,1,10]
expected: 0
case 3
in: [2,4,6,1,2]
expected: 5.555555555555555
case 4
in: [5,2,10,4,0]
expected: 5
case 5
in: [1,0.5,0,2,3]
expected: 0.5714285714285714
Starter codePython
def normal_normal_posterior_mean(prior_mean, prior_var, data_mean, data_var, n):
# Your code here
pass5 test cases · run your code against them in the editor