Modelos de probabilidad

El comportamiento de una variable aleatoria queda descrito por su función de masa o función de densidad (Variable discreta o variable continua, respectivamente). Existen varias distribuciones de probabilidad que se ha demostrado, empíricamente, ser modelos útiles para diversos problemas prácticos (Situaciones con características específicas). En muchas situaciones es posible encontrar un modelo o fórmula que permita estimar (Aproximar) los valores de probabilidad de una variable aleatoria. Los modelos más comunes son:
library(knitr)

# Tu conjunto de datos
datos <- data.frame(
  Modelo_Discreto= c("Bernoulli","Binomial","Poisson"),
  Modelo_Continuo = c("Uniforme","Normal","Exponencial")
)

# Crear la tabla utilizando kable()
kable(datos, caption = "",col.names =c("Modelo Discreto", "Modelo Continuo"),format="pipe")
Modelo Discreto Modelo Continuo
Bernoulli Uniforme
Binomial Normal
Poisson Exponencial
Una distribución de probabilidad está caracterizada de manera general, por una o más cantidades que reciben el nombre de parámetros.

Para hacer uso de los modelos de probabilidad en R tenga en cuenta:

# Crear una tabla que explique las diferencias entre r, d y p en R
diferencias <- data.frame(
  Función = c("r", "d", "p"),
  Significado = c("Genera valores aleatorios según la distribución",
                   "Calcula la densidad de probabilidad (PDF)",
                   "Calcula la función de distribución acumulativa (CDF)"),
  Ejemplo = c("rnorm(n, mean, sd) genera n valores aleatorios de una distribución normal",
               "dnorm(x, mean, sd) calcula la PDF de una distribución normal en x",
               "pnorm(x, mean, sd) calcula la CDF de una distribución normal en x")
)

# Imprimir la tabla utilizando kable
knitr::kable(diferencias, caption = "")
Función Significado Ejemplo
r Genera valores aleatorios según la distribución rnorm(n, mean, sd) genera n valores aleatorios de una distribución normal
d Calcula la densidad de probabilidad (PDF) dnorm(x, mean, sd) calcula la PDF de una distribución normal en x
p Calcula la función de distribución acumulativa (CDF) pnorm(x, mean, sd) calcula la CDF de una distribución normal en x

A continuación se presenta de manera general las funciones para cada modelo. Nota: Dependiendo de la necesidad puede cambiar d por r o p:

# Cargar el paquete necesario (en este caso, solo se utiliza el paquete base de R)
library(stats)

# Crear una tabla con las distribuciones de probabilidad comunes
distribuciones <- data.frame(
  Distribución = c("Normal", "Uniforme", "Exponencial", "Poisson", "Binomial"),
  Función = c("dnorm(x, mean, sd)", "dunif(x, min, max)", "dexp(x, rate)", "dpois(x, lambda)", "dbinom(x, size, prob)"),
  Parámetros = c("mean (media), sd (desviación estándar)", "min (mínimo), max (máximo)", "rate (tasa)", "lambda (tasa)", "size (número de ensayos), prob (probabilidad de éxito)"),
  Descripción = c("Distribución normal", "Distribución uniforme", "Distribución exponencial", "Distribución de Poisson", "Distribución binomial")
)

# Imprimir la tabla utilizando kable
knitr::kable(distribuciones, caption = "")
Distribución Función Parámetros Descripción
Normal dnorm(x, mean, sd) mean (media), sd (desviación estándar) Distribución normal
Uniforme dunif(x, min, max) min (mínimo), max (máximo) Distribución uniforme
Exponencial dexp(x, rate) rate (tasa) Distribución exponencial
Poisson dpois(x, lambda) lambda (tasa) Distribución de Poisson
Binomial dbinom(x, size, prob) size (número de ensayos), prob (probabilidad de éxito) Distribución binomial

Modelo de probabilidad discretos

Modelo de probabilidad Bernoulli

El experimento aleatorio más sencillo es aquel que puede resultar en uno de dos resultados posibles (Mutuamente excluyentes, porque no pueden darse simultáneamente).

Ejemplos:
- Obtener cara o sello al lanzar una moneda.
- Un pedido es entregado o no.
- Una persona se clasifica como enfermo o sano.
- Una llamada da como resultado que el cliente compre el producto o no lo compre.

