Objetivo General: Aprender a utilizar R y sus
funciones estadísticas base (junto con ggplot2 para
gráficas) para modelar, calcular y graficar las distribuciones de
probabilidad discretas más importantes: Bernoulli, Binomial, Binomial
Negativa, Poisson e Hipergeométrica.
Herramientas a Utilizar: - RStudio o Google Colab
(kernel de R) - R 4.x - Paquetes: ggplot2,
dplyr
Antes de comenzar, debemos cargar las librerías que nos permitirán realizar los cálculos y las gráficas.
Código para ejecutar:
# install.packages(c("ggplot2", "dplyr")) # Ejecutar solo la primera vez
library(ggplot2)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
cat("¡Entorno listo para el laboratorio!\n")
## ¡Entorno listo para el laboratorio!
Para no repetir código, crearemos una función que nos permita graficar cualquier distribución discreta de manera sencilla. Esta función recibirá los valores posibles (eje x), sus probabilidades (eje y) y, opcionalmente, qué barras resaltar.
Código para ejecutar:
# @title **A. Función para Graficar Distribuciones Discretas**
plot_distribution <- function(values, pmf, title, highlight = NULL,
highlight_color = "red", label = NULL) {
df <- data.frame(k = values, prob = pmf)
p <- ggplot(df, aes(x = factor(k), y = prob)) +
geom_bar(stat = "identity", fill = "skyblue", color = "black") +
labs(title = title, x = "Valores (k)", y = "Probabilidad P(X=k)") +
theme_minimal(base_size = 14) +
theme(plot.title = element_text(hjust = 0.5, face = "bold"),
axis.text.x = element_text(size = 9))
if (!is.null(highlight)) {
df_high <- df %>% filter(k %in% highlight)
p <- p + geom_bar(data = df_high, aes(x = factor(k), y = prob),
stat = "identity", fill = highlight_color, color = "black")
}
if (!is.null(label)) {
p <- p + annotate("text", x = length(values)/2, y = max(pmf) * 0.9,
label = label, size = 5, color = "darkgreen")
}
print(p)
}
A continuación, exploraremos cada distribución con un ejemplo práctico.
Definición: Modela un experimento con dos únicos resultados posibles: “éxito” (1) o “fracaso” (0). La probabilidad de éxito se denota como p.
Ejemplo: Lanzamiento de una moneda una vez. Sea X = 1 si sale cara, 0 si sale sello. Sea \(p=0.5\) la probabilidad de obtener cara.
Código para ejecutar:
# @title **B1. Ejemplo de Distribución de Bernoulli**
n_bernoulli <- 1 # Un solo ensayo
p_bernoulli <- 0.5 # Probabilidad de éxito (cara)
x_bernoulli <- 0:n_bernoulli
pmf_bernoulli <- dbinom(x_bernoulli, n_bernoulli, p_bernoulli)
plot_distribution(x_bernoulli, pmf_bernoulli,
sprintf("Distribución de Bernoulli (p=%.1f)", p_bernoulli))
cat(sprintf("Media (Esperanza): %.2f\n", n_bernoulli * p_bernoulli))
## Media (Esperanza): 0.50
cat(sprintf("Varianza: %.2f\n", n_bernoulli * p_bernoulli * (1 - p_bernoulli)))
## Varianza: 0.25