####Objetivo. Realizar prediciones con Regresión lineal Simple. Caso de restaurante pizzas y estudiantes
#Se carga la librería
library(ggplot2)
#Se cargan los 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 verde Fórmula de mínimos cuadrados para este caso
y=a+bx y=60+5x
ggplot(data = datos, mapping = aes(poblacion, ventas)) +
geom_point() +
geom_line(aes(poblacion, modelo$fitted.values, color = "blue"))
Predicción 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
Predicción para cuando hay 8 mil estudiantes
x <- 8
prediccion.Y <- a + b * x
prediccion.Y
## (Intercept)
## 100
valornuevo <- data.frame(poblacion=c(25, 30, 28, 20, 15, 10, 8, 14, 40, 50))
prediccion.Y <- predict(object = modelo, newdata = valornuevo)
prediccion.Y
## 1 2 3 4 5 6 7 8 9 10
## 185 210 200 160 135 110 100 130 260 310
Predicción para cuando hay 14 mil estudiantes
x <- 14
prediccion.Y <- a + b * x
prediccion.Y
## (Intercept)
## 130
valornuevo <- data.frame(poblacion=c(25, 30, 28, 20, 15, 10, 8, 14, 40, 50))
prediccion.Y <- predict(object = modelo, newdata = valornuevo)
prediccion.Y
## 1 2 3 4 5 6 7 8 9 10
## 185 210 200 160 135 110 100 130 260 310
Predicción para cuando hay 20 mil estudiantes
x <- 20
prediccion.Y <- a + b * x
prediccion.Y
## (Intercept)
## 160
valornuevo <- data.frame(poblacion=c(25, 30, 28, 20, 15, 10, 8, 14, 40, 50))
prediccion <- predict(object = modelo, newdata = valornuevo)
prediccion
## 1 2 3 4 5 6 7 8 9 10
## 185 210 200 160 135 110 100 130 260 310
Predicción para cuando hay 30 mil estudiantes
x <- 30
prediccion.Y <- a + b * x
prediccion.Y
## (Intercept)
## 210
valornuevo <- data.frame(poblacion=c(25, 30, 28, 20, 15, 10, 8, 14, 40, 50))
prediccion.Y <- predict(object = modelo, newdata = valornuevo)
prediccion.Y
## 1 2 3 4 5 6 7 8 9 10
## 185 210 200 160 135 110 100 130 260 310
Predicción para cuando hay 28 mil estudiantes
x <- 28
prediccion.Y <- a + b * x
prediccion.Y
## (Intercept)
## 200
valornuevo <- data.frame(poblacion=c(25, 30, 28, 20, 15, 10, 8, 14, 40, 50))
prediccion.Y <- predict(object = modelo, newdata = valornuevo)
prediccion.Y
## 1 2 3 4 5 6 7 8 9 10
## 185 210 200 160 135 110 100 130 260 310
Predicción para cuando hay 40 mil estudiantes
x <- 40
prediccion.Y <- a + b * x
prediccion.Y
## (Intercept)
## 260
valornuevo <- data.frame(poblacion=c(25, 30, 28, 20, 15, 10, 8, 14, 40, 50))
prediccion.Y <- predict(object = modelo, newdata = valornuevo)
prediccion.Y
## 1 2 3 4 5 6 7 8 9 10
## 185 210 200 160 135 110 100 130 260 310
Predicción para cuando hay 50 mil estudiantes
x <- 50
prediccion.Y <- a + b * x
prediccion.Y
## (Intercept)
## 310
valornuevo <- data.frame(poblacion=c(25, 30, 28, 20, 15, 10, 8, 14, 40, 50))
prediccion.Y <- predict(object = modelo, newdata = valornuevo)
prediccion.Y
## 1 2 3 4 5 6 7 8 9 10
## 185 210 200 160 135 110 100 130 260 310