Objetivo.

Realizar prediciones con Regresión lineal Simple. Caso de restaurante pizzas y estudiantes.

librerias

library(ggplot2)   # Gráficos mas amigables
## Warning: package 'ggplot2' was built under R version 3.6.3

datos

poblacion <- c( 2,   6,  8,  8,  12,  16,  20,   20,  22, 26) 
ventas <-    c(58, 105, 88, 118, 117, 137, 157, 169, 149, 202)

datos <- data.frame(poblacion, ventas)

datos
##    poblacion ventas
## 1          2     58
## 2          6    105
## 3          8     88
## 4          8    118
## 5         12    117
## 6         16    137
## 7         20    157
## 8         20    169
## 9         22    149
## 10        26    202

Visualizar la dispersión de los datos

ggplot(data = datos, mapping = aes(poblacion, ventas)) +
  geom_point()

### Valor de la correlación

cor(datos$poblacion, datos$ventas)
## [1] 0.950123

Encontrar la recta de regresión

  • Usar la función lm()
  • Se crea un model de regresión lineal simple
modelo <- lm(data = datos, formula = ventas ~ poblacion)


summary(modelo)
## 
## Call:
## lm(formula = ventas ~ poblacion, data = datos)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -21.00  -9.75  -3.00  11.25  18.00 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  60.0000     9.2260   6.503 0.000187 ***
## poblacion     5.0000     0.5803   8.617 2.55e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 13.83 on 8 degrees of freedom
## Multiple R-squared:  0.9027, Adjusted R-squared:  0.8906 
## F-statistic: 74.25 on 1 and 8 DF,  p-value: 2.549e-05
a <- modelo$coefficients[1]
b <- modelo$coefficients[2]

Multiple R-squared: 0.9027

  • Igual al valor de la correlación. Raiz de M R-squared
  • Se usa una variable para almacenar summary(modelo) y determinar el valor de r.squared
resumen <- summary(modelo)

sqrt(resumen$r.squared) # 
## [1] 0.950123

Dibujar la linea de tendencia

  • Colo rojo
  • Fórmula de mínimos cuadrados para este caso
ggplot(data = datos, mapping = aes(poblacion, ventas)) +
  geom_point() +
  geom_line(aes(poblacion, modelo$fitted.values, color = "red"))

### Predecir para cuando hay 25 mil estudiantes

Primero mediante fórmula

x <- 25

prediccion.Y <- a + b * x 

prediccion.Y
## (Intercept) 
##         185
  • Segundo mediante la función predict()
  • Varias predicciones
valornuevo <- data.frame(poblacion=c(25, 30, 28, 15, 10))
prediccion.Y <- predict(object = modelo, newdata =  valornuevo)
prediccion.Y
##   1   2   3   4   5 
## 185 210 200 135 110

8 mil estudiantes

x <- 8

prediccion.Y <- a + b * x 

prediccion.Y
## (Intercept) 
##         100

14 mil estudiantes

x <- 14

prediccion.Y <- a + b * x 

prediccion.Y
## (Intercept) 
##         130

20 mil estudiantes

x <- 20

prediccion.Y <- a + b * x 

prediccion.Y
## (Intercept) 
##         160

30 mil estudiantes

x <- 30

prediccion.Y <- a + b * x 

prediccion.Y
## (Intercept) 
##         210

28 mil estudiantes

x <- 28

prediccion.Y <- a + b * x 

prediccion.Y
## (Intercept) 
##         200

40 mil estudiantes

x <- 40

prediccion.Y <- a + b * x 

prediccion.Y
## (Intercept) 
##         260

50 mil estudiantes

x <- 50

prediccion.Y <- a + b * x 

prediccion.Y
## (Intercept) 
##         310

CONCLUSION

La Regresión Lineal es una técnica paramétrica utilizada para predecir variables continuas, dependientes, dado un conjunto de variables independientes. Es de naturaleza paramétrica porque hace ciertas suposiciones basadas en el conjunto de datos. Si el conjunto de datos sigue esas suposiciones, la regresión arroja resultados increíbles, de lo contrario, tiene dificultades para proporcionar una precisión convincente.