En el estudio de la teoría de probabilidad, las variables aleatorias desempeñan un papel central, ya que proporcionan un medio matemático para cuantificar los resultados de procesos aleatorios. Las variables aleatorias se clasifican en dos tipos principales: discretas y continuas, cada una con su propia metodología de análisis y conjuntos de distribuciones de probabilidad asociados. Las variables aleatorias discretas asumen valores específicos y contables, y son modeladas mediante distribuciones tales como la binomial, la geométrica y la Poisson. En contraste, las variables aleatorias continuas pueden tomar cualquier valor dentro de un intervalo, siendo ejemplos comunes de sus distribuciones la normal, la exponencial y la uniforme.
# Datos
p <- 12 / 15 # Probabilidad de éxito (marcar)
n <- 8 # Número de penaltis lanzados
# Parte a: Probabilidad de marcar menos de 7 penaltis (0 a 6)
prob_menos_de_7 <- pbinom(6, size = n, prob = p)
# Parte b: Probabilidad de marcar exactamente 2 penaltis
prob_exacta_2 <- dbinom(2, size = n, prob = p)
# Parte c: Probabilidad de NO marcar siete o más penaltis
prob_no_siete_o_mas <- 1 - pbinom(6, size = n, prob = p)
# Parte d: Probabilidad de marcar más de un penalti
prob_mas_de_1 <- 1 - pbinom(1, size = n, prob = p)
# Imprimir resultados
print(paste("Probabilidad de marcar menos de 7 penaltis:", round(prob_menos_de_7, 4)))
## [1] "Probabilidad de marcar menos de 7 penaltis: 0.4967"
print(paste("Probabilidad de marcar exactamente 2 penaltis:", round(prob_exacta_2, 4)))
## [1] "Probabilidad de marcar exactamente 2 penaltis: 0.0011"
print(paste("Probabilidad de NO marcar siete o más penaltis:", round(prob_no_siete_o_mas, 4)))
## [1] "Probabilidad de NO marcar siete o más penaltis: 0.5033"
print(paste("Probabilidad de marcar más de un penalti:", round(prob_mas_de_1, 4)))
## [1] "Probabilidad de marcar más de un penalti: 0.9999"
library(ggplot2)
# Crear un dataframe con los datos
dat.messi<- data.frame(
Categoría = c("P(X < 7)", "P(X = 2)", "P(X >= 7)", "P(X > 1)"),
Probabilidad = c(0.4967, 0.0011, 0.5033, 0.9999),
Etiqueta = c("49.67%", "0.11%", "50.33%", "99.99%"),
Color = c("blue", "red", "green", "purple")
)
# Crear la gráfica
p.messi <- ggplot(dat.messi, aes(x = Categoría, y = Probabilidad, fill = Color)) +
geom_bar(stat = "identity", show.legend = FALSE) +
geom_text(aes(label = Etiqueta), vjust = -0.3, color = "black") +
labs(title = "Probabilidades de resultados de penaltis por Lionel Messi",
x = NULL, y = "Probabilidad") +
theme_minimal() +
scale_fill_identity() +
coord_cartesian(ylim = c(0, 1.1))
print(p.messi)
# Parámetro lambda
lambda_poisson <- 2.5
# Valores de k desde 0 hasta 9
k_valor <- 0:9
# Calculando las probabilidades de Poisson para los valores de k
probabilidad <- dpois(k_valor, lambda_poisson)
# Probabilidades de 0 a 4 jugadores
prob_0_a_4 <- probabilidad[1:5]
# Probabilidad de menos de 4 jugadores
prob_menos_de_4 <- sum(probabilidad[1:4])
# Probabilidad de más de 4 jugadores
prob_mas_de_4 <- 1 - sum(probabilidad[1:5])
# Mostrar los resultados calculados
print(prob_0_a_4)
## [1] 0.0820850 0.2052125 0.2565156 0.2137630 0.1336019
print(prob_menos_de_4)
## [1] 0.7575761
print(prob_mas_de_4)
## [1] 0.108822
library(ggplot2)
# Gráfica
jugadores <- c("0", "1", "2", "3", "4", ">4", "<4")
probabilidades <- c(0.0821, 0.2052, 0.2565, 0.2138, 0.1336, 0.1088, 0.7576)
etiquetas <- c("8.21%", "20.52%", "25.65%", "21.38%", "13.36%", "10.88%", "75.76%")
datos <- data.frame(Jugadores = jugadores, Probabilidad = probabilidades, Etiquetas = etiquetas)
p.jug <- ggplot(datos, aes(x = Jugadores, y = Probabilidad, fill = Jugadores)) +
geom_bar(stat = "identity", width = 0.5) + # Barras
geom_text(aes(label = Etiquetas), vjust = -0.5, color = "black") + # Etiquetas de texto sobre las barras
labs(title = "Probabilidad de número de jugadores que llegan en determinado minuto",
subtitle = "Distribución de llegada de jugadores",
x = "Número de Jugadores",
y = "Probabilidad") +
scale_fill_brewer(palette = "Paired") + # Colores
theme_minimal() + # Tema minimalista
theme(axis.title.x = element_text(face = "bold", color = "#993333"),
axis.title.y = element_text(face = "bold", color = "#993333"),
plot.title = element_text(hjust = 0.5)) # Ajustes estéticos
print(p.jug)
Cuando un usuario llega al andén y el bus acaba de partir, se calculan las probabilidades para los siguientes escenarios:
a <- 2/3
b <- 33/2
L <- b - a
## a. ¿más de 5,8 minutos?
P_mas_que_5_8 <- (b - 5.8) / L
P_mas_que_5_8
## [1] 0.6757895
## b. ¿entre 2,7 y 9,3 minutos?
P_entre_2_7_y_9_3 <- (9.3 - 2.7) / L
P_entre_2_7_y_9_3
## [1] 0.4168421
library(ggplot2)
max_time <- 15
uniform_prob <- 1 / max_time
data <- data.frame(time = seq(0, max_time, length.out = 1000))
data$probability <- uniform_prob
ggplot(data, aes(x = time, y = probability)) +
geom_line(color = "red", size = 1) +
geom_ribbon(aes(ymin = 0, ymax = probability), fill = "blue", alpha = 0.5, data = subset(data, time > 5.8)) +
geom_ribbon(aes(ymin = 0, ymax = probability), fill = "green", alpha = 0.5, data = subset(data, time > 2.7 & time < 9.3)) +
labs(title = "Comparación de probabilidades de tiempo de espera",
x = "Tiempo de espera (minutos)",
y = "Probabilidad") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
# Parámetro lambda para la distribución exponencial (tasa = 1 / media)
lambda <- 1 / 0.3
# a) Menos de 12 minutos al día (0.2 horas)
P_menos_de_12_min <- pexp(0.2, rate = lambda)
# b) Más de dos horas al día
P_mas_de_2_hours <- 1 - pexp(2, rate = lambda)
# c) Entre 30 y 90 minutos al día (0.5 a 1.5 horas)
P_entre_30_y_90_min <- pexp(1.5, rate = lambda) - pexp(0.5, rate = lambda)
print(paste("Probabilidad de menos de 12 minutos:", P_menos_de_12_min))
## [1] "Probabilidad de menos de 12 minutos: 0.486582880967408"
print(paste("Probabilidad de más de dos horas:", P_mas_de_2_hours))
## [1] "Probabilidad de más de dos horas: 0.0012726338013398"
print(paste("Probabilidad entre 30 y 90 minutos:", P_entre_30_y_90_min))
## [1] "Probabilidad entre 30 y 90 minutos: 0.182137655838476"
# Cargar la librería ggplot2
library(ggplot2)
# Parámetro lambda para la distribución exponencial
lambda <- 1 / 18 # 18 minutos es el promedio
# Definir los límites de tiempo para la gráfica
time_limit <- 180 # Por ejemplo, hasta 3 horas o 180 minutos
# Crear un data frame con la secuencia de tiempos y calcular la densidad
times <- seq(0, time_limit, length.out = 1000)
density <- dexp(times, rate = lambda)
# Calcular las probabilidades para los intervalos específicos
prob_less_12 <- pexp(12, rate = lambda)
prob_more_120 <- 1 - pexp(120, rate = lambda)
prob_between_30_90 <- pexp(90, rate = lambda) - pexp(30, rate = lambda)
# Data frame para las áreas sombreadas
data <- data.frame(
time = times,
density = density,
less12 = ifelse(times < 12, density, NA),
more120 = ifelse(times > 120, density, NA),
between30and90 = ifelse(times >= 30 & times <= 90, density, NA)
)
# Gráfico de la distribución exponencial y las áreas sombreadas
ggplot(data, aes(x = time, y = density)) +
geom_line(color = "black") +
geom_ribbon(aes(ymin = 0, ymax = less12), fill = "blue", alpha = 0.5) +
geom_ribbon(aes(ymin = 0, ymax = more120), fill = "purple", alpha = 0.5) +
geom_ribbon(aes(ymin = 0, ymax = between30and90), fill = "green", alpha = 0.5) +
labs(title = "Distribucion Exponencial del Tiempo de Uso de Computadora",
x = "Tiempo de uso (minutos)",
y = "Densidad de probabilidad",
caption = paste("Probabilidad de < 12 min:", round(prob_less_12 * 100, 2),
"%\nProbabilidad de > 120 min:", round(prob_more_120 * 100, 2),
"%\nProbabilidad de entre 30 y 90 min:", round(prob_between_30_90 * 100, 2), "%")) +
theme_minimal() +
theme(plot.caption = element_text(hjust = 0, size = 8))
# Guardar la gráfica en un archivo
ggsave("exponential_distribution_elderly.png", width = 8, height = 5)
mu <- 23.4
sigma <- 3.1
# Calcular probabilidades
prob_menor_de_15 <- pnorm(15, mean = mu, sd = sigma)
prob_mas_de_30 <- 1 - pnorm(30, mean = mu, sd = sigma)
total_probabilidad <- prob_menor_de_15 + prob_mas_de_30
print(paste("Probabilidad de menos de 15 días:", prob_menor_de_15))
## [1] "Probabilidad de menos de 15 días: 0.00336743371680076"
print(paste("Probabilidad de más de 30 días:", prob_mas_de_30))
## [1] "Probabilidad de más de 30 días: 0.016625795810478"
print(paste("Probabilidad total (menos de 15 o más de 30 días):", total_probabilidad))
## [1] "Probabilidad total (menos de 15 o más de 30 días): 0.0199932295272787"
# Crear un rango de días para el gráfico
# Generar valores x y y para la distribución normal
x_valor <- seq(0, 50, length.out = 300)
y_valor <- dnorm(x_valor, mean = mu, sd = sigma)
# Crear el data frame para ggplot
dat.pest <- data.frame(Dias = x_valor, Densidad = y_valor)
# Graficar la distribución normal con las áreas de interés sombreadas
ggplot(dat.pest, aes(x = Dias, y = Densidad)) +
geom_line(color = "blue") + # Línea que muestra la distribución normal
geom_area(data = subset(dat.pest, Dias < 15), fill = "orange", alpha = 0.5) +
geom_area(data = subset(dat.pest, Dias > 30), fill = "green", alpha = 0.5) +
labs(title = "Distribución normal del tiempo de duración del efecto del pesticida",
subtitle = "Sombreado para días < 15 y días > 30",
x = "Tiempo (días)",
y = "Densidad de Probabilidad") +
theme_minimal()
# Imprimir las probabilidades calculadas