library(purrr)
p <- 0.5 # True probability
n <- 30 # Sample size
sam <- rbernoulli(n, p) # Sample - simulates a coin toss n times
sam
## [1] FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE FALSE TRUE TRUE
## [13] TRUE TRUE TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
## [25] TRUE TRUE TRUE FALSE FALSE TRUE
# Likelihood function
L <- function(p = 0.5){
prob <- 1
ans <- 1
for (i in 1:n) {
ans <- p^sam[i]*(1-p)^(1-sam[i])
prob <- prob*ans
}
return(prob)
}
# possible values for p
p <- seq(0, 1, 0.01)
p
## [1] 0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10 0.11 0.12 0.13 0.14
## [16] 0.15 0.16 0.17 0.18 0.19 0.20 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29
## [31] 0.30 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.40 0.41 0.42 0.43 0.44
## [46] 0.45 0.46 0.47 0.48 0.49 0.50 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59
## [61] 0.60 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.70 0.71 0.72 0.73 0.74
## [76] 0.75 0.76 0.77 0.78 0.79 0.80 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89
## [91] 0.90 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00
Lvals <- numeric(length(p))
for(j in 1:length(p)){
Lvals[j] <- L(p[j])
}
dat <- data.frame(p, Lvals)
library(ggplot2)
pl <- ggplot(dat, aes(x=p, y=Lvals)) + geom_point(color = "red") + geom_line(color = "steelblue") + theme_bw()
library(plotly)
ggplotly(pl)
MLE <- mean(sam)
MLE
## [1] 0.4333333