Práctica 8. Regresión Lineal Simple

Introducción

En la práctica anterior, aprendimos a medir la fuerza y dirección de la relación entre dos variables numéricas con la correlación. Confirmamos que existe una fuerte asociación positiva entre el peso de un caballo y su alzada a la cruz. Ahora, daremos el paso más importante: en lugar de solo medir esa relación, vamos a modelarla.

La regresión lineal simple nos permite crear una ecuación matemática (una línea recta) que describe cómo una variable (la variable dependiente, Y) cambia en respuesta a otra (la variable independiente o predictora, X). El objetivo final de la regresión no es solo describir, sino predecir: si conocemos el peso de un nuevo caballo, ¿podríamos predecir su alzada a la cruz con un grado razonable de certeza?

Objetivo

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

Comprender los componentes de un modelo de regresión lineal simple: la ordenada al origen (intercepto) y la pendiente (slope). Ajustar (o “entrenar”) un modelo de regresión lineal simple en R usando la función lm(). Interpretar la salida del modelo, enfocándote en los coeficientes, sus p-valor y el coeficiente de determinación (R²). Usar la ecuación del modelo para hacer predicciones manuales. Utilizar la función predict() de R para hacer predicciones de manera automática.

Desarrollo de la Práctica

Marco Conceptual

A. La Ecuación de la Línea Recta El objetivo de la regresión lineal simple es encontrar la línea que mejor se ajusta a nuestros datos. Esta línea se describe con la ecuación:

Y = β₀ + β₁X + ε

Y: La variable dependiente (la que queremos predecir). En nuestro caso, Cruz_cm. X: La variable independiente o predictora (la que usamos para predecir). En nuestro caso, Peso_Kg. β₀ (Beta-cero): La ordenada al origen o intercepto. Es el valor predicho de Y cuando X es igual a 0. Gráficamente, es el punto donde la línea cruza el eje vertical (Y). β₁ (Beta-uno): La pendiente o slope. Este es el coeficiente más importante. Nos dice cuánto cambia Y (en promedio) por cada aumento de una unidad en X. Si β₁ es 2, significa que por cada kg extra de peso, la alzada a la cruz aumenta en promedio 2 cm. ε (Epsilon): El término de error o residuo. Representa la parte de Y que nuestro modelo no puede explicar. Es la distancia vertical entre un punto de dato real y la línea de regresión. El objetivo es encontrar la línea que hace estos errores lo más pequeños posible (usando el método de “mínimos cuadrados”). B. Evaluación del Modelo: El R-cuadrado (R²) Una vez que tenemos nuestro modelo, necesitamos saber qué tan bueno es. El coeficiente de determinación (R²) nos lo dice.

R²: Representa el porcentaje de la variabilidad de la variable dependiente (Y) que es explicado por nuestro modelo (es decir, por la variable independiente X). El R² va de 0 a 1 (o de 0% a 100%). Un R² de 0.93 significa que el 93% de la variación en la alzada a la cruz de los caballos puede ser explicada por su peso. Un R² de 0.10 significaría que el peso explica muy poco sobre la alzada. C. Prueba de Hipótesis para la Pendiente (β₁) Necesitamos saber si nuestra variable predictora (X) es realmente útil. Para ello, hacemos una prueba de hipótesis sobre su pendiente (β₁).

Hipótesis Nula (H₀): La pendiente es cero (β₁ = 0). Esto significaría que X no tiene un efecto lineal sobre Y. La línea es horizontal. Hipótesis Alternativa (H₁): La pendiente no es cero (β₁ ≠ 0). X sí tiene un efecto lineal significativo sobre Y. Decisión: Si el p-valor asociado a β₁ es menor que 0.05, rechazamos H₀ y concluimos que la variable predictora es estadísticamente significativa.

Paso 1: Preparación de Datos y Ajuste del Modelo

Pregunta de investigación: ¿Podemos crear un modelo para predecir la alzada a la cruz de un caballo basándonos en su peso?

Usaremos los mismos datos de la práctica anterior.

