1 Objetivo

Construir un modelo de regresón lineal simple con datos de dos variables y predecir un valor con el modelo.

2 Descripción

3 Desarrollo

3.1 Cargar librerías

library(readr)
library(dplyr)
library(knitr)
library(ggplot2)

3.2 Cargar datos

datos <- read.csv("https://raw.githubusercontent.com/rpizarrog/Analisis-Inteligente-de-datos/main/datos/datos%20para%20regresion%20diez%20datos.csv")

3.3 Explorar datos

Los datos

kable(datos, caption = "Los datos")
Los datos
x y
10 15
11 16
13 18
15 19
13 17
12 16
10 16
11 17
15 20
10 16

Media de x y media de y

summary(datos)
##        x               y        
##  Min.   :10.00   Min.   :15.00  
##  1st Qu.:10.25   1st Qu.:16.00  
##  Median :11.50   Median :16.50  
##  Mean   :12.00   Mean   :17.00  
##  3rd Qu.:13.00   3rd Qu.:17.75  
##  Max.   :15.00   Max.   :20.00

3.4 Correlación entre las variables

round(cor(datos),2)
##      x    y
## x 1.00 0.91
## y 0.91 1.00

3.5 Regresión lineal simple

3.5.1 Dispersión de los datos

ggplot(data = datos) +
  geom_point(aes(x = x, y = y), col='blue')

3.5.2 Fórmula de mínimos cuadrados

\[ Y = a + b \cdot x \]

Construye una tabla para determinar a y b, se manda llamar función previamente codificada para este fin.

source("https://raw.githubusercontent.com/rpizarrog/Analisis-Inteligente-de-datos/main/funciones/misfunciones.R")

Llamar la función que genera tabla para totales y determinar a y b manualmente

tabla <- f_tabla.rls(datos)
kable(tabla, caption = "Tabla para coeficiene a y b en Correlación Lineal Simple")
Tabla para coeficiene a y b en Correlación Lineal Simple
x y media.x media.y x.menos.media.x y.menos.media.y x.menos.media.x.por.y.menos.media.y x.menos.media.x.cuad
10 15 12 17 -2 -2 4 4
11 16 12 17 -1 -1 1 1
13 18 12 17 1 1 1 1
15 19 12 17 3 2 6 9
13 17 12 17 1 0 0 1
12 16 12 17 0 -1 0 0
10 16 12 17 -2 -1 2 4
11 17 12 17 -1 0 0 1
15 20 12 17 3 3 9 9
10 16 12 17 -2 -1 2 4
120 170 120 170 0 0 25 34

Manda llamar función para obtener coeficientes a partir de la tabla

coeficientes <- f.coef.a.b(tabla)
coeficientes
## [1] 8.1764706 0.7352941

3.5.3 Construir el modelo usando función lm()

modelo <- lm(formula = y ~ x, data = datos)
modelo
## 
## Call:
## lm(formula = y ~ x, data = datos)
## 
## Coefficients:
## (Intercept)            x  
##      8.1765       0.7353

3.5.4 Dispersión con linea de tendencia

ggplot(data = datos) +
  geom_point(aes(x = x, y = y), col='blue') +
  geom_line(aes(x = x, y = modelo$fitted.values), col='red')

3.5.5 Predicciones

3.5.5.1 Predicciones usando la fórmula de mínimos cuadrados.

Significa que para un nuevo valor de x el valor de la predicción será \(Y = a + b \cdot x\).

x <- 15
a <- modelo$coefficients[1]
b <- modelo$coefficients[2]
Y_pred1 <- a + b * x
paste("La predicción para un valor de x = ", x,  " es: ", round(Y_pred1, 4))
## [1] "La predicción para un valor de x =  15  es:  19.2059"

3.5.5.2 Predicciones usando la función predict().

Con varios valores

x <- c(15, 16, 17)
Y.pred2 <- predict(object = modelo, newdata = data.frame(x = x))
paste("Las predicciones para 15, 16 y 17 respectivamente son: ")
## [1] "Las predicciones para 15, 16 y 17 respectivamente son: "
paste(round(Y.pred2, 4), sep = ", ")
## [1] "19.2059" "19.9412" "20.6765"

4 Interpretación

Pendiente …