Práctica 5. Fundamentos de Probabilidad en R

Introducción

Hasta ahora, nos hemos centrado en la estadística descriptiva: resumir y visualizar datos que ya tenemos. Ahora, damos un paso fundamental hacia la estadística inferencial, que nos permite usar una muestra para hacer generalizaciones (inferencias) sobre una población más grande. El puente que conecta la muestra con la población es la probabilidad.

En esta práctica, exploraremos tres pilares de la probabilidad aplicada:

Tablas de contingencia: Para entender la relación y las probabilidades entre dos variables categóricas. Distribución Normal: El modelo más importante para variables continuas (como el peso o la longitud). Distribución Binomial: Un modelo clave para variables discretas basadas en “éxitos” y “fracasos” (como sano/enfermo o macho/hembra).

Objetivo

Al finalizar esta práctica, serás capaz de:

Construir e interpretar una tabla de contingencia para calcular probabilidades conjuntas, marginales y condicionales. Comprender los conceptos de la distribución de probabilidad Normal y Binomial. Calcular probabilidades y cuantiles (percentiles) para datos que siguen una distribución Normal. Calcular la probabilidad de un número específico de “éxitos” en una serie de ensayos usando la distribución Binomial. Visualizar estas distribuciones de probabilidad en R.

Desarrollo de la Práctica

Paso 1: Preparación del Entorno

Comenzaremos instalando y cargando los paquetes necesarios para esta práctica e importando un nuevo conjunto de datos.

 #INSTALAR PAQUETES (si no están instalados)
install.packages("gmodels") # Para tablas de contingencia detalladas
install.packages("readxl") # Para leer archivos de Excel
install.packages("dplyr") # Para manipulación de datos
#CARGAR LIBRERÍAS
library(gmodels)
library(readxl)
library(dplyr)

Paso 2: Importar la base de datos

¡RECUERDA MODIFICAR ESTA RUTA con la ubicación de tu archivo!

ruta_archivo <- "C:/Users/alumno/Desktop/EstLab/P5/Razas.xls"
datos <- read_excel(ruta_archivo)

#EXPLORAR LOS DATOS
head(datos) # Ver las primeras filas
str(datos) # Ver la estructura

Recodificando Variables: A menudo, los datos vienen codificados con números (1 para “macho”, 2 para “hembra”). Para que nuestras tablas y gráficos sean más legibles, los “recodificamos” a etiquetas de texto usando dplyr.

#El operador %>% (pipe) pasa el resultado de una función a la siguiente.
datos <- datos %>% 
  mutate(sexo = recode(sexo, 1 = "macho", 2 = "hembra"))

datos <- datos %>% 
  mutate(color = recode(color, 1 = "amarillo", 2 = "negro", 3 = "café", 4 = "varios colores", 5 = 
                                           "blanco"))
#Verificamos que los cambios se aplicaron
head(datos)

Paso 3. Tablas de Contingencia y Probabilidades

Una tabla de contingencia nos muestra la frecuencia de dos variables categóricas al mismo tiempo. A partir de ella, podemos calcular todo tipo de probabilidades.

Usamos la función CrossTable del paquete ‘gmodels’ para crear una tabla detallada que incluye frecuencias, proporciones y totales. Analizaremos la relación entre ‘color’ y ‘sexo’.

tabla_completa <- CrossTable(datoscolor,datossexo, prop.chisq = FALSE)

¿Cómo leer la CrossTable? Cada celda contiene 4 números:

N: La frecuencia absoluta (conteo). N / Row-Total: Probabilidad Condicional por Fila (Ej: P(macho | color=amarillo)). N / Col-Total: Probabilidad Condicional por Columna (Ej: P(color=amarillo | sexo=macho)). N / Table-Total: Probabilidad Conjunta (Ej: P(color=amarillo Y sexo=macho)). Probabilidad Marginal: Se encuentra en los totales (Row Totals y Column Totals). Por ejemplo, para saber la P(macho), mira el total de la columna “macho”. Probabilidad Conjunta: Es el cuarto valor en cada celda. La probabilidad de que dos eventos ocurran a la vez. Probabilidad Condicional: Es el segundo o tercer valor. La probabilidad de un evento dado que otro ya ocurrió.

Paso 4: La Distribución de Probabilidad Normal

Es el modelo más famoso para variables continuas. Tiene forma de campana y está definida por su media (μ) y su desviación estándar (σ).

Ejemplo: La longitud de caimanes en una granja sigue una distribución normal con media = 2.11 m y desviación estándar = 0.72 m.

En R, usamos principalmente dos funciones:

pnorm(): P de probabilidad. Calcula la probabilidad acumulada hasta un valor (el área a la izquierda de la curva). qnorm(): Q de cuantil. Hace lo inverso: le das una probabilidad (un percentil) y te devuelve el valor correspondiente.

#Parámetros del ejemplo
media <- 2.11
desv_est <- 0.72

#a) ¿Cuál es la probabilidad de que un caimán mida MENOS de 2.5 m?
prob_menor_2.5 <- pnorm(2.5, mean = media, sd = desv_est)
cat("P(X <= 2.5) =", round(prob_menor_2.5, 4), "\n")

#b) ¿Cuál es la probabilidad de que un caimán mida MÁS de 3.52 m?
pnorm da el área a la izquierda, así que usamos 1 - pnorm()
prob_mayor_3.52 <- 1 - pnorm(3.52, mean = media, sd = desv_est)
cat("P(X > 3.52) =", round(prob_mayor_3.52, 4), "\n")

