##CARGAR BASE DE DATOS 
data <- read.csv("C:/Users/pc/Desktop/Rstudio/ClasificacionCredito.csv", header = TRUE)
head(data)
##   Age Gender Income           Education Marital.Status Number.of.Children
## 1  25 Female  50000   Bachelor's Degree         Single                  0
## 2  30   Male 100000     Master's Degree        Married                  2
## 3  35 Female  75000           Doctorate        Married                  1
## 4  40   Male 125000 High School Diploma         Single                  0
## 5  45 Female 100000   Bachelor's Degree        Married                  3
## 6  50   Male 150000     Master's Degree        Married                  0
##   Home.Ownership Credit.Score
## 1         Rented         High
## 2          Owned         High
## 3          Owned         High
## 4          Owned         High
## 5          Owned         High
## 6          Owned         High
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
##SELECCIÓN DE VARIABLES Y DEFINICIÓN DE EVENTOS.

sub_datos <- data[, c("Education", "Credit.Score","Marital.Status")]
str(sub_datos)
## 'data.frame':    164 obs. of  3 variables:
##  $ Education     : chr  "Bachelor's Degree" "Master's Degree" "Doctorate" "High School Diploma" ...
##  $ Credit.Score  : chr  "High" "High" "High" "High" ...
##  $ Marital.Status: chr  "Single" "Married" "Married" "Single" ...
A <- data$Education == "Doctorate"
B <- data$Credit.Score == "High"
C <- data$Marital.Status == "Married"

## 1.PROBABILIDAD DEL COMPLEMENTO DE B: P(B!)

p_A <- sum(data$Education == "Doctorate") / nrow(data)
p_B <- sum(data$Credit.Score == "High") / nrow(data)
p_C <- sum(data$Marital.Status == "Married") / nrow(data)
p_A ; p_B ; p_C
## [1] 0.1890244
## [1] 0.6890244
## [1] 0.5304878
p_B_complemento <- 1 - p_B
print(p_B_complemento)
## [1] 0.3109756
#La probabilidad de que un solicitante elegido al azar no tenga un puntaje de crédito alto es de 0.3109, lo que indica que aproximadamente el 31.1% de los solicitantes presentan puntajes medios o bajos.

## 2. PROBABILIDAD DE C DADO A: P(C|A) = P(C ∩ A) / P(A)

p_interseccion <- sum(data$Marital.Status == "Married" & data$Education == "Doctorate") / nrow(data)
p_interseccion
## [1] 0.152439
p_C_dado_A <- p_interseccion / p_A
print(p_C_dado_A)
## [1] 0.8064516
#La probabilidad de que un solicitante elegido al azar esté casado dado que tiene un doctorado es de 80.64, lo que indica que aproxiamadamente el 80.6% de los solicitantes con doctorado están casados.

## EJERCICIO 4. Coca Cola - Pepsi
# Distribución Hipergeométrica

N <- 10   # tamaño de la población total
m <- 4    # número de personas que prefieren Pepsi
n <- N-m  # número de personas que prefieren Coca Cola
k <- 3    # tamaño de la muestra

# Crear un data frame con la probabilidad para cada número de éxitos.
x_values <- 0:k
probabilidades <- dhyper(x_values, m, n, k)
data_exito <- data.frame(Pepsi_en_muestra = x_values, Probabilidad = probabilidades)
data_exito
##   Pepsi_en_muestra Probabilidad
## 1                0   0.16666667
## 2                1   0.50000000
## 3                2   0.30000000
## 4                3   0.03333333
p_al_menos_3 <- sum(dhyper(3, m, n, k))
print(p_al_menos_3)
## [1] 0.03333333
#La probabilidad de que al seleccionar una muestra de 3 personas y que éstas prefieran pepsi es de 0.033 (3.3%), lo que significa que existe una baja posibilidad de que al seleccionar tres personas, todas prefieran pepsi.

