Introducción

Este documento presenta un análisis de regresión simple utilizando los métodos de mínimos cuadrados ordinarios (Least Squares) en R. El objetivo es explorar la relación entre el ingreso familiar semanal y el consumo familiar semanal utilizando un modelo lineal.

Cargar Librerías Necesarias

library(ggplot2)
library(broom)
library(ggpubr)
## Warning: package 'ggpubr' was built under R version 4.4.1

Definir Datos del Ejercicio

ingreso <- c(80, 100, 120, 140, 160, 180, 200, 220, 240, 260)
consumo <- c(70, 65, 90, 95, 110, 115, 120, 140, 155, 150)
datos <- data.frame(ingreso, consumo)

Gráfica de Dispersión entre Ingreso y Consumo

Para visualizar la relación entre el ingreso y el consumo, se presenta una gráfica de dispersión que también incluye una línea de regresión ajustada.

grafica_dispersion <- ggplot(datos, aes(x = ingreso, y = consumo)) +
  geom_point(color = "blue", size = 3) +
  geom_smooth(method = "lm", se = TRUE, color = "red", linetype = "dashed") +
  labs(title = "Gráfica de Dispersión entre Ingreso y Consumo", 
       x = "Ingreso Familiar Semanal (X)", 
       y = "Consumo Familiar Semanal (Y)") +
  theme_minimal()

print(grafica_dispersion)
## `geom_smooth()` using formula = 'y ~ x'

Ajuste del Modelo de Regresión Lineal

A continuación, ajustamos el modelo de regresión lineal y mostramos un resumen de los resultados.

modelo <- lm(consumo ~ ingreso, data = datos)
summary_modelo <- summary(modelo)
print(summary_modelo)
## 
## Call:
## lm(formula = consumo ~ ingreso, data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -10.364  -4.977   1.409   4.364   8.364 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 24.45455    6.41382   3.813  0.00514 ** 
## ingreso      0.50909    0.03574  14.243 5.75e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6.493 on 8 degrees of freedom
## Multiple R-squared:  0.9621, Adjusted R-squared:  0.9573 
## F-statistic: 202.9 on 1 and 8 DF,  p-value: 5.753e-07

Interpretación de los Resultados

Coeficiente de Determinación (R²)

El coeficiente de determinación (R²) indica qué proporción de la variabilidad en la variable dependiente (consumo) es explicada por la variable independiente (ingreso).

total_r2 <- summary_modelo$r.squared
print(paste("Coeficiente de determinación (R²):", round(total_r2, 4)))
## [1] "Coeficiente de determinación (R²): 0.9621"

Significancia del Modelo

La significancia del modelo se evalúa utilizando el valor F y su p-valor asociado.

f_statistic <- summary_modelo$fstatistic
f_value <- f_statistic[1]
f_pvalue <- pf(f_value, f_statistic[2], f_statistic[3], lower.tail = FALSE)

print(paste("F-Statistic:", round(f_value, 4)))
## [1] "F-Statistic: 202.8679"
print(paste("Prob (F-Statistic):", signif(f_pvalue, 4)))
## [1] "Prob (F-Statistic): 5.753e-07"

Significancia de los Coeficientes

Los coeficientes del modelo, tanto el intercepto como la pendiente, se evalúan para determinar su significancia.

summary_coef <- summary_modelo$coefficients

# Coeficiente C (intercepto)
intercepto <- summary_coef[1, 1]
p_value_intercepto <- summary_coef[1, 4]
print(paste("Intercepto (C):", round(intercepto, 4), "- p-value:", signif(p_value_intercepto, 4)))
## [1] "Intercepto (C): 24.4545 - p-value: 0.005142"
# Coeficiente X (pendiente)
pendiente <- summary_coef[2, 1]
p_value_pendiente <- summary_coef[2, 4]
print(paste("Pendiente (X):", round(pendiente, 4), "- p-value:", signif(p_value_pendiente, 4)))
## [1] "Pendiente (X): 0.5091 - p-value: 5.753e-07"

Evaluación de la Normalidad de los Residuos

Para evaluar la normalidad de los residuos, se presentan un histograma y un QQ-plot.

Histograma de los Residuos

histograma_residuos <- gghistogram(residuals(modelo), 
                                   main = "Histograma de los Residuos", 
                                   xlab = "Residuos", 
                                   fill = "lightblue", 
                                   color = "black", 
                                   add_density = TRUE)
## Warning: Using `bins = 30` by default. Pick better value with the argument
## `bins`.
print(histograma_residuos)

QQ-Plot de los Residuos

qqplot_residuos <- ggqqplot(residuals(modelo), 
                            main = "QQ-Plot de los Residuos", 
                            color = "blue")
print(qqplot_residuos)

Conclusiones del Modelo

La ecuación de regresión obtenida, basada en el análisis, es la siguiente:

print(paste("Ecuación de regresión estimada: Y =", round(intercepto, 4), "+", round(pendiente, 4), "* X"))
## [1] "Ecuación de regresión estimada: Y = 24.4545 + 0.5091 * X"

Comentarios Finales

  • Ecuación de regresión estimada: Y = 24.4545 + 0.5091 * X
  • Esto indica que, por cada incremento de una unidad en el ingreso familiar semanal (X), el consumo familiar semanal (Y) aumenta en aproximadamente 0.5091 unidades.
  • La R² ajustada de 0.9573 sugiere que el 95.73% de la variabilidad del consumo está explicada por el ingreso, lo cual indica un buen ajuste del modelo.
  • La prueba F es altamente significativa (p < 0.05), lo cual sugiere que el modelo en su totalidad es útil para predecir el consumo a partir del ingreso.
  • Además, el coeficiente de la pendiente (X) es significativo, lo que respalda la existencia de una relación positiva entre ingreso y consumo.

Referencias