Regresión simple

Caso publicidad ventas

Considere la relación publicidad/ventas en una tienda de equipos de sonido. Durante los últimos tres meses, en 10 ocasiones la tienda apareció en comerciales de televisión, en el fin de semana, para promover sus ventas

Las librerías

library(ggplot2) # Para gráficas
## Warning: package 'ggplot2' was built under R version 3.6.2
library(stats) # Para regresion lineal

Los datos

semanas <- c(1:10)
comerciales <- c(2,5,1,3,4,1,5,3,4,2)
ventas <- c(50,57,41,54,54,38,63,48,59,46)

datos <- data.frame(semanas,comerciales,ventas)
datos
##    semanas comerciales ventas
## 1        1           2     50
## 2        2           5     57
## 3        3           1     41
## 4        4           3     54
## 5        5           4     54
## 6        6           1     38
## 7        7           5     63
## 8        8           3     48
## 9        9           4     59
## 10      10           2     46

Diagrama de dispersión

plot(datos$comerciales, datos$ventas,
     xlab = "Comerciales",
     ylab = "Ventas $",
     main = "Diagrama de dispersión")

Diagrama de dispersión con ggplot2

ggplot(datos, aes(comerciales, ventas))   +   geom_point()

#ggplot(data = datos) + 
#  geom_point(mapping = aes(x = comerciales, y = ventas))

La regresión lineal

modelo <- lm(ventas ~ comerciales, data = datos)
modelo
## 
## Call:
## lm(formula = ventas ~ comerciales, data = datos)
## 
## Coefficients:
## (Intercept)  comerciales  
##       36.15         4.95
  • y = a + bx
  • ventas = 36.15 * 4.95 (comerciales)
  • La pendiente de la línea de tendencia es 4.95
  • la intersección con el eje y (el punto en que la recta interseca el eje y) es 36.15.

Graficando la linea de tendencia con una predicción

y_predict <- predict(modelo, datos)
y_predict
##     1     2     3     4     5     6     7     8     9    10 
## 46.05 60.90 41.10 51.00 55.95 41.10 60.90 51.00 55.95 46.05
ggplot() + geom_point(data = datos, aes(x = comerciales, y = ventas), size = 0.9) +
  geom_line(aes( x = datos$comerciales, y = y_predict), color = "red") +
  xlab("Comerciales") + 
  ylab("Ventas") + 
  ggtitle("Linea de tendencia sobre Conjunto de Datos")

Interpretación

  • ¿Hay relación entre publicidad y ventas en un negocio comercial que vena x producto?
  • Se establece que existe una relación positiva entre comerciales puestos contra las ventas realizadas
  • Pero cual es es el Coefieciente de Relació entre las dos variables
summary(modelo)
## 
## Call:
## lm(formula = ventas ~ comerciales, data = datos)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -3.900 -2.737 -0.075  2.775  3.950 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   36.150      2.285  15.820 2.55e-07 ***
## comerciales    4.950      0.689   7.185 9.39e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.081 on 8 degrees of freedom
## Multiple R-squared:  0.8658, Adjusted R-squared:  0.849 
## F-statistic: 51.62 on 1 and 8 DF,  p-value: 9.386e-05

Coeficiente de Correlación

  • Mediante la función cor() se genera el coeficiente de correlación entre dos o mas variables
  • −0.90 = Correlación negativa muy fuerte.
  • −0.75 = Correlación negativa considerable.
  • −0.50 = Correlación negativa media.
  • −0.25 = Correlación negativa débil.
  • −0.10 = Correlación negativa muy débil.
  • 0.00 = No existe correlación alguna entre las variables.
  • +0.10 = Correlación positiva muy débil.
  • +0.25 = Correlación positiva débil.
  • +0.50 = Correlación positiva media.
  • +0.75 = Correlación positiva considerable.
  • +0.90 = Correlación positiva muy fuerte.
  • +1.00 = Correlación positiva perfecta (“A mayor X, mayor Y” o “a menor X, menor Y”, de manera proporcional. Cada vez que X aumenta, Y aumenta siempre una cantidad constante).
cr <- cor(datos$comerciales, datos$ventas)
cr
## [1] 0.9304906

cuál e la predicción de las vebtas con valores de 3.5 y 4.5 en comerciales?

  • Por medio de la función predict()
predict.Ventas <- predict(modelo, data.frame(comerciales = c(3.5, 4.5)))
predict.Ventas
##      1      2 
## 53.475 58.425
  • Por medio de los coefficientes de modelo
  • y = a + bx
predict.Ventas <-  modelo$coefficients[1] + modelo$coefficients[2] * c(3.5, 4.5)
predict.Ventas
## [1] 53.475 58.425