# **Distribución Normal**
# Generar una distribución normal
mean <- 600 # Media
ds <- 50 # Desviación estándar
distrib_normal <- rnorm(1000, mean = mean, sd = ds)
# Visualización de la distribución normal
hist(distrib_normal, breaks = 30, main = "Distribución Normal", xlab = "Valores", ylab = "Frecuencia")
# Calcular probabilidades acumuladas
prob_norm <- pnorm(550, mean = mean, sd = ds) # P(X <= 550)
cat("P(X < 550) en la distribución normal:", prob_norm, "\n")
## P(X < 550) en la distribución normal: 0.1586553
# Distribución normal
media <- 600
desviacion <- 50
# a) Probabilidad de puntaje menor a 550
probabilidad_menor_550 <- pnorm(550, mean = mean, sd = ds)
print(probabilidad_menor_550)
## [1] 0.1586553
# Gráfico para la probabilidad en a)
x_vals <- seq(500, 700, length.out = 1000)
y_vals <- dnorm(x_vals, mean = media, sd = desviacion)
# Gráfico normal
plot(x_vals, y_vals, type = "l", main = "Distribución Normal de Puntajes de Riesgo Crediticio",
xlab = "Puntaje", ylab = "Densidad", col = "blue")
abline(v = 550, col = "red", lwd = 2)
text(550, 0.008, labels = "Puntaje 550", pos = 4)
# Área sombreada a la izquierda de 550
x_fill <- seq(500, 550, length.out = 500)
y_fill <- dnorm(x_fill, mean = media, sd = desviacion)
polygon(c(x_fill, 550), c(y_fill, 0), col = "lightblue", border = NA)
# b) Porcentaje de clientes con puntajes entre 580 y 620
probabilidad_620 <- pnorm(620, mean = mean, sd = ds)
probabilidad_580 <- pnorm(580, mean = mean, sd = ds)
porcentaje_580_620 <- probabilidad_620 - probabilidad_580
print(porcentaje_580_620 * 100)
## [1] 31.08435
# Gráfico para el rango de puntajes entre 580 y 620 (Parte b)
plot(x_vals, y_vals, type = "l", main = "Distribución Normal con Rango 580-620",
xlab = "Puntaje", ylab = "Densidad", col = "blue")
abline(v = c(580, 620), col = "green", lwd = 2)
text(600, 0.008, labels = "Rango de 580 a 620", pos = 3)
# Área sombreada entre 580 y 620
x_fill_b <- seq(580, 620, length.out = 500)
y_fill_b <- dnorm(x_fill_b, mean = media, sd = desviacion)
polygon(c(x_fill_b, 620), c(y_fill_b, 0), col = "lightgreen", border = NA)
qnorm(0.95,600,50)
## [1] 682.2427
n <- 20
p <- 0.15
prob_binom1 <- dbinom(3, size=n, prob=p)
prob_binom1
## [1] 0.2428289
prob2 <- 1-pbinom(4, size=n, prob=p)
prob2
## [1] 0.1701532
qbinom(0.9, size=n, prob=p)
## [1] 5
# Posibles números de incumplimiento (de 0 a 20)
x_vals <- 0:n
# Probabilidades dbinom
y_vals <- dbinom(x_vals, size = n, prob = p)
# Graficar la distribución
plot(x_vals, y_vals, type = "h", lwd = 2, col = "blue", main = "Distribución Binomial de Clientes Incumplidores",
xlab = "Número de Clientes Incumplidores", ylab = "Probabilidad", ylim = c(0, max(y_vals) * 1.1))
segments(x0 = x_vals, y0 = rep(0, length(x_vals)), x1 = x_vals, y1 = y_vals, col = "blue", lwd = 2)
points(x_vals, y_vals, pch = 19, col = "red")
set.seed(123)
data <- rnorm(50, mean = 3, sd = 1.5) # Muestra de tamaño 50
data <- rnorm(50, mean = 3, sd = 1.5) # Muestra de tamaño 50
ci <- t.test(data, conf.level = 0.95)$conf.int
cat("Intervalo de confianza del 95% para el promedio: ", ci[1], " a ", ci[2], "\n")
## Intervalo de confianza del 95% para el promedio: 2.833625 a 3.6056
# Crear el gráfico de dispersión
plot(data,
main = "Gráfico de Dispersión de los Datos",
xlab = "Índice",
ylab = "Valor",
pch = 16,
col = "blue",
xlim = c(0, 50),
ylim = c(min(data) - 1, max(data) + 1)) # Ajustar límites de los ejes
abline(h = mean(data), col = "red", lwd = 2)
abline(h = ci[1], col = "green", lty = 2)
abline(h = ci[2], col = "green", lty = 2)
legend("topright",
legend = c("Promedio", "Intervalo de Confianza Inferior", "Intervalo de Confianza Superior"),
col = c("red", "green", "green"),
lty = c(1, 2, 2),
lwd = c(2, 1, 1))
ci <- t.test(data,conf.level = 0.99)$conf.int # Intervalo de confianza para la media
ci
## [1] 2.704862 3.734362
## attr(,"conf.level")
## [1] 0.99
Datos del Problema:
set.seed(123)
# Datos simulados
data2 <- rnorm(40, mean = 5.4, sd = 1.2) # Muestra de tamaño 40
# **Prueba de hipótesis para la media**
mu_0 <- 5
# Realizar prueba t
resultado <- t.test(data2, mu = mu_0,alternative = "greater")
print(resultado)
##
## One Sample t-test
##
## data: data2
## 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
accion <- getSymbols('NVDA', src = 'yahoo', auto.assign = FALSE, from = '2020-01-01')
precios_cierre <- accion$NVDA.Close
plot(precios_cierre, main = 'Precios de Cierre de NVDA', col = 'green', lwd = 2)
rentabilidad <- diff(log(precios_cierre))
plot(rentabilidad, main = 'Rentabilidad Diaria', col = 'green', lwd = 2)
# Calcular la desviación estándar móvil con una ventana de 20 días
volatilidad <- rollapply(rentabilidad, width = 20, FUN = sd, fill = NA, align = "right")
# Graficar la volatilidad
plot(volatilidad, type = "l", col = "#ff5733", lwd = 2,
main = "Volatilidad de la Rentabilidad Diaria (Desviación Estándar Móvil)",
xlab = "Fecha", ylab = "Volatilidad (Desviación Estándar)")
# Clasificar las rentabilidades en intervalos
categorias <- cut(rentabilidad, breaks = c(-Inf, -0.02, 0, 0.02, Inf),
labels = c("Muy Negativa", "Negativa", "Positiva", "Muy Positiva"))
# Graficar las frecuencias de cada categoría
barplot(table(categorias), main = "Distribución de Rentabilidades Diarias por Categoría",
col = c("red", "orange", "green", "blue"), xlab = "Categoría de Rentabilidad",
ylab = "Frecuencia")
hist(rentabilidad, breaks = 50, probability = TRUE, main = "Distribución de Rentabilidad", col = "gray")
curve(dnorm(x, mean = mean(rentabilidad, na.rm = TRUE), sd = sd(rentabilidad, na.rm = TRUE)),
col = "red", lwd = 2, add = TRUE)
summary(rentabilidad)
## Index NVDA.Close
## Min. :2020-01-02 Min. :-0.203979
## 1st Qu.:2021-03-23 1st Qu.:-0.016070
## Median :2022-06-10 Median : 0.003339
## Mean :2022-06-12 Mean : 0.002595
## 3rd Qu.:2023-08-31 3rd Qu.: 0.022267
## Max. :2024-11-20 Max. : 0.218088
## NA's :1
sd(rentabilidad$NVDA.Close , na.rm = TRUE)
## [1] 0.03392639
data_NVDA <- rentabilidad$NVDA.Close
probabilidad <- pnorm(mean(rentabilidad, na.rm = TRUE),
mean = mean(rentabilidad, na.rm = TRUE),
sd = sd(rentabilidad, na.rm = TRUE))
print(probabilidad)
## [1] 0.5
desvstd <- sd(rentabilidad$NVDA.Close, na.rm = TRUE)
desvstd
## [1] 0.03392639
summary(rentabilidad)
## Index NVDA.Close
## Min. :2020-01-02 Min. :-0.203979
## 1st Qu.:2021-03-23 1st Qu.:-0.016070
## Median :2022-06-10 Median : 0.003339
## Mean :2022-06-12 Mean : 0.002595
## 3rd Qu.:2023-08-31 3rd Qu.: 0.022267
## Max. :2024-11-20 Max. : 0.218088
## NA's :1
medianvda <- mean(rentabilidad$NVDA.Close, na.rm = TRUE)
medianvda
## [1] 0.00259469
pnorm(medianvda, medianvda, desvstd)
## [1] 0.5
data3 <- rentabilidad$NVDA.Close
ci <- t.test(data3)$conf.int # Intervalo de confianza para la media
cat("Intervalo de confianza usando funcion:", ci[1], "a", ci[2], "\n")
## Intervalo de confianza usando funcion: 0.0006968435 a 0.004492536
plot(density(rentabilidad, na.rm = TRUE), main = "Intervalo de Confianza para la Media", col = "darkgreen", lwd = 2)
abline(v = mean(rentabilidad, na.rm = TRUE), col = "blue", lwd = 2, lty = 2) # Línea para la media
abline(v = ci, col = "red", lwd = 2, lty = 2) # Líneas para los límites del intervalo
legend("topright", legend = c("Media", "Intervalo de Confianza"), col = c("blue", "red"), lwd = 2, lty = 2)
# Prueba de hipótesis para la media (H0: mu = 0)
resultado_data3 <- t.test(data3, mu = 0)
resultado_data3
##
## One Sample t-test
##
## data: data3
## t = 2.6823, df = 1229, p-value = 0.007411
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## 0.0006968435 0.0044925362
## sample estimates:
## mean of x
## 0.00259469
plot(density(rentabilidad, na.rm = TRUE),
main = "Prueba de Hipótesis para la Media",
xlab = "Rentabilidad",
ylab = "Densidad",
col = "darkgreen", lwd = 2)
abline(v = mean(rentabilidad, na.rm = TRUE), col = "blue", lwd = 2, lty = 2)
abline(v = 0, col = "red", lwd = 2, lty = 2)
abline(v = t.test(rentabilidad, mu = 0, conf.level = 0.95)$conf.int, col = "orange", lwd = 2, lty = 2)
legend("topright", legend = c("Densidad estimada", "Media observada", "Media bajo H0", "Intervalo de confianza"),
col = c("darkgreen", "blue", "red", "orange"), lwd = 2, lty = c(1, 2, 2, 2))