Modelo de regresión lineal

Impacto de mercadeo en ventas

En el siguiente ejemplo vamos a trabajar con los datos de las ventas de una compañia para relacionar las ventas con la inversión en mercadeo.

## Loading required package: ggplot2
## Loading required package: plotly
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
## Loading required package: datarium
data("marketing")
head(marketing)
##   youtube facebook newspaper sales
## 1  276.12    45.36     83.04 26.52
## 2   53.40    47.16     54.12 12.48
## 3   20.64    55.08     83.16 11.16
## 4  181.80    49.56     70.20 22.20
## 5  216.96    12.96     70.08 15.48
## 6   10.44    58.68     90.00  8.64
data.frame(promedio, desviación)
##   promedio desviación
## 1   16.827   6.260948
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
cor(marketing$newspaper, marketing$sales)
## [1] 0.228299
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
cor(marketing$facebook, marketing$sales)
## [1] 0.5762226
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
cor(marketing$youtube, marketing$sales)
## [1] 0.7822244

Se observa que la relación entre la inversión en mercadeo en youtube y las ventas en fuerte con un coeficiente de correlación de aprox. 0,8 es decir que tiene mucha más relevancia que las ventas que facebook y periódico.

Estimación de Modelo de Regresión Lineal Simple

mod_you=lm(sales~youtube, data=marketing)
mod_you
## 
## Call:
## lm(formula = sales ~ youtube, data = marketing)
## 
## Coefficients:
## (Intercept)      youtube  
##     8.43911      0.04754
mod_fac=lm(sales~facebook, data=marketing)
mod_fac
## 
## Call:
## lm(formula = sales ~ facebook, data = marketing)
## 
## Coefficients:
## (Intercept)     facebook  
##     11.1740       0.2025
mod_new=lm(sales~newspaper, data=marketing)
mod_new
## 
## Call:
## lm(formula = sales ~ newspaper, data = marketing)
## 
## Coefficients:
## (Intercept)    newspaper  
##    14.82169      0.05469
summary(mod_you)
## 
## Call:
## lm(formula = sales ~ youtube, data = marketing)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -10.0632  -2.3454  -0.2295   2.4805   8.6548 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 8.439112   0.549412   15.36   <2e-16 ***
## youtube     0.047537   0.002691   17.67   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.91 on 198 degrees of freedom
## Multiple R-squared:  0.6119, Adjusted R-squared:  0.6099 
## F-statistic: 312.1 on 1 and 198 DF,  p-value: < 2.2e-16

El modelo estimado es igual a sales=8.43911+(0.04754∗youtube, en donde β0=8.43911 y β1=0.04754. Podemos interpretar que las ventas promedio esperadas cuando no se invierte en youtube son de 8.33911 millones de dolares y por cada 1000 dolares adicionales de inversión en mercadeo en youtube se espera un retorno en ventas de 0.04754 millones de dólares.

Se observa en la tabla del summary del modelo que youtube es significativo en el modelo por que el valor p lo indica con un nivel de confianza del 99.9% (***), adicionalmente este modelo logra explicar el 61.19% de la variabilidad de las ventas (en general de las ventas).

predict(mod_you,list(youtube=65),interval = "confidence",level = 0.95)
##        fit      lwr      upr
## 1 11.52899 10.72462 12.33337

El promedio esperado de ventas para una eventual inversión en youtube de 65 mil dolares seria de 11.528 millones de dolares. El intervalo de confianza para la predicción de las ventas nos indica que el promedio de ventas estaria entre los 10.72 y 12.33 millones de dolares con un 95% de confianza.

Validación cruzada

A continuación vamos a realizar una validación cruzada para evaluar el poder predictivo del modelo. Usaremos un escenario 80-20 (modelar-validar) como se observa:

id_modelar=sample(1:200,size = 160)
marketing_modelar=marketing[id_modelar,]
marketing_validar=marketing[-id_modelar,]
mod_you_modelar=lm(sales~youtube,data=marketing_modelar)
sales_pred=predict(mod_you_modelar,list(youtube=marketing_validar$youtube))
sales_real=marketing_validar$sales
error=sales_real-sales_pred
res=data.frame(sales_real,sales_pred,error)
MAE=mean(abs(error))
MAE
## [1] 3.585113

La validación cruzada en un primer paso, segmentamos los datos dejando 80% para el modelo y 20% aleteatorios para validar. Luego se ajusta el modelo con el 80%. Posteriormente predecimos las ventas del 20% y finalmente se comparan los resultados del modelo contra los reales por medio de la metrica MAE que en este caso nos da alrededor de 3,4 millones de dolares como error de predicción (pronóstico de ventas).