# Preparacion ==================================================================
remove(list = ls())
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.3
## Warning: package 'ggplot2' was built under R version 4.3.3
## Warning: package 'tibble' was built under R version 4.3.3
## Warning: package 'tidyr' was built under R version 4.3.3
## Warning: package 'readr' was built under R version 4.3.3
## Warning: package 'purrr' was built under R version 4.3.3
## Warning: package 'dplyr' was built under R version 4.3.3
## Warning: package 'forcats' was built under R version 4.3.3
## Warning: package 'lubridate' was built under R version 4.3.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# ******************* DISTRIBUCIONES DISCRETAS *********************************

# 1. X sigue una distribución binomial con parámetros n=10 y p=2/10 ============
    # Definir parametros
    n <- 10
    p <- 2/10
    a <- 3 # Ejemplo hipotetico
    
    # Valor Esperado
    ve.binom <- n * p
    
    # Probabilidad real de que X >= a
    prob.binom <- 1 - pbinom(a-1, size = n, prob = p) # Para P(X >= a), necesitamos 1 - P(X < a)
    
    # Desigualdad de Markov
    markov.binom <- ve.binom/a
    
    # Resultados
    cat("P(X >= ", a, ") para binomial:", prob.binom, "\n")
## P(X >=  3 ) para binomial: 0.3222005
    cat("Desigualdad de Markov:", markov.binom, "\n")
## Desigualdad de Markov: 0.6666667
# 2. X sigue una distribución de Poisson con parámetro lambda=2. ===============
    # Definir parametros
    lambda <- 2
    a <- 3 # Ejemplo hipotetico
    
    # Valor esperado
    ve.pois <- lambda
    
    # Probabilidad real de que  x >= a
    prob.pois <- 1 - ppois(a-1, lambda = lambda) # Para P(X >= a), necesitamos 1 - P(X < a)
    
    # Desigualdad de Markov
    markov.pois <- ve.pois/a
    
    # Resultados
    cat("P(X >= ", a, ") para Poisson:", prob.pois, "\n")
## P(X >=  3 ) para Poisson: 0.3233236
    cat("Desigualdad de Markov:", markov.pois, "\n")
## Desigualdad de Markov: 0.6666667
# 3. X representa un lanzamiento de un dado de seis caras cargado, que ustedes deberán definir, y cuyo valor esperado debe ser igual a dos. ===========
    # Definir dado
    cargar.dado <- c(0.5, 0.25, 0.1, 0.05, 0.05, 0.05)
    valores.dado <- 1:6
    a <- 3 # Ejemplo hipotetico
    
    # Valor esperado
    ve.dado <- sum(valores.dado * cargar.dado)
    
    # Probabilidad real de que X >= a
    prob.dado <- sum(cargar.dado[valores.dado >= a])
    
    # Desiguadad de Markov
    markov.dado <- ve.dado/a
    
    # Resultados
    cat("P(X >= ", a, ") para dado cargado:", prob.dado, "\n")
## P(X >=  3 ) para dado cargado: 0.25
    cat("Desigualdad de Markov:", markov.dado, "\n")
## Desigualdad de Markov: 0.6833333
# ************************* DISTRIBUCIONES CONTINUAS ***************************
    
# 4. X sigue una distribución uniforme continua con parámetros a=0 y b=4 =======
    # Definir parametros
    a_uniform <- 0
    b_uniform <- 4
    a <- 3  # Umbral para la desigualdad de Markov
    
    # Valor esperado
    esperado_uniform <- (a_uniform + b_uniform) / 2
    
    # Probabilidad real de que X >= a
    prob_uniform <- punif(a, min = a_uniform, max = b_uniform, lower.tail = FALSE)
    
    # Desigualdad de Markov
    markov_uniform <- esperado_uniform / a
    
    # Resultados
    cat("P(X >= ", a, ") para uniforme:", prob_uniform, "\n")
## P(X >=  3 ) para uniforme: 0.25
    cat("Desigualdad de Markov:", markov_uniform, "\n")
## Desigualdad de Markov: 0.6666667
# 5. X sigue una distribución normal con parámetros mu=2 y sigma=1/4. ==========
    # Parámetros
    mu <- 2
    sigma <- 1/4
    a <- 3  # Umbral para la desigualdad de Markov
    
    # Valor esperado
    esperado_norm <- mu
    
    # Probabilidad real de que X >= a
    prob_norm <- 1 - pnorm(a, mean = mu, sd = sigma)
    
    # Desigualdad de Markov
    markov_norm <- esperado_norm / a
    
    # Resultados
    cat("P(X >= ", a, ") para normal:", prob_norm, "\n")
## P(X >=  3 ) para normal: 3.167124e-05
    cat("Desigualdad de Markov:", markov_norm, "\n")
## Desigualdad de Markov: 0.6666667