#CREACIÓN DE LOS DATOS
Peso_Kg <- c(550, 565, 540, 580, 530, 555, 520, 560, 545, 590, 535, 550)
Cruz_cm <- c(165, 170, 163, 175, 160, 168, 158, 172, 164, 178, 161, 166)

#Ahora, ajustamos nuestro modelo lineal usando la función lm() (linear model).

#AJUSTE DEL MODELO DE REGRESIÓN LINEAL
#La fórmula Cruz_cm ~ Peso_Kg se lee como "predecir Cruz_cm usando Peso_Kg".
modelo <- lm(Cruz_cm ~ Peso_Kg)

#OBTENER UN RESUMEN COMPLETO DEL MODELO
summary(modelo)

Paso 2. Interpretación de los Resultados (summary(modelo))

La salida de summary() nos da toda la información que necesitamos.

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 45.89069 10.51833 4.363 0.00132 **
Peso_Kg 0.21481 0.01913 11.230 8.19e-07 ***

Multiple R-squared: 0.9283, Adjusted R-squared: 0.9211

Interpretación de los Coeficientes:

Ordenada al origen (Intercept): El Estimate es 45.89. Este es nuestro β₀. Teóricamente, un caballo de 0 kg tendría una alzada de 45.89 cm (en este caso, el intercepto no tiene una interpretación práctica, pero es matemáticamente necesario).

Pendiente (Peso_Kg): El Estimate es 0.2148. Este es nuestro β₁. Esta es la interpretación clave: “Por cada kilogramo adicional de peso, la alzada a la cruz aumenta en promedio 0.2148 cm”.

Ecuación del Modelo: Cruz_cm = 45.89 + 0.2148 * Peso_Kg

Interpretación de las Pruebas de Hipótesis:

El p-valor (Pr(>|t|)) para Peso_Kg es 8.19e-07, un número extremadamente pequeño.

Como es < 0.05, concluimos que la pendiente es estadísticamente significativa. La variable Peso_Kg es un predictor útil.

Interpretación del R-cuadrado:

Multiple R-squared: 0.9283.

Esto significa que el 92.83% de la variabilidad en la alzada a la cruz puede ser explicada por el peso del caballo. Este es un modelo muy bueno y con un alto poder predictivo.

Paso 3: Realizando Predicciones

Ahora que tenemos nuestra ecuación, podemos usarla para predecir.

Pregunta: ¿Cuál sería la alzada a la cruz predicha para un caballo que pesa 570 kg?

#PREDICCIÓN MANUAL USANDO LA ECUACIÓN

Cruz_cm = 45.89069 + 0.21481 * Peso_Kg
prediccion_manual <- 45.89069 + (0.21481 * 570)
cat("Predicción manual:", prediccion_manual, "cm\n")

#PREDICCIÓN AUTOMÁTICA USANDO predict()
#Creamos un 'data frame' con el nuevo valor de la variable predictora.

nuevos_datos <- data.frame(Peso_Kg = 570)
prediccion_automatica <- predict(modelo, newdata = nuevos_datos)
cat("Predicción automática:", prediccion_automatica, "cm\n")

#También podemos predecir para varios caballos a la vez

nuevos_caballos <- data.frame(Peso_Kg = c(532, 570, 585))
predict(modelo, newdata = nuevos_caballos)

Cuestionario:

Pregunta 1: Escribe e interpreta con tus propias palabras la ecuación final de nuestro modelo de regresión. ¿Qué significa el número 0.21481 en un sentido práctico?

Pregunta 2: Si un modelo de regresión para predecir la nota de un examen a partir de las horas de estudio tiene un R² de 0.65, ¿qué significa ese valor?

Pregunta 3: En la salida de summary(modelo), ¿qué valor te dice si tu variable predictora es estadísticamente útil? ¿Qué conclusión sacarías si ese valor fuera 0.50?

Pregunta 4: Usando la ecuación del modelo, calcula manualmente la alzada a la cruz predicha para un caballo que pesa 500 kg.

Pregunta 5: ¿Cuál es la diferencia fundamental entre el coeficiente de correlación (r) que calculamos en la práctica anterior y el coeficiente de la pendiente (β₁) que calculamos en esta?

“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.