Code
# Ejemplo de distribución binomial
x <- 0:10
prob <- dbinom(x, size=10, prob=0.3)
datos <- data.frame(x, prob)
head(datos) x prob
1 0 0.02824752
2 1 0.12106082
3 2 0.23347444
4 3 0.26682793
5 4 0.20012095
6 5 0.10291935
Las distribuciones de probabilidad son modelos matemáticos que describen la probabilidad de que una variable aleatoria tome ciertos valores. Estas distribuciones son esenciales para realizar inferencias estadísticas y tomar decisiones basadas en datos.
Las distribuciones de probabilidad nos permiten:
Existen dos categorías principales de distribuciones de probabilidad, cada una con características específicas para diferentes tipos de variables aleatorias.
Las distribuciones discretas modelan variables aleatorias que toman valores contables o finitos.
La función de probabilidad de una variable discreta se define como: P(X = x) = f(x)
# Ejemplo de distribución binomial
x <- 0:10
prob <- dbinom(x, size=10, prob=0.3)
datos <- data.frame(x, prob)
head(datos) x prob
1 0 0.02824752
2 1 0.12106082
3 2 0.23347444
4 3 0.26682793
5 4 0.20012095
6 5 0.10291935
Las distribuciones continuas modelan variables aleatorias que pueden tomar cualquier valor dentro de un intervalo.
La función de densidad de probabilidad se define como: f(x) tal que P(a ≤ X ≤ b) = ∫ab f(x)dx
# Ejemplo de distribución normal
x <- seq(-4, 4, length=100)
y <- dnorm(x, mean=0, sd=1)
datos <- data.frame(x, y)
head(datos) x y
1 -4.000000 0.0001338302
2 -3.919192 0.0001842953
3 -3.838384 0.0002521381
4 -3.757576 0.0003427099
5 -3.676768 0.0004627846
6 -3.595960 0.0006208623
La distribución normal es una de las más importantes en estadística. Su función de densidad es: f(x) = (1/σ√2π) * e^(-(x-μ)²/2σ²)
# Visualización de la distribución normal
curve(dnorm(x), from = -3, to = 3,
main = "Distribución Normal Estándar",
ylab = "Densidad", xlab = "Valor")Cada distribución tiene sus propias características y aplicaciones:
library(knitr)
tabla <- data.frame(
Distribución = c("Normal", "Binomial", "Poisson", "Exponencial"),
Parámetros = c("μ, σ²", "n, p", "λ", "λ"),
Aplicaciones = c("Fenómenos naturales, errores de medición",
"Ensayos con éxito/fracaso",
"Eventos raros en intervalos fijos",
"Tiempos de espera entre eventos")
)
kable(tabla)| Distribución | Parámetros | Aplicaciones |
|---|---|---|
| Normal | μ, σ² | Fenómenos naturales, errores de medición |
| Binomial | n, p | Ensayos con éxito/fracaso |
| Poisson | λ | Eventos raros en intervalos fijos |
| Exponencial | λ | Tiempos de espera entre eventos |
Veamos una aplicación práctica comparando diferentes distribuciones:
# Generación de datos aleatorios
set.seed(123)
normal <- rnorm(1000, mean=50, sd=10)
uniforme <- runif(1000, min=30, max=70)
# Creamos conjuntos de datos para visualizar
datos_normal <- data.frame(valor = normal, tipo = "Normal")
datos_uniforme <- data.frame(valor = uniforme, tipo = "Uniforme")
datos_combinados <- rbind(datos_normal, datos_uniforme)
# Resumen estadístico
resumen <- data.frame(
Distribución = c("Normal", "Uniforme"),
Media = c(mean(normal), mean(uniforme)),
Desviación = c(sd(normal), sd(uniforme)),
Mínimo = c(min(normal), min(uniforme)),
Máximo = c(max(normal), max(uniforme))
)
kable(resumen)| Distribución | Media | Desviación | Mínimo | Máximo |
|---|---|---|---|---|
| Normal | 50.16128 | 9.91695 | 21.90225 | 82.41040 |
| Uniforme | 49.94415 | 11.68806 | 30.14064 | 69.98604 |
# Visualización
par(mfrow=c(1,2))
boxplot(datos_normal$valor, main="Datos normales")
boxplot(datos_uniforme$valor, main="Datos uniformes")El Teorema del Límite Central establece que la distribución de la media muestral tiende a una distribución normal a medida que aumenta el tamaño de la muestra, independientemente de la distribución original de la población.
# Demostración del Teorema del Límite Central
set.seed(456)
medias <- replicate(1000, mean(rexp(30, rate=0.2)))
hist(medias, breaks=30, main="Distribución de Medias Muestrales",
xlab="Media", col="lightblue", border="white")
# Añadimos una curva normal para comparar
curve(dnorm(x, mean=mean(medias), sd=sd(medias)) * length(medias) * diff(range(medias)) / 30,
add=TRUE, col="red", lwd=2)