library(mosaic)
library(palmerpenguins)
datos_male <- penguins %>%
filter(species == "Gentoo", sex == "male") %>%
select(flipper_length_mm, body_mass_g) %>%
na.omit()Pinguinos
1. Introducción y Planteamiento del Problema
En este reporte utilizaremos el conjunto de datos disponible en R, penguins este contiene información sobre las características corporales de 344 pingüinos de 3 especies(Adelie, Gentoo y Chinstrap). En este trabajo solo trabajaremos con la muestra de la especie de pingüinos Gento del genero machos.
Nuestro objetivo es analizar cómo influye la masa corporal en gramos de los pingüinos (\(X\) = body_mass_g) sobre la longitud de las aletas en milimetros (\(Y\) = flipper_length_mm).
| Gentoo | Male | Female |
|---|---|---|
| 123 | 61 | 62 |
2. Análisis Exploratorio de Datos
Se cargan las librerías necesarias para el análisis y se importa la base de datos penguins.
Código
library(mosaic)
library(palmerpenguins)
favstats(~ flipper_length_mm , data = datos_male) min Q1 median Q3 max mean sd n missing
208 218 221 225 231 221.541 5.673252 61 0
favstats(~ body_mass_g, data = datos_male) min Q1 median Q3 max mean sd n missing
4750 5300 5500 5700 6300 5484.836 313.1586 61 0
Las longitudes de las aletas (mm) tienen una media de 221.541 y una mediana de 221, lo que indica una leve distribución sesgada a la derecha o tiende a no tener sesgo. Las longitudes van de 208 a 231 mm.
Gráfico de dispersión
Visualizamos la relación entre ambas variables para comprobar si una tendencia lineal es adecuada.
Código
library(mosaic)
library(palmerpenguins)
library(ggplot2)
ggplot(datos_male, aes(x = body_mass_g, y = flipper_length_mm)) +
geom_point(color = "#16a085", size = 3, alpha = 0.8) +
geom_smooth(method = "lm", se = TRUE, color = "#2c3e50", fill = "#16a085", alpha = 0.2) +
labs(
title = "Relación entre la masa corporal y la longitud de las aletas",
subtitle = "Dataset penguins",
x = "Masa corporal de pingüinos Gentoo machos (Gramos - g)",
y = "Longitud de las aletas (Milímetros - mm)"
) +
theme_minimal()Se observa una tendencia lineal positiva: a medida que la masa corporal aumenta, la longitud de las aletas aumenta de forma aproximadamente lineal. No obstante los puntos muestran una dispersión considerable alrededor de la recta de regresión.
3. Ajuste del Modelo de Regresión Lineal Simple
El modelo matemático poblacional se define como:
\[y_i= \beta_0+\beta_1x_i+\varepsilon_i\]
Donde:
\(Y_i\) son las longitudes de las aletas (flipper_length_mm)
\(X_i\) es la masa corporal (body_mass_g)
\(\beta_0\) es el intercepto (la longitud de la aleta estimada cuando la masa corporal es 0).
\(\beta_1\) es la pendiente (el incremento de la longitud de la aleta cuando aumenta la masa corporal).
\(\varepsilon_1\) es el término de error aleatorio
Estimación de los coeficientes
Ajustamos el modelo en R utilizando la función lm( ):
Código
library(mosaic)
library(palmerpenguins)
library(lmtest)
modelo <- lm(flipper_length_mm ~ body_mass_g, data = datos_male)
summary(modelo)
Call:
lm(formula = flipper_length_mm ~ body_mass_g, data = datos_male)
Residuals:
Min 1Q Median 3Q Max
-12.7338 -4.2371 0.0689 4.8649 8.4703
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.887e+02 1.223e+01 15.431 < 2e-16 ***
body_mass_g 5.987e-03 2.226e-03 2.689 0.00929 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 5.4 on 59 degrees of freedom
Multiple R-squared: 0.1092, Adjusted R-squared: 0.0941
F-statistic: 7.232 on 1 and 59 DF, p-value: 0.009294
Interpretación de los parámetros
Intercepto (\(\hat{\beta}_0\)): 188.7 representa la longitud de las aletas estimada por el modelo cuando la masa corporal es de cero gramos.
Pendiente (\(\hat{\beta}_1\)): 0.005987 Indica que, por cada gramo adicional de masa corporal, la longitud de las aletas aumenta en promedio aproximadamente 0.005987 milímetros.
4. Diagnóstico del Modelo
Para validar que las inferencias estadísticas del modelo sean confiables, debemos evaluar los supuestos sobre los residuos (εi): normalidad, homocedasticidad (varianza constante) e independencia.
Gráficos de Diagnóstico Estándar
Código
library(mosaic)
library(palmerpenguins)
library(ggplot2)
library(lmtest)
par(mfrow = c(2, 2))
plot(modelo)Análisis detallado de los supuestos:
Independencia (Residuals vs Fitted): En el primer gráfico, los puntos se distribuyen de manera aleaotoria alrededor de la línea central. Sin embargo, la línea roja presenta una ligera curvatura, lo que podría indicar una pequeña desviación de la linealidad del modelo.
Normalidad de los errores (Q-Q Residuals): En el gráfico Normal Q-Q, la mayoría de puntos sigue aproximadamente la tendencia de la línea diagonal, aunque se observan algunas desviaciones en las colas. Esto puede indicar que el supuesto de normalidad de los residuos se cumple casi de forma aceptable.
Homocedasticidad (Scale-Location): En el gráfico los puntos tienen una dispersión vertical similar a lo largo del eje horizontal y la línea roja se mantiene aproximadamente horizontal. Esto sugiere que el supuesto de homocedasticidad parace razonablemente aceptable.
Puntos influyentes (Residuals vs Levarage): El gráfico no muestra puntos que superen las bandas de la distancia de Cook (líneas rojas punteadas que no se pueden percibir en la gráfica), lo que indica que, no hay una sola observación individual que esté alterando o sesgando de forma extrema la pendiente de la regresión por sí sola.
5. Análisis de la variable respuesta
En este apartado se pretende realizar una análisis exploratorio de la variable respuesta (flipper_length_mm), en el cual se realizan diversos gráficos e indicadores para observar el comportamiento y la distribucción de la variable.
Código
library(mosaic)
library(palmerpenguins)
library(ggplot2)
library(lmtest)
grafico_1<-ggplot(data=datos_male)+
geom_histogram(aes(x=body_mass_g),binwidth = 52.5,fill = "#4D6291", color = "black")+
theme(axis.text.x = element_text(size = 10))+
labs(title = "Histograma variable mass_g", x = "body_mass_g", y = "Frecuencia")+
theme(plot.title = element_text(hjust = 0.5))
grafico_1Código
library(kableExtra)
Adjuntando el paquete: 'kableExtra'
The following object is masked from 'package:dplyr':
group_rows
library(mosaic)
kable(data.frame(Cuartiles =quantile(datos_male$body_mass_g,prob=c(0.25,0.5,0.75))),
caption= "Indicadores de posición",aling= "cc") | Cuartiles | |
|---|---|
| 25% | 5300 |
| 50% | 5500 |
| 75% | 5700 |
Código
library(mosaic)
library(palmerpenguins)
library(ggplot2)
library(lmtest)
grafico_2<-ggplot(data=datos_male)+
geom_boxplot(aes(x=body_mass_g), col= "blue", outlier.color = "red")+
labs(title = "Diagrama de cajas - Variable mass_g", x = "body_mass_g", y="Porcentaje")+
theme(plot.title = element_text(hjust = 0.5))
grafico_2Código
| Estadístico | Valor |
|---|---|
| Moda | 215.00 |
| Varianza | 32.19 |
| Desviación Estándar | 5.67 |
| Coeficiente de Variación (%) | 2.56 |
| Curtosis | -0.72 |
integer(0)
6. Supuesto de Normalidad de los residuales
Planteamiento de las Hipótesis
\[H_0=\text{Los residuales del modelo siguen una distribución normal } (\varepsilon_i∼N(0,\sigma^2)).\]
\[H_1=\text{Los residuales no siguen una distribución normal}\]
Lilliefors (Kolmogorov-Smirnov) normality test
data: modelo$residuals
D = 0.087346, p-value = 0.2948
Conclusión
Como el p-valor=0.2948 es mayor que el nivel de significancia α=0.05, no se rechaza la hipótesis nula (H0). Por lo tanto, con un nivel de confianza del 95%, existe suficiente evidencia estadística para afirmar que los residuales del modelo satisfacen el supuesto de normalidad.
7. Supuesto de Homocedasticidad
Planteamiento de las Hipótesis
\[H_0=\text{Los residuales son homocedásticos (la varianza de los errores es constante, )}.\]
\[H_1= \text{Los residuales son heterocedásticos (la varianza de los errores no es constante)}.\]
studentized Breusch-Pagan test
data: modelo
BP = 2.2706, df = 1, p-value = 0.1318
Mediante la prueba de Breusch-Pagan se obtuvo un estadístico χ2=2.2706 con un p-valor=0.1318. Al ser el p-valor>0.05, no existe evidencia estadística para rechazar la hipótesis nula con un nivel de confianza del 95%.
8. Supuesto de Independencia
Planteamiento de las Hipótesis
\[H_0:ρ=0 (\text{Los errores son independientes / No existe autocorrelación en los residuales}).\]
\[H1:ρ\neq0(\text{Existe autocorrelación en los residuales})\]
Durbin-Watson test
data: modelo
DW = 1.3618, p-value = 0.004561
alternative hypothesis: true autocorrelation is greater than 0
Al ejecutar la prueba sobre el modelo ajustado, se obtuvo un estadístico DW=1.3686 con un p-valor=0.004561. Al ser el p-valor≤0.05, se rechaza la hipótesis nula de independencia bajo la ordenación original de los datos.