Regresión lineal simple

La regresión lineal presenta la relación entre variables numéricas, mÔs expresamente entre una variable dependiente (y) y otra variable predictora (x). Intenta por tanto, predecir el valor de una variable cuantitativa en relación a otra.

La regresión lineal simple asume una solución de ecuación de la recta del tipo

\[y = \beta_{0} + \beta_{1} * x + \epsilon\]

donde \(\beta_{0}\)corresponde al valor de intersección en el eje de la ordenada de la variable dependiente (y), y \(\beta_{1}\) al valor de la pendiente de la línea recta, ambos son valores constantes. Y ϵ es un error estimado dado por la diferencia entre la observación y el valor entregado por el modelo.

R-cuadrado

El R-cuadrado (R-square) o coeficiente de determinación, es una medida que indica qué tan cerca se encuentran los datos de la línea de regresión. Se establece entre 0 y 100%.

Nota: Cuanto mayor sea el R2, mejor serĆ” el ajuste el modelo a los datos.

library(readxl)
ESTATURA <- read_excel("C:/Users/user/Desktop/ESTATURA.xlsx")
View(ESTATURA)
summary(ESTATURA)
##     ESTATURA   
##  Min.   :1.61  
##  1st Qu.:1.65  
##  Median :1.67  
##  Mean   :1.69  
##  3rd Qu.:1.71  
##  Max.   :1.80

Función lm

La función ā€œLinear Modelā€ lm() es la función principal dentro de R para el cĆ”lculo de ajuste de un modelo lineal simple

Raƭz del error cuadrƔtico medio

Esta médida (Root Mean Squared Error RMSE), mide el error de predicción del modelo. Y que corresponde a la diferencia media entre los valores conocidos observados del resultado y el valor predicho por el modelo. El RMSE se calcula como la raíz media((predicho - observado)^2) .

Nota: Cuanto menor sea el RMSE, mejor serĆ” el modelo.

\(RMSE =\sqrt[]{\dfrac{\sum\limits_{i=1}^{N} (yp -yr)^2}{N}}\)

library(mlbench)   
library(tidyverse)
library(corrplot) 
library(plotly)   
library(caret)    
library(caTools)  
library(reshape2)
library(readxl)
DATOS <- read_excel("C:/Users/user/Desktop/DATOS.xlsx")
DATOS %>%
  ggplot(aes(x = PESO, y = ESTATURA)) +
  geom_point()

Normalidad de las variables

par(mfrow = c(1, 2)) 
hist(DATOS$PESO, breaks = 10, main = "", xlab = "PESO",border = "red")
hist(DATOS$ESTATURA, breaks = 10, main = "", xlab = "ESTATURA", border = "blue")

Regresión lineal

Estableciendo la regresión lineal mediante el uso de la función modelo lineal (lm()), el resultado es un objeto con los coeficientes que corresponden a:

-Intercept: el valor que cruza el eje de ordenadas de la variable dependiente (y).

-El valor de la pendiente para la variable predictora (x).

regresion <- lm(DATOS$ESTATURA ~ DATOS$PESO)
regresion
## 
## Call:
## lm(formula = DATOS$ESTATURA ~ DATOS$PESO)
## 
## Coefficients:
## (Intercept)   DATOS$PESO  
##    1.484969     0.002618

¿Qué tan bien se ajusta el modelo?

Para determinar la bondad del ajuste ver el \(R^2\):

summary(regresion)
## 
## Call:
## lm(formula = DATOS$ESTATURA ~ DATOS$PESO)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.089654 -0.021799 -0.007764  0.016527  0.111291 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 1.4849693  0.0632567  23.475  < 2e-16 ***
## DATOS$PESO  0.0026181  0.0008013   3.267  0.00339 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.04444 on 23 degrees of freedom
## Multiple R-squared:  0.317,  Adjusted R-squared:  0.2873 
## F-statistic: 10.68 on 1 and 23 DF,  p-value: 0.003386

Quedando la ecuación:

\(y = 1.4849 + 0.00261 * x\)

R-squared: 0.2873 muy bajo sugiero cambiar la variable dependiente por la independiente de manera perse.

DATOS %>%
  ggplot(aes(x = PESO, y = ESTATURA)) +
  geom_point() +
  geom_abline(slope = coef(regresion)[[2]], 
              intercept = coef(regresion)[[1]], 
              color = 'red') +
  theme_bw()

cor(DATOS)
##           ESTATURA      PESO
## ESTATURA 1.0000000 0.5630364
## PESO     0.5630364 1.0000000
corrplot(round(cor(subset(DATOS)), digits = 3), type = "lower")

Son apenas dos variables

boxplot(DATOS)

boxplot(DATOS$ESTATURA)

boxplot(DATOS$PESO)