El experimento con dos resultados posibles se denomina ensayo Bernoulli.

Con frecuencia, se clasifican los dos posibles resultados como éxito y fracaso. Sin embargo, esta clasificación no implica que un resultado sea bueno y el otro malo.

La distribución de probabilidad para un ensayo Bernoulli depende sólo de un parámetro p, probabilidad de éxito donde \(0<p<1\), se le conoce como distribución Bernoulli (Se representa como \(𝑋\sim Ber(p)\)).

Sea \(𝑋\) la variable aleatoria que representa el éxito (1) ó fracaso (0) de un experimento aleatorio. Se dice entonces que 𝑋 tiene una distribución Bernoulli con función dada por:

\[ P(X = x) = \begin{cases} p & \text{si } x = 1 \\ q = 1-p & \text{si } x = 0 \end{cases} \]

Donde:
- \(p\) es la probabilidad de éxito.
- \(q\) es la probabilidad de fracaso.

En R, puedes usar la función rbernoulli() del paquete base para generar valores aleatorios que sigan una distribución de Bernoulli. Aquí hay un ejemplo:

set.seed(123)
# Parámetros de la distribución de Bernoulli
probabilidad_exito1 <- 0.5

# Generar un valor aleatorio siguiendo una distribución de Bernoulli
resultado1 <- rbinom(n=1000,size=1, probabilidad_exito1)

# Imprimir el resultado
#resultado1

Lo anterior se genera con \(rbinom(n=10,size=1, probabilidad)\) donde \(n\) representa el número de observaciones que queremos simular y \(size\) es el número de ensayos.

Tabla1=as.data.frame(table(resultado1)/1000)
# Calcular y trazar la función de probabilidad binomial
k1 <- 0:1
prob_binomial1 <- dbinom(k1, 1, probabilidad_exito1)

# Crear el gráfico
plot(k1, prob_binomial1, type = "h", xaxt = "n", xlab = "k", ylab = "P(X=k)", main = "Función de Probabilidad B(1,0.3)", ylim = c(0, 0.8), lwd = 2, col = "blue")
lines(Tabla1$resultado, Tabla1$Freq, type = "h", lwd = 2, col = "red")
legend("topright", legend = c("Función de Probabilidad Binomial", "Simulación"),
       col = c("blue", "red"), lwd = c(1, 2), bty = "n")

# Personalizar las etiquetas del eje X
axis(1, at = k1, labels = k1)

Modelo de probabilidad Binomial

Algunos experimentos consisten en la observación de una secuencia de intentos idénticos e independientes, cada uno de los cuales puede resultar en uno de dos resultados (Observación de ensayos Bernoulli). Por ejemplo:

Consideremos el experimento de lanzar una moneda 10 veces y observar el número de “caras”. Este experimento tiene las siguientes características:

-“Lanzar una moneda” es un ensayo Bernoulli.
- Se ejecuta 𝑛=10 veces.
- Los 10 experimentos son idénticos.
- Los 10 experimentos son independientes.
- La probabilidad \(p=1/2\) de observar una “cara” permanece constante.

Este experimento es un ejemplo de un tipo especial de experimento llamado experimento binomial.

Se caracteriza por presentar dos cantidades que son \(n\) y \(p\), donde:
n: Representa el número de ensayos
p: Es la probabilidad de éxito en cada ensayo.

Una variable Binomial se representa por:

\(X \sim Binom(n,p)\)

La función de masa de probabilidad del modelo binomial es:

\[ P(X = k) = \binom{n}{k} \cdot p^k \cdot (1-p)^{n-k}\;\; x=0,1,2,3,...,n \]

Donde: - \(n\) es el número total de ensayos.
- \(k\) es el número de éxitos deseados.
- \(p\) es la probabilidad de éxito en un solo ensayo.
- \(\binom{n}{k}\) se llama el coeficiente binomial y se calcula como \(\binom{n}{k} = \frac{n!}{k!(n-k)!}\).

En R, puedes usar la función rbinom().

set.seed(123)
# Parámetros de la distribución binomial
n_ensayos <- 10
probabilidad_exito <- 0.5

# Generar un valor aleatorio siguiendo una distribución binomial
resultado <- rbinom(n=1000, n_ensayos, probabilidad_exito)

# Imprimir el resultado
#resultado
barplot(table(resultado),ylim=c(0,400))

