Fundamentals of Bayesian Data Analysis in R
Rasmus Bååth
Data Scientist
n_ads_shown <- 100
n_ads_shown <- 100
n_visitors
proportion_clicks
n_ads_shown <- 100
n_visitors <- seq(0, 100, by = 1)
proportion_clicks
n_ads_shown <- 100
n_visitors <- seq(0, 100, by = 1)
proportion_clicks <- seq(0, 1, by = 0.01)
n_ads_shown <- 100
n_visitors <- seq(0, 100, by = 1)
proportion_clicks <- seq(0, 1, by = 0.01)
pars <- expand.grid(proportion_clicks = proportion_clicks,
n_visitors = n_visitors)
proportion_clicks n_visitors
0.04 38
0.11 93
0.16 100
0.67 98
0.96 3
0.48 73
0.14 13
... ...
n_ads_shown <- 100
n_visitors <- seq(0, 100, by = 1)
proportion_clicks <- seq(0, 1, by = 0.01)
pars <- expand.grid(proportion_clicks = proportion_clicks,
n_visitors = n_visitors)
proportion_clicks <- runif(n_samples, min = 0.0, max = 0.2)
proportion_clicks n_visitors
0.04 38
0.11 93
0.16 100
0.67 98
0.96 3
0.48 73
0.14 13
... ...
n_ads_shown <- 100
n_visitors <- seq(0, 100, by = 1)
proportion_clicks <- seq(0, 1, by = 0.01)
pars <- expand.grid(proportion_clicks = proportion_clicks,
n_visitors = n_visitors)
pars$prior <- dunif(pars$proportion_clicks, min = 0, max = 0.2)
proportion_clicks n_visitors prior
0.04 38 5
0.11 93 5
0.16 100 5
0.67 98 0
0.96 3 0
0.48 73 0
0.14 13 5
... ... ...
n_ads_shown <- 100
n_visitors <- seq(0, 100, by = 1)
proportion_clicks <- seq(0, 1, by = 0.01)
pars <- expand.grid(proportion_clicks = proportion_clicks,
n_visitors = n_visitors)
pars$prior <- dunif(pars$proportion_clicks, min = 0, max = 0.2)
n_visitors <- rbinom(n = n_samples, size = n_ads_shown,
prob = proportion_clicks)
proportion_clicks n_visitors prior
0.04 38 5
0.11 93 5
0.16 100 5
0.67 98 0
0.96 3 0
0.48 73 0
0.14 13 5
... ... ...
n_ads_shown <- 100
n_visitors <- seq(0, 100, by = 1)
proportion_clicks <- seq(0, 1, by = 0.01)
pars <- expand.grid(proportion_clicks = proportion_clicks,
n_visitors = n_visitors)
pars$prior <- dunif(pars$proportion_clicks, min = 0, max = 0.2)
pars$likelihood <- dbinom(pars$n_visitors, size = n_ads_shown,
prob = pars$proportion_clicks)
proportion_clicks n_visitors prior likelihood
0.04 38 5 3.409439e-27
0.11 93 5 5.006969e-80
0.16 100 5 2.582250e-80
0.67 98 0 4.863666e-15
0.96 3 0 3.592054e-131
0.48 73 0 2.215148e-07
0.14 13 5 1.129620e-01
... ... ... ...
n_ads_shown <- 100
n_visitors <- seq(0, 100, by = 1)
proportion_clicks <- seq(0, 1, by = 0.01)
pars <- expand.grid(proportion_clicks = proportion_clicks,
n_visitors = n_visitors)
pars$prior <- dunif(pars$proportion_clicks, min = 0, max = 0.2)
pars$likelihood <- dbinom(pars$n_visitors, size = n_ads_shown,
prob = pars$proportion_clicks)
pars$probability <- pars$likelihood * pars$prior
proportion_clicks n_visitors prior likelihood probability
0.04 38 5 3.409439e-27 1.704720e-26
0.11 93 5 5.006969e-80 2.503485e-79
0.16 100 5 2.582250e-80 1.291125e-79
0.67 98 0 4.863666e-15 0.000000e+00
0.96 3 0 3.592054e-131 0.000000e+00
0.48 73 0 2.215148e-07 0.000000e+00
0.14 13 5 1.129620e-01 5.648101e-01
... ... ... ... ...
n_ads_shown <- 100
n_visitors <- seq(0, 100, by = 1)
proportion_clicks <- seq(0, 1, by = 0.01)
pars <- expand.grid(proportion_clicks = proportion_clicks,
n_visitors = n_visitors)
pars$prior <- dunif(pars$proportion_clicks, min = 0, max = 0.2)
pars$likelihood <- dbinom(pars$n_visitors, size = n_ads_shown,
prob = pars$proportion_clicks)
pars$probability <- pars$likelihood * pars$prior
sum(pars$probability)
105
proportion_clicks n_visitors prior likelihood probability
0.04 38 5 3.409439e-27 1.704720e-26
0.11 93 5 5.006969e-80 2.503485e-79
0.16 100 5 2.582250e-80 1.291125e-79
0.67 98 0 4.863666e-15 0.000000e+00
0.96 3 0 3.592054e-131 0.000000e+00
0.48 73 0 2.215148e-07 0.000000e+00
0.14 13 5 1.129620e-01 5.648101e-01
... ... ... ... ...
n_ads_shown <- 100
n_visitors <- seq(0, 100, by = 1)
proportion_clicks <- seq(0, 1, by = 0.01)
pars <- expand.grid(proportion_clicks = proportion_clicks,
n_visitors = n_visitors)
pars$prior <- dunif(pars$proportion_clicks, min = 0, max = 0.2)
pars$likelihood <- dbinom(pars$n_visitors, size = n_ads_shown,
prob = pars$proportion_clicks)
pars$probability <- pars$likelihood * pars$prior
pars$probability <- pars$probability / sum(pars$probability)
proportion_clicks n_visitors prior likelihood probability
0.04 38 5 3.409439e-27 1.623542e-28
0.11 93 5 5.006969e-80 2.384271e-81
0.16 100 5 2.582250e-80 1.229643e-81
0.67 98 0 4.863666e-15 0.000000e+00
0.96 3 0 3.592054e-131 0.000000e+00
0.48 73 0 2.215148e-07 0.000000e+00
0.14 13 5 1.129620e-01 5.379144e-03
... ... ... ... ...
n_ads_shown <- 100
n_visitors <- seq(0, 100, by = 1)
proportion_clicks <- seq(0, 1, by = 0.01)
pars <- expand.grid(proportion_clicks = proportion_clicks,
n_visitors = n_visitors)
pars$prior <- dunif(pars$proportion_clicks, min = 0, max = 0.2)
pars$likelihood <- dbinom(pars$n_visitors, size = n_ads_shown,
prob = pars$proportion_clicks)
pars$probability <- pars$likelihood * pars$prior
pars$probability <- pars$probability / sum(pars$probability)
sum(pars$probability)
1
proportion_clicks n_visitors prior likelihood probability
0.04 38 5 3.409439e-27 1.623542e-28
0.11 93 5 5.006969e-80 2.384271e-81
0.16 100 5 2.582250e-80 1.229643e-81
0.67 98 0 4.863666e-15 0.000000e+00
0.96 3 0 3.592054e-131 0.000000e+00
0.48 73 0 2.215148e-07 0.000000e+00
0.14 13 5 1.129620e-01 5.379144e-03
... ... ... ... ...
n_ads_shown <- 100
n_visitors <- seq(0, 100, by = 1)
proportion_clicks <- seq(0, 1, by = 0.01)
pars <- expand.grid(proportion_clicks = proportion_clicks,
n_visitors = n_visitors)
pars$prior <- dunif(pars$proportion_clicks, min = 0, max = 0.2)
pars$likelihood <- dbinom(pars$n_visitors, size = n_ads_shown,
prob = pars$proportion_clicks)
pars$probability <- pars$likelihood * pars$prior
pars$probability <- pars$probability / sum(pars$probability)
proportion_clicks n_visitors prior likelihood probability
0.04 38 5 3.409439e-27 1.623542e-28
0.11 93 5 5.006969e-80 2.384271e-81
0.16 100 5 2.582250e-80 1.229643e-81
0.67 98 0 4.863666e-15 0.000000e+00
0.96 3 0 3.592054e-131 0.000000e+00
0.48 73 0 2.215148e-07 0.000000e+00
0.14 13 5 1.129620e-01 5.379144e-03
... ... ... ... ...
n_ads_shown <- 100
n_visitors <- seq(0, 100, by = 1)
proportion_clicks <- seq(0, 1, by = 0.01)
pars <- expand.grid(proportion_clicks = proportion_clicks,
n_visitors = n_visitors)
pars$prior <- dunif(pars$proportion_clicks, min = 0, max = 0.2)
pars$likelihood <- dbinom(pars$n_visitors, size = n_ads_shown,
prob = pars$proportion_clicks)
pars$probability <- pars$likelihood * pars$prior
pars$probability <- pars$probability / sum(pars$probability)
pars <- pars[pars$n_visitors == 13, ]
pars$probability <- pars$probability / sum(pars$probability)
proportion_clicks n_visitors prior likelihood probability
0.04 13 5 1.368611e-04 0.0001428716
0.14 13 5 1.129620e-01 0.1179229621
0.19 13 5 3.265098e-02 0.0340849069
0.39 13 0 7.234996e-09 0.0000000000
0.59 13 0 1.531703e-21 0.0000000000
0.79 13 0 3.582066e-45 0.0000000000
0.94 13 0 1.591196e-91 0.0000000000
... ... ... ... ...
Fundamentals of Bayesian Data Analysis in R