Set Global Options
knitr::opts_chunk$set(
dpi = 200,
warning = FALSE,
message = FALSE
)
Load Relevant Libraries
library(tidyverse)
library(ggthemes)
library(rmarkdown)
library(scales)
Simulations_Input <- 100000
Traditional <-
data.frame(
Winning_Door =
sample(
c('1', '2', '3'),
Simulations_Input,
replace = TRUE
)
) %>%
rowwise() %>%
mutate(
Picked_Door_1 =
sample(
c('1', '2', '3'),
1,
replace = TRUE
),
Eliminated_Door =
sample(
setdiff(
c('1', '2', '3'),
c(Picked_Door_1, Winning_Door)
),
1
),
Picked_Door_2 =
setdiff(
c('1', '2', '3'),
c(Picked_Door_1, Eliminated_Door)
),
Correct_Pick_1 =
Winning_Door == Picked_Door_1,
Correct_Pick_2 =
Winning_Door == Picked_Door_2
)
cat(
'First Pick Correct Odds:',
' ',
(Traditional %>% .$Correct_Pick_1 %>% sum()) / (Traditional %>% nrow()),
'\n',
'Second Pick Correct Odds:',
' ',
(Traditional %>% .$Correct_Pick_2 %>% sum()) / (Traditional %>% nrow()),
sep = ''
)
## First Pick Correct Odds: 0.33202
## Second Pick Correct Odds: 0.66798
4 Doors
Number_Of_Doors_Input <- 4
Simulations_Input <- 100000
More_Doors <-
data.frame(
Winning_Door =
sample(
as.character(c(1:Number_Of_Doors_Input)),
Simulations_Input,
replace = TRUE
)
) %>%
rowwise() %>%
mutate(
Picked_Door_1 =
sample(
as.character(c(1:Number_Of_Doors_Input)),
1,
replace = TRUE
),
Eliminated_Door =
sample(
setdiff(
as.character(c(1:Number_Of_Doors_Input)),
c(Picked_Door_1, Winning_Door)
),
1
),
Picked_Door_2 =
sample(
setdiff(
as.character(c(1:Number_Of_Doors_Input)),
c(Picked_Door_1, Eliminated_Door)
),
1
),
Correct_Pick_1 =
Winning_Door == Picked_Door_1,
Correct_Pick_2 =
Winning_Door == Picked_Door_2
)
cat(
'First Pick Correct Odds:',
' ',
(More_Doors %>% .$Correct_Pick_1 %>% sum()) / (Traditional %>% nrow()),
'\n',
'Second Pick Correct Odds:',
' ',
(More_Doors %>% .$Correct_Pick_2 %>% sum()) / (Traditional %>% nrow()),
sep = ''
)
## First Pick Correct Odds: 0.25126
## Second Pick Correct Odds: 0.37506
5 Doors
Number_Of_Doors_Input <- 5
Simulations_Input <- 100000
More_Doors <-
data.frame(
Winning_Door =
sample(
as.character(c(1:Number_Of_Doors_Input)),
Simulations_Input,
replace = TRUE
)
) %>%
rowwise() %>%
mutate(
Picked_Door_1 =
sample(
as.character(c(1:Number_Of_Doors_Input)),
1,
replace = TRUE
),
Eliminated_Door =
sample(
setdiff(
as.character(c(1:Number_Of_Doors_Input)),
c(Picked_Door_1, Winning_Door)
),
1
),
Picked_Door_2 =
sample(
setdiff(
as.character(c(1:Number_Of_Doors_Input)),
c(Picked_Door_1, Eliminated_Door)
),
1
),
Correct_Pick_1 =
Winning_Door == Picked_Door_1,
Correct_Pick_2 =
Winning_Door == Picked_Door_2
)
cat(
'First Pick Correct Odds:',
' ',
(More_Doors %>% .$Correct_Pick_1 %>% sum()) / (Traditional %>% nrow()),
'\n',
'Second Pick Correct Odds:',
' ',
(More_Doors %>% .$Correct_Pick_2 %>% sum()) / (Traditional %>% nrow()),
sep = ''
)
## First Pick Correct Odds: 0.2
## Second Pick Correct Odds: 0.26604
6 Doors
Number_Of_Doors_Input <- 6
Simulations_Input <- 100000
More_Doors <-
data.frame(
Winning_Door =
sample(
as.character(c(1:Number_Of_Doors_Input)),
Simulations_Input,
replace = TRUE
)
) %>%
rowwise() %>%
mutate(
Picked_Door_1 =
sample(
as.character(c(1:Number_Of_Doors_Input)),
1,
replace = TRUE
),
Eliminated_Door =
sample(
setdiff(
as.character(c(1:Number_Of_Doors_Input)),
c(Picked_Door_1, Winning_Door)
),
1
),
Picked_Door_2 =
sample(
setdiff(
as.character(c(1:Number_Of_Doors_Input)),
c(Picked_Door_1, Eliminated_Door)
),
1
),
Correct_Pick_1 =
Winning_Door == Picked_Door_1,
Correct_Pick_2 =
Winning_Door == Picked_Door_2
)
cat(
'First Pick Correct Odds:',
' ',
(More_Doors %>% .$Correct_Pick_1 %>% sum()) / (Traditional %>% nrow()),
'\n',
'Second Pick Correct Odds:',
' ',
(More_Doors %>% .$Correct_Pick_2 %>% sum()) / (Traditional %>% nrow()),
sep = ''
)
## First Pick Correct Odds: 0.16758
## Second Pick Correct Odds: 0.20699
data.frame(
Number_of_Doors = c('3', '4', '5', '6'),
First_Pick_Odds = c('1/3', '1/4', '1/5', '1/6'),
Second_Pick_Odds = c('2/3', '3/8', '4/15', '5/24')
) %>%
paged_table()
Where n is the number of doors:
First pick odds: 1 / n
Second pick odds: (n - 1) / (n * (n-2))
Odds_Vs_Doors <-
data.frame(
Doors = 3:15
) %>%
mutate(
First_Pick_Odds = 1 / Doors,
Second_Pick_Odds = (Doors - 1) / (Doors * (Doors - 2)),
Difference = Second_Pick_Odds - First_Pick_Odds
)
Odds_Vs_Doors %>%
paged_table()
Odds_Vs_Doors %>%
ggplot(aes(x = Doors)) +
geom_line(aes(y = First_Pick_Odds, color = 'First Pick')) +
geom_line(aes(y = Second_Pick_Odds, color = 'Second Pick')) +
scale_color_gdocs(' ') +
scale_x_continuous(breaks = pretty_breaks(n = 10)) +
theme_bw() +
xlab(paste('\n', '# of Doors')) +
ylab(paste('Probability of Success', '\n'))