Tabla=as.data.frame(table(resultado)/1000)

plot(dbinom(Tabla$resultado[1]:n_ensayos,n_ensayos,probabilidad_exito),type="h",xlab="k",ylab="P(X=k)",main="Función de Probabilidad B(10,0.5)",ylim=c(0,0.5),lwd = 2,col="blue")
lines(Tabla$resultado,Tabla$Freq, type = "h", lwd = 2, col = "red")
legend("topright", legend = c("Función de Probabilidad Binomial", "Simulación"),
       col = c("blue", "red"), lwd = c(1, 2),bty="n")

La media para los datos simulados es de: 4.97.

Mientras que el valor esperado es: 5.

Modelo de probabilidad Poisson

La distribución de Poisson se utiliza para describir ciertos tipos de procesos, entre los que se encuentran:

  • La distribución de llamadas telefónicas que llegan a un conmutador.
  • Las solicitudes de pacientes que requieren servicio en una institución de salud.
  • Las llegadas de camiones y automóviles a una caseta de cobro.
  • El número de accidentes registrados en cierta intersección.

Estos ejemplos tienen en común un elemento: pueden ser descritos mediante una variable aleatoria discreta que toma valores enteros (0, 1, 2, 3, 4, 5, etc.).

El modleo Poisson es una distribución de probabilidad discreta que se utiliza para modelar la ocurrencia de eventos en un intervalo de tiempo o espacio, donde los eventos son independientes. La función de masa de probabilidad es:

\[ P(X = x) = \frac{{e^{-\lambda} \cdot \lambda^x}}{{x!}}\;\; x=0,1,2,3,... \]

Donde:
- \(x\) es el número de eventos que queremos modelar.
- \(\lambda\) es la tasa de eventos por unidad de tiempo o espacio.

En R, puedes usar la función dpois() del paquete base para calcular la PMF de la distribución de Poisson. Aquí hay un ejemplo:
set.seed(123)
# Parámetros de la distribución de Poisson
tasa_eventos <- 4  # Tasa de eventos por unidad de tiempo o espacio
num_muestras <- 1000  # Número de muestras a generar

# Simular datos de una distribución de Poisson
datos_poisson <- rpois(num_muestras, lambda = tasa_eventos)

# Ver los primeros 10 valores generados
head(datos_poisson)
## [1] 3 6 3 6 7 1
Tabla2 <- as.data.frame(table(datos_poisson) / 1000)
# Calcular la función de probabilidad de Poisson

x <- 0:max(datos_poisson)
pmf_poisson <- dpois(x, lambda = tasa_eventos)

plot(pmf_poisson,type="h",xlab="k",ylab="P(X=k)",main="Función de Probabilidad Poisson",ylim=c(0,0.5),lwd = 2,col="blue")

# Agregar la simulación como líneas rojas al gráfico
lines(Tabla2$datos_poisson, Tabla2$Freq, type = "h", lwd = 2, col = "red")

# Agregar una leyenda
legend("topright", legend = c("Función de Probabilidad Poisson", "Simulación"),
       col = c("blue", "red"), lwd = c(1, 2), bty = "n")

La media para los datos simulados es de: 3.99.

Mientras que el valor esperado es: 4.

Modelo de probabilidad continua

Modelo Uniforme Continuo

Es un modelo de probabilidad que se utiliza para describir un conjunto de valores donde todos los valores en un intervalo tienen la misma densidad.

La función de densidad de probabilidad es:

\[ f(x) = \begin{cases} \frac{1}{b-a} & \text{si } a \leq x \leq b \\ 0 & \text{en otro caso} \end{cases} \]

Donde:
- \(a\) es el límite inferior del intervalo.
- \(b\) es el límite superior del intervalo.

En R, puedes utilizar la función dunif().

# Parámetros de la distribución uniforme continua
limite_inferior <- 2
limite_superior <- 5
tamano_muestra <- 10000

# Generar una muestra de datos
datos_simulados <- runif(tamano_muestra, min = limite_inferior, max = limite_superior)
# Crear un rango de valores x
x <- seq(limite_inferior, limite_superior, length.out = 100)

# Calcular la densidad de probabilidad teórica
densidad_teorica <- dunif(x, min = limite_inferior, max = limite_superior)

# Calcular la densidad de probabilidad a partir de los datos simulados
densidad_simulada <- density(datos_simulados)

