Distribución Normal:
La distribución normal, también conocida como la distribución de Gauss o campana de Gauss, es una distribución continua simétrica. Caracterizada por su forma de campana, se utiliza comúnmente para modelar fenómenos en la naturaleza, como la altura de una población, el error de medidas y muchas otras variables.
Libro de referencia: “Probability and Statistics” de Morris H. DeGroot y Mark J. Schervish.
Problema de Aplicación: Alturas de Estudiantes
Supongamos que seleccionamos al azar a un estudiante de esta universidad. ¿Cuál es la probabilidad de que su altura sea mayor a 180 cm?
# Parámetros de la distribución normal
media <- 170
desviacion_estandar <- 10
# Probabilidad de que la altura sea mayor a 180 cm
probabilidad_mayor_180 <- 1 - pnorm(180, mean = media, sd = desviacion_estandar)
probabilidad_mayor_180
## [1] 0.1586553
La función \(pnorm\) en R calcula la probabilidad acumulativa hasta un cierto valor en una distribución normal. Restamos este valor de 1 para obtener la probabilidad de que la altura sea mayor a 180 cm.
# Gráfico de la distribución normal
x <- seq(150, 200, length = 1000)
y <- dnorm(x, mean = media, sd = desviacion_estandar)
plot(x, y, type = "l", lwd = 2, col = "blue", xlab = "Altura (cm)", ylab = "Densidad de Probabilidad", main = "Distribución Normal de Alturas")
# Área sombreada para la probabilidad mayor a 180 cm
polygon(c(180, 200, 200, 180), c(0, 0, dnorm(200, mean = media, sd = desviacion_estandar), dnorm(180, mean = media, sd = desviacion_estandar)), col = "gray", border = NA)
# Línea vertical en 180 cm
abline(v = 180, col = "red", lty = 2)
# Texto explicativo
text(185, 0.015, paste("Probabilidad =", round(probabilidad_mayor_180, 4)), col = "red")
Ahora, se desea encontrar la altura tal que el \(90\%\) de los estudiantes tengan una altura inferior a ella. ¿Cuál es esa altura?
# Encontrar la altura correspondiente al percentil 90
altura_percentil_90 <- qnorm(0.9, mean = media, sd = desviacion_estandar)
altura_percentil_90
## [1] 182.8155
La función \(qnorm\) en R calcula el cuantil correspondiente a un determinado percentil en una distribución normal. En este caso, encontramos la altura tal que el \(90\%\) de los estudiantes tienen una altura inferior a ella.
# Gráfico de la distribución normal
plot(x, y, type = "l", lwd = 2, col = "blue", xlab = "Altura (cm)", ylab = "Densidad de Probabilidad", main = "Distribución Normal de Alturas")
# Línea vertical en la altura correspondiente al percentil 90
abline(v = altura_percentil_90, col = "green", lty = 2)
# Área sombreada para el percentil 90
polygon(c(150, x[x <= altura_percentil_90], altura_percentil_90), c(0, dnorm(x[x <= altura_percentil_90], mean = media, sd = desviacion_estandar), 0), col = "lightgreen", border = NA)
# Texto explicativo
text(175, 0.02, paste("Altura Percentil 90 =", round(altura_percentil_90, 2)), col = "green")
Distribución T de Student:
Se utiliza en inferencia estadística cuando se trabaja con muestras pequeñas. A medida que el tamaño de la muestra aumenta, la distribución t se aproxima a la distribución normal. Es comúnmente utilizada en pruebas de hipótesis y en intervalos de confianza para la media de una población cuando la desviación estándar poblacional es desconocida.
Problema:
Supongamos que estamos interesados en estimar el intervalo de confianza para la altura media de una muestra de \(25\) estudiantes de una universidad. La desviación estándar de la altura de la población es desconocida, pero sabemos que la media de la altura de la población es \(170 cm\).
# Generar datos de una distribución t de Student
set.seed(123)
altura_muestra <- rt(25, df = 24) * 10 + 170 # Multiplicamos por 10 para ajustar la escala
# Intervalo de confianza del 95% para la media de la población
intervalo_confianza <- t.test(altura_muestra)$conf.int
intervalo_confianza
## [1] 163.6901 173.5860
## attr(,"conf.level")
## [1] 0.95
# Histograma de la muestra
hist(altura_muestra, main = "Alturas de la Muestra", col = "lightblue", border = "black", xlab = "Altura (cm)")
# Líneas verticales en los límites del intervalo de confianza
abline(v = intervalo_confianza, col = c("red", "red"), lty = 2)
# Texto explicativo
text(177, 5, paste("Intervalo de Confianza (95%) =", round(intervalo_confianza, 2)), col = "red")
Distribución Chi-cuadrado:
Se utiliza principalmente en pruebas de bondad de ajuste y en pruebas de independencia en tablas de contingencia. También se utiliza en la estimación de la varianza de una población basándose en una muestra. Libro de referencia: “Introduction to the Practice of Statistics” de David S. Moore, George P. McCabe y Bruce A. Craig.
Supongamos que se desea evaluar si hay alguna diferencia significativa en las preferencias de deportes entre hombres y mujeres en una población. Se han recopilado datos en una tabla de contingencia.
# Generar datos de una distribución chi-cuadrado
set.seed(123)
tabla_contingencia <- matrix(c(30, 20, 10, 15), nrow = 2, byrow = TRUE)
# Prueba de independencia chi-cuadrado
resultado_chi2 <- chisq.test(tabla_contingencia)
resultado_chi2
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: tabla_contingencia
## X-squared = 1.9353, df = 1, p-value = 0.1642
# Gráfico de barras apiladas
barplot(tabla_contingencia, beside = TRUE, col = c("lightblue", "lightpink"), legend = c("Hombres", "Mujeres"), ylim = c(0, 40), names.arg = c("Deporte A", "Deporte B"), main = "Preferencias de Deportes por Género", xlab = "Deporte", ylab = "Frecuencia")
# Texto explicativo
text(1.5, 35, paste("p-valor =", round(resultado_chi2$p.value, 4)))
Distribución F de Fisher:
La distribución F de Fisher se utiliza en el análisis de varianza (ANOVA) y en pruebas de comparación de varianzas. Es útil cuando se quiere comparar la variabilidad entre más de dos grupos. También se utiliza en análisis de regresión. Libro de referencia: “An Introduction to Mathematical Statistics and Its Applications” de Richard J. Larsen y Morris L. Marx.
Supongamos que se desea comparar las varianzas de los tiempos de ejecución de dos algoritmos. Hemos medido los tiempos de ejecución en dos conjuntos de datos.
# Generar datos de una distribución F de Fisher
set.seed(123)
datos_grupo1 <- rnorm(30, mean = 10, sd = 2)
datos_grupo2 <- rnorm(25, mean = 10, sd = 3)
# Prueba de comparación de varianzas F
resultado_fisher <- var.test(datos_grupo1, datos_grupo2)
resultado_fisher
##
## F test to compare two variances
##
## data: datos_grupo1 and datos_grupo2
## F = 0.67172, num df = 29, denom df = 24, p-value = 0.3052
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 0.3029267 1.4468945
## sample estimates:
## ratio of variances
## 0.6717226
# Gráfico de cajas y bigotes
boxplot(list(datos_grupo1, datos_grupo2), col = c("lightblue", "lightpink"), names = c("Grupo 1", "Grupo 2"), main = "Comparación de Varianzas", ylab = "Tiempo de Ejecución")
# Texto explicativo
text(1.5, 15, paste("p-valor =", round(resultado_fisher$p.value, 4)))