## EJERCICIO 3. Tráfico - Accidentes 
# Distribución Poisson


lambda_matutino = 2 * 1.5   # Promedio para la mañana (1.5 horas)
lambda_vespertino = 2 * 2   # Promedio para la tarde (2 horas)

# a. Probabilidad de que NO haya accidentes duante el periodo matutino: P(X=0)
x_m = 0:8
prob_m = round(dpois(x_m, lambda_matutino), 4)
data_m = data.frame(x = x_m, probabilidad = prob_m)
data_m
##   x probabilidad
## 1 0       0.0498
## 2 1       0.1494
## 3 2       0.2240
## 4 3       0.2240
## 5 4       0.1680
## 6 5       0.1008
## 7 6       0.0504
## 8 7       0.0216
## 9 8       0.0081
ggplot(data_m, aes(x = as.factor(x), y = probabilidad)) +
  geom_point(color = "red", size = 2) +
  geom_segment(aes(xend = as.factor(x), yend = probabilidad), color = "blue") +
  labs(title = "Distribucion Poisson - Accidentes Matutinos",
       x = "Numero de accidentes",
       y = "Probabilidad")

P_matutino_0 = dpois(x = 0, lambda = lambda_matutino)
print(P_matutino_0)
## [1] 0.04978707
#La probabilidad de que NO haya accidentes durante el periodo matutino es de aproximadamente el 5%. Esto indica que es poco probable que no ocurra ningún accidente durante el tráfico intenso de la mañana.

# b. Probabilidad de que ocurran 3 o más accidentes en la tarde: P(X≥3)
P_tarde_mayor3 = 1 - ppois(2, lambda = lambda_vespertino)
print(P_tarde_mayor3)
## [1] 0.7618967
#La probabilidad de que ocurran 3 o más accidentes 3 o más accidentes durante el período vespertino es de aproximadamente el 76.2%. Esto indica que es muy probable que se presenten múltiples accidentes en la tarde cuando el tráfico es más intenso.

## EJERCICIO 5. Juego de Feria 
# Distribución Binomial

n <- 20    # número de personas
p <- 0.15  # probabilidad de ganar
x <- 0:n

prob.bi <- dbinom(x = x, size = n, prob = p)
data.bi <- data.frame(x = x, Probabilidad = prob.bi)
round(data.bi, 4)
##     x Probabilidad
## 1   0       0.0388
## 2   1       0.1368
## 3   2       0.2293
## 4   3       0.2428
## 5   4       0.1821
## 6   5       0.1028
## 7   6       0.0454
## 8   7       0.0160
## 9   8       0.0046
## 10  9       0.0011
## 11 10       0.0002
## 12 11       0.0000
## 13 12       0.0000
## 14 13       0.0000
## 15 14       0.0000
## 16 15       0.0000
## 17 16       0.0000
## 18 17       0.0000
## 19 18       0.0000
## 20 19       0.0000
## 21 20       0.0000
ggplot(data.bi, aes(x = as.factor(x), y = Probabilidad)) + geom_point(color = "red", size = 2) +
  geom_segment(aes(x = as.factor(x), y = 0,xend = as.factor(x), yend = Probabilidad), color = "blue") +
  labs(title = "Distribucion Binomial (n=20, p=0.15)", x = "Numero de ganadores (X)", y = "Probabilidad")

# a. Probabilidad de que ganen por mucho 3 personas
P_X_menor_3 <- pbinom(3, size = n, prob = p)
P_X_menor_3
## [1] 0.6477252
#La probabilidad de que por mucho ganen 3 personas en esa hora es de aproximadamente el 65%. Esto significa que es relativamente frecuente que tres o menos jugadores ganen.

# b. Número esperado de ganadores.
E_X <- n * p
E_X
## [1] 3
#El número esperado de jugadores ganadores en esa hora es 3. Esto indica que, si el juego se repitiera muchas veces, en promedio tres personas ganarían por hora.