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.0Define 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.0Compute 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.0Compute product of likelihood and prior
unstd_posterior = likelihood .* prior20-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.0Standardize 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.0snippet 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" )
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" )
This page was generated using Literate.jl.