clip_03_05

Load Julia packages (libraries) needed

using StatisticalRethinking
gr(size=(600,300))
Plots.GRBackend()

snippet 2.3

Define a grid

N = 20
p_grid = range( 0 , stop=1 , length=N )
0.0:0.05263157894736842:1.0

Define the (uniform) prior

prior = ones( 20 )
20-element Array{Float64,1}:
 1.0
 1.0
 1.0
 1.0
 1.0
 1.0
 1.0
 1.0
 1.0
 1.0
 1.0
 1.0
 1.0
 1.0
 1.0
 1.0
 1.0
 1.0
 1.0
 1.0

Compute likelihood at each value in grid

likelihood = [pdf(Binomial(9, p), 6) for p in p_grid]
20-element Array{Float64,1}:
 0.0
 1.5181489823498353e-6
 8.185092949558011e-5
 0.0007772922789631156
 0.0035985753655699746
 0.01116094609366412
 0.0266829865137807
 0.052921099147992784
 0.09082697598243343
 0.13834132601662863
 0.18976862279372927
 0.23611465826683395
 0.26661125168434857
 0.27140056190174167
 0.24500508864811482
 0.18976862279372927
 0.1179181175789971
 0.05026670207647313
 0.008853844865064258
 0.0

Compute product of likelihood and prior

unstd_posterior = likelihood .* prior
20-element Array{Float64,1}:
 0.0
 1.5181489823498353e-6
 8.185092949558011e-5
 0.0007772922789631156
 0.0035985753655699746
 0.01116094609366412
 0.0266829865137807
 0.052921099147992784
 0.09082697598243343
 0.13834132601662863
 0.18976862279372927
 0.23611465826683395
 0.26661125168434857
 0.27140056190174167
 0.24500508864811482
 0.18976862279372927
 0.1179181175789971
 0.05026670207647313
 0.008853844865064258
 0.0

Standardize the posterior, so it sums to 1

posterior = unstd_posterior  ./ sum(unstd_posterior)
20-element Array{Float64,1}:
 0.0
 7.989837111322336e-7
 4.307716842570822e-5
 0.00040907966009970354
 0.0018938873152764026
 0.005873872876336504
 0.014042937706860135
 0.02785174359436921
 0.0478011546857793
 0.07280739067692472
 0.09987296389152912
 0.12426432985697713
 0.14031432341419828
 0.14283488028690608
 0.12894325738133897
 0.09987296389152912
 0.06205889954697725
 0.026454766059438056
 0.0046596730033231955
 0.0

snippet 2.4

p1 = plot( p_grid , posterior ,
    xlab="probability of water" , ylab="posterior probability",
    lab = "interpolated", title="20 points" )
p2 = scatter!( p1, p_grid , posterior, lab="computed" )
0.00 0.25 0.50 0.75 1.00 0.00 0.03 0.06 0.09 0.12 20 points probability of water posterior probability interpolated computed

snippet 2.5

prior1 = [p < 0.5 ? 0 : 1 for p in p_grid]
prior2 = [exp( -5*abs( p - 0.5 ) ) for p in p_grid]

p3 = plot(p_grid, prior1,
  xlab="probability of water" , ylab="posterior probability",
  lab = "semi_uniform", title="Other priors" )
scatter!(p3, p_grid, prior1, lab = "semi_uniform grid point")
plot!(p3, p_grid, prior2,  lab = "double_exponential" )
scatter!(p3, p_grid, prior2,  lab = "double_exponential grid point" )
0.00 0.25 0.50 0.75 1.00 0.00 0.25 0.50 0.75 1.00 Other priors probability of water posterior probability semi_uniform semi_uniform grid point double_exponential double_exponential grid point

This page was generated using Literate.jl.