Laboratorio 14: Modelos Probabilísticos Discretos en R

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


Parte 1: Preparación del Entorno

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!

Parte 2: Función de Ayuda para Graficar

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)
}


Parte 3: Exploración de Modelos Probabilísticos Discretos

A continuación, exploraremos cada distribución con un ejemplo práctico.

3.1. Distribución de Bernoulli

Definición: Modela un experimento con dos únicos resultados posibles: “éxito” (1) o “fracaso” (0). La probabilidad de éxito se denota como p.

  • Función de Probabilidad: \(P(X=k) = p^k (1-p)^{1-k}\), para \(k = 0, 1\).
  • Media (Esperanza): \(E(X) = p\)
  • Varianza: \(Var(X) = p(1-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