1. Realiza el siguiente experimento: Elige un número del 1 al 6. Simula el lanzamiento de un dado. Cada vez que aciertes, recibes 5 € (el tuyo y 4 de ganancia neta), cada vez que no aciertes, pierdes 1. Calcula la esperanza matemática.
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5     v purrr   0.3.4
## v tibble  3.1.4     v dplyr   1.0.7
## v tidyr   1.1.4     v stringr 1.4.0
## v readr   2.0.2     v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
#Elijo el 4, por ejemplo
p_i <- rep(1/6,6) # Probabilidades
x_i <- c(-1,-1,-1,4,-1,-1) # Espacio muestral
sum(p_i*x_i) # Fórmula sumatorio x_i*p_i
## [1] -0.1666667
# Otras formas:
data.frame(caras = 1:6) %>%
  mutate(win = case_when(caras == 4 ~4, TRUE ~-1)) %>%
  summarize(ev_juego_dado = mean(win)) 
##   ev_juego_dado
## 1    -0.1666667
data.frame(caras = 1:6, probabilidades = rep(1/6,6)) %>%
  mutate(win = case_when(caras == 4 ~4, TRUE ~-1)) %>%
  summarize(ev_juego_dado = sum(win*probabilidades)) 
##   ev_juego_dado
## 1    -0.1666667

Realiza 10k simulaciones y representa gráficamente en una línea, tu ganancia acumulada (eje y) sobre el número de simulaciones (eje x) y agrega una línea a la gráfica con la esperanza matemática, para medir el grado de suerte.

dado <- data.frame(n=1:6, ev=rep(-1/6,times=6))
dado <- dado %>%
  sample_n(10000, replace=TRUE)
dado <- cbind(dado, intento = 1:10000)
dado %>%
  mutate(jugador = case_when((n == 4) ~ 4, TRUE ~ -1)) %>%
  
  mutate(ganancia = cumsum(jugador)) %>%
  mutate(ev = -1/6) %>%
  mutate(ev = cumsum(ev)) %>%
  ggplot(aes(intento, ganancia)) +
  geom_line()+
  geom_line(aes(x=intento, y=ev, color="red"))  
dado <- data.frame(n=1:6, ev=rep(-1/6,times=6))
  dado %>%
  sample_n(10000, replace=TRUE) %>%
  mutate(jugador = case_when((n == 2) ~ 4, TRUE ~ -1)) %>%
  mutate(intento = row_number()) %>%
  mutate(ganancia = cumsum(jugador)) %>%
  mutate(ev = -1/6) %>%
  mutate(ev = cumsum(ev)) %>%
  ggplot(aes(intento, ganancia)) +
  geom_line()+
  geom_line(aes(x=intento, y=ev, color="red"))  

  1. Realiza el experimento, apostando al 7 en la ruleta, 1.000.000 veces, con 35 € de ganancia neta cada vez que aciertes y un euro de pérdidas cada vez que falles. Representa la línea de la esperanza matemática (si en cada tirada ganas Ex).
ruleta <- data.frame(n=0:36, ev=rep(-1/37,times=37))
  ruleta %>%
  sample_n(1000000, replace=TRUE) %>%
  mutate(jugador = case_when((n == 7) ~ 35, TRUE ~ -1)) %>%
  mutate(intento = row_number()) %>%
  mutate(ganancia = cumsum(jugador)) %>%
  mutate(ev = -1/37) %>%
  mutate(ev = cumsum(ev)) %>%
  ggplot(aes(intento, ganancia)) +
  geom_line()+
  geom_line(aes(x=intento, y=ev, color="red"))  

  1. Repite el experimento del problema del cumpleaños con 500 simulaciones y representa la gráfica vista en teoría, con la curva de probabilidades real en una línea roja y las probabilidades aproximadas mediante puntos.
mismo_dia_cumple <- function(n) {
  dias <- sample(1:365, n, replace = TRUE)
  any(duplicated(dias))
}
calcular_prob_sim <- function(n, B=10000) {
  resultados <- replicate(B, mismo_dia_cumple(n))
  mean(resultados)
}
calcular_prob_exac <- function(n){
  prob_unique <- seq(365,365-n+1)/365 
  1 - prod(prob_unique)
}
n <- seq(1,60)
prob_sim <- sapply(n, calcular_prob_sim, B=500)
prob_exac <- sapply(n, calcular_prob_exac)
ggplot(data.frame(n, prob_sim, prob_exac), aes(n, prob_sim))+
  geom_point()+
  geom_line(aes(n, prob_exac), color="red")

  1. Representa gráficamente mediante columnas las probabilidades de obtener caras lanzando 10 monedas (n=10) una sola vez. En el eje x, se mostrará de 0 a 10 y en el eje y, la probabilidad de obtener exáctamente cada uno de los valores.
# calculamos el vector de probabilidades de, lanzando 10 monedas obtener exactamente 1, 2, 3, ... 10 caras
exitos <- 1:10
probs <- dbinom(exitos, 10, 0.5)
probs
##  [1] 0.0097656250 0.0439453125 0.1171875000 0.2050781250 0.2460937500
##  [6] 0.2050781250 0.1171875000 0.0439453125 0.0097656250 0.0009765625
ggplot(data.frame(exitos, probs), aes(exitos, probs))+
  geom_col()

  1. Repite la representación del ejercicio 4, pero utiliza en este caso, la función de probabilidad acumulada, en lugar de la probabilidad.
exitos <- 0:10
probs <- pbinom(exitos, 10, 0.5)
ggplot(data.frame(exitos, probs), aes(exitos, probs))+
  geom_col()