# Crear un gráfico de comparación de densidades utilizando gráficos base
plot(x, densidad_teorica, type = "l", col = "blue", lty = 1, xlab = "X", ylab = expression(f(x)), main = "Comparación de Densidades")
lines(densidad_simulada$x, densidad_simulada$y, col = "red", lty = 2)
legend("topright", legend = c("Teórica", "Simulada"), col = c("blue", "red"), lty = c(1, 2),bty="n")

La media para los datos simulados es de: 3.49.

Mientras que el valor esperado es: 3.5.

Modelo exponencial

Es un modelo de probabilidad continua que modela el tiempo entre eventos de un proceso de Poisson. Su función de densidad de probabilidad es:

\[ f(x;\lambda) = \lambda e^{-\lambda x}\;\; \lambda>0\;\; x>0 \]

Donde:
- \(\lambda\) (lambda) es el parámetro de tasa, que representa la tasa de eventos por unidad de tiempo. Cuanto mayor sea \(\lambda\), más “aguda” será la distribución.

Nota:La distribución exponencial modela el tiempo entre eventos sucesivos en un proceso de Poisson. Es decir, si tienes un proceso de Poisson en el que los eventos ocurren de manera aleatoria con una tasa promedio de \(\lambda\) eventos por unidad de tiempo, entonces la distribución exponencial modela cuánto tiempo debes esperar hasta que ocurra el próximo evento.

En R, puedes simular una distribución exponencial utilizando la función rexp().

set.seed(1000)
# Parámetro de tasa lambda
lambda <- 0.5

# Número de valores a generar
n <- 1000

# Generar valores aleatorios de una distribución exponencial
simulacion <- rexp(n, rate = lambda)

# Crear un histograma de la simulación
hist(simulacion, breaks = 30, freq = FALSE, main = "Simulación de Distribución Exponencial", xlab = "Valores Simulados",ylim=c(0,1))

# Calcular la densidad de probabilidad teórica
x <- seq(0, max(simulacion), length = 100)
densidad_teorica <- lambda * exp(-lambda * x)

# Superponer la densidad teórica en el gráfico
lines(x, densidad_teorica, col = "red", lw = 2)

# Agregar leyenda al gráfico
legend("topright", legend = c("Simulación", "Densidad Teórica"), col = c("black", "red"), lwd = c(1, 2),bty="n")

La media para los datos simulados es de: 2.01.

Mientras que el valor esperado es: 2.

Modelo Normal

También conocida como la distribución gaussiana, es una de las distribuciones de probabilidad más importantes en estadísticas y análisis de datos. Se caracteriza por su forma de campana y está completamente definida por dos parámetros: la media (\(\mu\)) y la desviación estándar (\(\sigma\)).

La función de densidad de probabilidad de la distribución normal es:

\[ f(x | \mu, \sigma) = \frac{1}{\sigma\sqrt{2\pi}}e^{-\frac{(x - \mu)^2}{2\sigma^2}} \]

Donde:
- \(\mu\) es la media de la distribución.
- \(\sigma\) es la desviación estándar de la distribución.

En R, puedes calcular la función de densidad de probabilidad de una distribución normal utilizando la función dnorm().

# Parámetros de la distribución normal
media <- 2
desviacion_estandar <- 1
tamano_muestra <- 10000

# Generar una muestra de datos
datos_simulados <- rnorm(tamano_muestra, mean = media, sd = desviacion_estandar)
# Crear un rango de valores x
x <- seq(media - 4 * desviacion_estandar, media + 4 * desviacion_estandar, length.out = 400)

# Calcular la densidad de probabilidad teórica
densidad_teorica <- dnorm(x, mean = media, sd = desviacion_estandar)

# Calcular la densidad de probabilidad a partir de los datos simulados
densidad_simulada <- density(datos_simulados)

# Crear un gráfico de comparación de densidades utilizando gráficos base
plot(x, densidad_teorica, type = "l", col = "blue", lty = 1, xlab = "Valor", ylab = "Densidad de Probabilidad", main = "Comparación de Densidades")
lines(densidad_simulada$x, densidad_simulada$y, col = "red", lty = 2)
legend("topright", legend = c("Teórica", "Simulada"), col = c("blue", "red"), lty = c(1, 2),bty="n")

La media para los datos simulados es de: 2.

Mientras que el valor esperado es: 2.