La empresa XYZ busca evaluar riesgos financieros asociados con su cartera de clientes, bajo condiciones de incertidumbre. Desean utilizar inferencia estadística para tomar decisiones fundamentadas sobre políticas de crédito y estrategias de mitigación de riesgos.
1. Una cartera de clientes presenta un puntaje de riesgo crediticio normalmente distribuido con una media de 600 puntos y una desviación estándar de 50 puntos.
a) ¿Cuál es la probabilidad de que un cliente tenga un puntaje menor a 550?.
p_menor550 <- pnorm(550, 600, 50 )
cat("Probabilidad de tener un puntaje menor a 550:", p_menor550, "\n")
## Probabilidad de tener un puntaje menor a 550: 0.1586553
# Parametros de la distribucion
media <- 600
desviacion <- 50
# Puntos para el grafico
x <- seq(media - 4 * desviacion, media + 4 * desviacion, length.out = 1000)
y <- dnorm(x, mean = media, sd = desviacion)
# Probabilidad acumulada para X < 550
x_prob <- seq(min(x), 550, length.out = 500)
y_prob <- dnorm(x_prob, mean = media, sd = desviacion)
# Graficar la distribucion
plot(x, y, type = "l", lwd = 2, col = "#d5bcfe",
main = "Distribucion Normal",
xlab = "Puntaje", ylab = "Densidad de Probabilidad")
polygon(c(min(x_prob), x_prob, 550), c(0, y_prob, 0), col = "#b6eea7", border = NA)
# Agregar una linea vertical en x = 550
abline(v = 550, col = "#faada5", lty = 2, lwd = 2)
# Texto explicativo
text(550, 0.005, "550", col = "#faada5", pos = 4)
legend("topright", legend = c("Area = P(X < 550)"),
fill = "#b6eea7", border = "black", bty = "n")
b) ¿Qué porcentaje de clientes tiene puntajes entre 580 y 620?.
p_entre_580_620 <- pnorm(620, 600, 50) - pnorm(580, 600, 50)
cat("Probabilidad de tener un puntaje entre 580 y 620:", p_entre_580_620, "\n")
## Probabilidad de tener un puntaje entre 580 y 620: 0.3108435
# Parámetros de la distribución normal
media1 <- 600
desviacion_estandar1 <- 50
# Rango de la distribución
x <- seq(400, 800, length = 1000)
y <- dnorm(x, mean = media1, sd = desviacion_estandar1)
# Rango para sombrear
x_sombreado <- seq(580, 620, length = 100)
y_sombreado <- dnorm(x_sombreado, mean = media1, sd = desviacion_estandar1)
# Gráfico principal
plot(x, y, type = "l", lwd = 2, col = "#d5bcfe",
main = "Distribución Normal", # Nuevo título
xlab = "Puntaje", ylab = "Densidad")
# Agregar líneas punteadas para 580 y 620
abline(v = 580, col = "#faada5", lty = 2)
abline(v = 620, col = "#faada5", lty = 2)
# Sombrear la región entre 580 y 620
polygon(c(580, x_sombreado, 620),
c(0, y_sombreado, 0),
col = "#b6eea7", border = NA)
text(567, max(y) * 0.02, "580", col = "#faada5", cex = 1)
text(633, max(y) * 0.02, "620", col = "#faada5", cex = 1)
# Texto explicativo
legend("topright", legend = c("Area = P(580 ≤ X ≤ 620)"),
fill = "#b6eea7", border = "black", bty = "n")
c) ¿El 5% de los clientes con mayores puntajes recibe beneficios adicionales. ¿A partir de qué puntaje se otorgan estos beneficios?
puntaje_beneficios <- qnorm(0.95, 600 , 50)
cat("Puntaje minimo para recibir beneficios:", puntaje_beneficios, "\n")
## Puntaje minimo para recibir beneficios: 682.2427
2. Se estima que la probabilidad de que un cliente no pague su crédito es del 15%. En una muestra de 20 clientes:
a) ¿Cuál es la probabilidad de que exactamente 3 clientes incumplan?
#Parametros
n <- 20
p <- 0.15
p_exacto_3 <- dbinom(3, n, p)
cat("Probabilidad de que exactamente 3 clientes incumplan:", p_exacto_3, "\n")
## Probabilidad de que exactamente 3 clientes incumplan: 0.2428289
# Parámetros de la distribución binomial
n <- 20
p <- 0.15
# Calcular la probabilidad para cada valor de x
x <- 0:n
y <- dbinom(x, n, p)
# Graficar el histograma de la distribución binomial
barplot(y, names.arg = x, col = "#b6eea7", main = "Distribución Binomial",
xlab = "Número de éxitos", ylab = "Probabilidad", border = "black",
ylim = c(0, max(y) * 1.1), width = 0.8)
b) ¿Cuál es la probabilidad de que al menos 5 clientes incumplan?
palmenos5 <- 1- pbinom(4, n, p)
cat("Probabilidad de que al menos 5 clientes incumplan:", palmenos5, "\n")
## Probabilidad de que al menos 5 clientes incumplan: 0.1701532
c) ¿Qué número máximo de clientes incumplidores se esperaría en el 90% de los casos?
num_max_deincum <- qbinom(0.90, n, p)
cat("Numero maximo de clientes incumplidores en el 90% de los casos:", num_max_deincum, "\n")
## Numero maximo de clientes incumplidores en el 90% de los casos: 5
3. XYZ quiere estimar el promedio de pagos atrasados en la cartera. En una muestra de 50 clientes, el promedio observado fue de 3 días con una desviación estándar de 1.5 días.
a) Construye un intervalo de confianza del 95% para el promedio de días de pago atrasados.
set.seed(123)
datacaso <- rnorm(50, mean = 3, sd = 1.5) # Muestra de tamaño 50
#Intervalo de confianza
cmuestra <- t.test(datacaso, conf.level = 0.95)$conf.int
cat("intervalo de confianza del 95% para el promedio de días de pago atrasados:", cmuestra[1], "a", cmuestra[2], "\n")
## intervalo de confianza del 95% para el promedio de días de pago atrasados: 2.656911 a 3.446299
b) ¿Podría la empresa afirmar con un 99% de confianza que el promedio real es mayor a 2.5 días?
# Prueba de hipótesis para la media
# Hipótesis nula: mu = 2.5
mu <- 2.5
# Realizar prueba t
resultado <- t.test(datacaso, mu=mu, conf.level = 0.99, alternative= "greater")
resultado
##
## One Sample t-test
##
## data: datacaso
## t = 2.8085, df = 49, p-value = 0.003564
## alternative hypothesis: true mean is greater than 2.5
## 99 percent confidence interval:
## 2.579269 Inf
## sample estimates:
## mean of x
## 3.051605
# p-valor
p_valor <- resultado$p.value
cat("El p-valor de la prueba t es:", p_valor, "\n")
## El p-valor de la prueba t es: 0.003564306
El p-valor obtenido (0.003564306) es menor que α=0.01. Por lo tanto, rechazamos la hipótesis nula y concluimos que sí hay suficiente evidencia estadística, con un 99% de confianza, para afirmar que el promedio real es mayor a 2.5 días.
4. La empresa XYZ quiere evaluar si el promedio de días de pago atrasado en su cartera de clientes supera los 5 días, ya que esto indicaría un aumento significativo en el riesgo financiero.
Datos del Problema:
- Muestra aleatoria de 40 clientes.
- Promedio de días de pago atrasado en la muestra = 5.4 días.
- Desviación estándar de la población = 1.2 días.
- Nivel de significancia (α) = 0.05.
set.seed(123)
datacaso2 <- rnorm(40, mean = 5.4, sd = 1.2)
# Prueba de hipótesis para la media
# Hipótesis nula: mu = 5
mucaso2 <- 5
resultado2 <- t.test(datacaso2, mu=mucaso2, alternative= "greater")
resultado2
##
## One Sample t-test
##
## data: datacaso2
## t = 2.6665, df = 39, p-value = 0.005549
## alternative hypothesis: true mean is greater than 5
## 95 percent confidence interval:
## 5.167214 Inf
## sample estimates:
## mean of x
## 5.45422
p_valor2 <- resultado2$p.value
cat("El p-valor de la prueba t es:", p_valor2, "\n")
## El p-valor de la prueba t es: 0.005549317
El p-valor obtenido (0.005549317) es menor que α=0.05. Por lo tanto, rechazamos la hipótesis nula y concluimos que sí hay suficiente evidencia estadística, con un 95% de confianza, para afirmar que el promedio de días de pago atrasado en la cartera de clientes de la empresa XYZ, supera los 5 días.
En esta actividad, se busca que los estudiantes descarguen los precios de cierre de una acción de su preferencia, analicen su rentabilidad y apliquen conceptos de probabilidad, intervalos de confianza y pruebas de hipótesis.
Serie Temporal de la Acción TESLA
library(quantmod)
# Descarga de la serie de interés desde Yahoo
accion <- getSymbols('TSLA', src = 'yahoo', auto.assign = FALSE, from = '2015-01-01')
# Extraer precios de cierre
precios_cierre <- accion$TSLA.Close
# Graficar los precios de cierre
plot(precios_cierre, main = 'Precios de Cierre de TSLA', col = '#a1c4fc', lwd = 2)
Rentabilidad diaria de la acción
rentabilidad <- diff(log(precios_cierre))
plot(rentabilidad, main = 'Rentabilidad Diaria', col = '#a6f5d8', lwd = 2)
La gráfica muestra la rentabilidad diaria de la acción de TESLA,
entre el 2 de enero de 2015 y el 15 de noviembre de 2024.
Observaciones clave:
Interpretación Financiera
Análisis de Probabilidad
Distribución de la Rentabilidad:
hist(rentabilidad, breaks = 50, probability = TRUE, main = "Distribucion de Rentabilidad", col = "#b6eea7")
curve(dnorm(x, mean = mean(rentabilidad, na.rm = TRUE), sd = sd(rentabilidad, na.rm = TRUE)),
col = "#d5bcfe", lwd = 2, add = TRUE)
a) Calcular la probabilidad de que la rentabilidad diaria sea menor al promedio
rentabilidad_tesla <- rentabilidad$TSLA.Close
media_rentTSLA <- mean(rentabilidad_tesla, na.rm = TRUE)
media_rentTSLA
## [1] 0.001242709
desvestandar_TSLA <- sd(rentabilidad_tesla, na.rm = TRUE)
desvestandar_TSLA
## [1] 0.03588246
ptesla <- pnorm(media_rentTSLA, media_rentTSLA, desvestandar_TSLA)
cat("Probabilidad de que la rentabilidad diaria sea menor al promedio es:", ptesla, "\n")
## Probabilidad de que la rentabilidad diaria sea menor al promedio es: 0.5
Intervalos de Confianza
a) Construye un intervalo de confianza al 95% para la media de la rentabilidad diaria
interv_rentabilidad <- t.test(rentabilidad_tesla)$conf.int
cat(" El intervalo de confianza al 95% para la media de la rentabilidad diaria es:", interv_rentabilidad[1], "a", interv_rentabilidad[2], "\n")
## El intervalo de confianza al 95% para la media de la rentabilidad diaria es: -0.0001687841 a 0.002654203
Prueba de Hipótesis
a) Prueba si el promedio de la rentabilidad diaria es igual a 0 con un nivel de significancia del 5%
interv_rentabilidad1 <- t.test(rentabilidad_tesla, mu = 0)
interv_rentabilidad1
##
## One Sample t-test
##
## data: rentabilidad_tesla
## t = 1.7264, df = 2484, p-value = 0.08439
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## -0.0001687841 0.0026542025
## sample estimates:
## mean of x
## 0.001242709
p_valor3 <- interv_rentabilidad1$p.value
cat("El p-valor de la prueba t es:", p_valor3, "\n")
## El p-valor de la prueba t es: 0.08439337
El p-valor obtenido (0.08439337) es mayor que α=0.05. Por lo tanto, rechazamos la hipótesis alternativa y concluimos que sí hay suficiente evidencia estadística, con un 95% de confianza, para afirmar que el promedio de la rentabilidad diaria es igual a 0.