Objetivo. Realizar predicciones con regresion lineal simple. caso de restaurante pizzas y estudiantes. Ventas de
Librerias
library(ggplot2)
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 dispersion de los datos
ggplot(data=datos, mapping = aes(poblacion, ventas))+ geom_point()

Valor de la correlacion
cor(datos$poblacion, datos$ventas)
## [1] 0.950123
- +0.90 = Correlacion positiva muy fuerte
Encontrar la recta de regresion
- Usar la funcion lm()
- Se crea un modelo de regresion lineal.
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 correlacion. 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
- Color rojo
- Formula de minimos cuadrados para este caso \[y=a+bx\] \[y=60+5x\]
ggplot(datos = datos, mapping = aes(poblacion, ventas))+ geom_point() + geom_line(aes(poblacion, modelo$fitted.values, color="red"))

predecir cuando hay 25 mil estudiantes
x <- 25
prediccion.Y <- a+b*x
prediccion.Y
## (Intercept)
## 185
- Segundo mediante la funcion 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
predecir cuando hay 8 mil estudiantes
x <- 8
prediccion.Y <- a+b*x
prediccion.Y
## (Intercept)
## 100
- Segundo mediante la funcion predict()
- Varias predicciones
valornuevo <- data.frame(poblacion=c(8, 14, 20, 30, 28, 40, 50))
prediccion.Y <- predict(object = modelo, newdata = valornuevo)
prediccion.Y
## 1 2 3 4 5 6 7
## 100 130 160 210 200 260 310
predecir cuando hay 14 mil estudiantes
x <- 14
prediccion.Y <- a+b*x
prediccion.Y
## (Intercept)
## 130
- Segundo mediante la funcion predict()
- Varias predicciones
valornuevo <- data.frame(poblacion=c(8, 14, 20, 30, 28, 40, 50))
prediccion.Y <- predict(object = modelo, newdata = valornuevo)
prediccion.Y
## 1 2 3 4 5 6 7
## 100 130 160 210 200 260 310
predecir cuando hay 20 mil estudiantes
x <- 20
prediccion.Y <- a+b*x
prediccion.Y
## (Intercept)
## 160
- Segundo mediante la funcion predict()
- Varias predicciones
valornuevo <- data.frame(poblacion=c(8, 14, 20, 30, 28, 40, 50))
prediccion.Y <- predict(object = modelo, newdata = valornuevo)
prediccion.Y
## 1 2 3 4 5 6 7
## 100 130 160 210 200 260 310
predecir cuando hay 30 mil estudiantes
x <- 30
prediccion.Y <- a+b*x
prediccion.Y
## (Intercept)
## 210
- Segundo mediante la funcion predict()
- Varias predicciones
valornuevo <- data.frame(poblacion=c(8, 14, 20, 30, 28, 40, 50))
prediccion.Y <- predict(object = modelo, newdata = valornuevo)
prediccion.Y
## 1 2 3 4 5 6 7
## 100 130 160 210 200 260 310
predecir cuando hay 28 mil estudiantes
x <- 28
prediccion.Y <- a+b*x
prediccion.Y
## (Intercept)
## 200
- Segundo mediante la funcion predict()
- Varias predicciones
valornuevo <- data.frame(poblacion=c(8, 14, 20, 30, 28, 40, 50))
prediccion.Y <- predict(object = modelo, newdata = valornuevo)
prediccion.Y
## 1 2 3 4 5 6 7
## 100 130 160 210 200 260 310
predecir cuando hay 40 mil estudiantes
x <- 40
prediccion.Y <- a+b*x
prediccion.Y
## (Intercept)
## 260
- Segundo mediante la funcion predict()
- Varias predicciones
valornuevo <- data.frame(poblacion=c(8, 14, 20, 30, 28, 40, 50))
prediccion.Y <- predict(object = modelo, newdata = valornuevo)
prediccion.Y
## 1 2 3 4 5 6 7
## 100 130 160 210 200 260 310
predecir cuando hay 50 mil estudiantes
x <- 50
prediccion.Y <- a+b*x
prediccion.Y
## (Intercept)
## 310
- Segundo mediante la funcion predict()
- Varias predicciones
valornuevo <- data.frame(poblacion=c(8, 14, 20, 30, 28, 40, 50))
prediccion.Y <- predict(object = modelo, newdata = valornuevo)
prediccion.Y
## 1 2 3 4 5 6 7
## 100 130 160 210 200 260 310