#c) ¿Qué longitud corresponde al percentil 95 (el 95% de los caimanes mide menos que esto)?
longitud_p95 <- qnorm(0.95, mean = media, sd = desv_est)
cat("El valor que deja al 95% de los datos por debajo es:", round(longitud_p95, 2), "m\n")

#d) GRAFICAR P(X <= 2.5)
x <- seq(media - 4desv_est, media + 4desv_est, length=1000)
y <- dnorm(x, mean = media, sd = desv_est)
plot(x, y, type = "l", col = "blue", main = "Distribución de Longitud de Caimanes", ylab = "Densidad")
x_sombra <- seq(min(x), 2.5, length=500)
y_sombra <- dnorm(x_sombra, mean=media, sd=desv_est)
polygon(c(min(x), x_sombra, 2.5), c(0, y_sombra, 0), col="lightblue")
text(1, 0.1, paste("Área =", round(prob_menor_2.5, 4)), pos=4)

Paso 5: La Distribución de Probabilidad Binomial

Este es el modelo para variables discretas que provienen de ensayos con solo dos resultados posibles: “éxito” o “fracaso”.

Ejemplo: Una cerda pare 14 lechones. La probabilidad de que nazca una hembra (“éxito”) es de 0.5.

Parámetros:

n (size): Número total de ensayos (14 lechones). p (prob): Probabilidad de éxito en un ensayo (0.5). x: Número de éxitos que nos interesa. Funciones en R:

dbinom(): D de densidad. Calcula la probabilidad de tener exactamente x éxitos. pbinom(): P de probabilidad. Calcula la probabilidad de tener x éxitos o menos.

#Parámetros del ejemplo
n <- 14
p <- 0.5

#a) ¿Cuál es la probabilidad de que nazcan EXACTAMENTE 10 hembras?
prob_exact_10 <- dbinom(x = 10, size = n, prob = p)
cat("P(X = 10) =", round(prob_exact_10, 4), "\n")

#b) ¿Cuál es la probabilidad de que nazcan A LO MÁS 9 hembras (9 o menos)?
prob_max_9 <- pbinom(q = 9, size = n, prob = p)
cat("P(X <= 9) =", round(prob_max_9, 4), "\n")

#c) ¿Cuál es la probabilidad de que nazcan AL MENOS 6 hembras (6 o más)?
pbinom(5) da P(X <= 5). El resto es P(X >= 6).
prob_min_6 <- 1 - pbinom(q = 5, size = n, prob = p)
cat("P(X >= 6) =", round(prob_min_6, 4), "\n")

#d) GRAFICAR la distribución
x_vals <- 0:n
y_vals <- dbinom(x_vals, size = n, prob = p)
barplot(y_vals, names.arg = x_vals, main = "Distribución Binomial de Lechones Hembra",
xlab = "Número de Hembras (Éxitos)", ylab = "Probabilidad", col = "skyblue")

Cuestionario:

Pregunta 1: Tablas de Contingencia: Usando la CrossTable generada, encuentra la probabilidad marginal de que un animal sea de color “negro” y la probabilidad conjunta de que sea “hembra” Y “café”.

Pregunta 2: Probabilidad Condicional: ¿Cuál es la probabilidad de que un animal sea “macho”, dado que ya sabemos que su color es “amarillo”? ¿Qué valor de la celda (“amarillo”, “macho”) representa esta probabilidad?

Pregunta 3: Distribución Normal: Explica con tus palabras la diferencia entre lo que calculan las funciones pnorm() y qnorm().

Pregunta 4: Distribución Binomial: Si en el ejemplo de los lechones, la probabilidad de que nazca una hembra fuera de 0.8 (un “éxito” mucho más probable), ¿hacia dónde se movería el centro de la gráfica de barras (el pico más alto)? ¿Hacia la izquierda (valores bajos) o hacia la derecha (valores altos)? ¿Por qué?

Pregunta 5: Aplicación: Tu colega te dice que el tiempo de recuperación de una cirugía sigue una distribución normal. ¿Qué dos datos (parámetros) necesitarías pedirle para poder calcular la probabilidad de que un animal se recupere en menos de 5 días?

“PROYECTO PAPIME PE215125 DESARROLLO DE MATERIAL DE PRÁCTICAS Y APOYO AUDIOVISUAL PARA LA ASIGNATURA DE MÉTODOS ESTADÍSTICOS EN MEDICINA VETERINARIA Y ZOOTECNIA”

Los autores y participantes agradecen al Programa de Apoyo a Proyectos para Innovar y Mejorar la Educación (PAPIME) de la Universidad Nacional Autónoma de México, por el apoyo brindado, el cual fue fundamental para el éxito de este proyecto. Así como a la Facultad de Medicina Veterinaria y Zootecnia y al Departamento de Genética y Bioestadística.

Héctor Alexander Camarena Ledesma, Jessica González Perea, Ángel Moisés Rentería López, Marco Antonio Alvarado Salas, Argelia Ximena Hernández Recio, Carlos Leonardo Pérez Cuenca, Fabiola Asunción Flores Figueroa, Braulio Herrera Ramírez, Areli Maldonado Fernández, Arenas Escamilla Daniel, Pineda Alatriste Saúl, Rogers Montoya Nathaniel Alec, Noé Orlando Juárez López, Daniel Alonso Domínguez Olvera.