install.packages("ggplot2")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
## (as 'lib' is unspecified)
install.packages("plotly")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
## (as 'lib' is unspecified)
install.packages("datarium")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
## (as 'lib' is unspecified)
require(ggplot2)
## Loading required package: ggplot2
require(plotly)
## 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
require(datarium)
## Loading required package: datarium

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.
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

##Exploración de las ventas (sales)

promedio=mean(marketing$sales) #promedio / media
desviación=sd(marketing$sales) #desviación estandar

data.frame(promedio,desviación)
##   promedio desviación
## 1   16.827   6.260948
g1=ggplot(data = marketing,mapping = aes(x=sales))+geom_histogram(fill="skyblue")+theme_bw()
ggplotly(g1)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Se observa que las ventas promedio del historico de datos son de 16 millones de dólares con una desviación estandar de 6 millones, indicado que las ventas en general varian de manera significativa y suponemos que esas variaciones pueden estar relacionadas con la inversión en mercadeo y por ello el siguiente paso es un análisis exploratorio bivariado:
g2=ggplot(data=marketing,mapping = aes(x=newspaper,y=sales))+geom_point()+theme_bw()+
  geom_smooth()
ggplotly(g2)
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
cor(marketing$newspaper,marketing$sales)
## [1] 0.228299
Se observa `por otro lado una relación positiva (directa) entre la inversión en publicidad en facebook y las ventas, esta relación tiene una fuerza media ya que el coeficiente de correlación es de casi 0,6.
g2=ggplot(data=marketing,mapping = aes(x=facebook,y=sales))+geom_point()+theme_bw()+
  geom_smooth()
ggplotly(g2)
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
correlacionF = cor(marketing$facebook,marketing$sales)
Se observa `por otro lado una relación positiva (directa) entre la inversión en publicidad en facebook y las ventas, esta relación tiene una fuerza media ya que el coeficiente de correlación es de casi 0,6.
g4=ggplot(data=marketing,mapping = aes(x=youtube,y=sales))+geom_point()+theme_bw()+
  geom_smooth(method = "lm")
ggplotly(g4) 
## `geom_smooth()` using 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 muchas relevancia en las ventas que facebook y periodico.

Estimación de Modelo de Regresión Lineal Simple

A continuación vamos a estimar un modelo de regresión lineal simple entre las ventas en función de la inversión en mercadeo en facebook.

##Estimación del Modelo

mod_face=lm(sales~facebook,data=marketing)
mod_face
## 
## Call:
## lm(formula = sales ~ facebook, data = marketing)
## 
## Coefficients:
## (Intercept)     facebook  
##     11.1740       0.2025

#sales=11.1740 +(0.2025*facebook)

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

##Interpretación del summary del modelo

summary(mod_face)
## 
## Call:
## lm(formula = sales ~ facebook, data = marketing)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -18.8766  -2.5589   0.9248   3.3330   9.8173 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 11.17397    0.67548  16.542   <2e-16 ***
## facebook     0.20250    0.02041   9.921   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5.13 on 198 degrees of freedom
## Multiple R-squared:  0.332,  Adjusted R-squared:  0.3287 
## F-statistic: 98.42 on 1 and 198 DF,  p-value: < 2.2e-16
Se observa en la tabla del summary del modelo que facebook es significativo en el modelo por que el valor p lo indica con un nivel de confianza del 95% (***), adicionalmente este modelo logra explicar el 33.2% de la variabilidad de las ventas (en general de las ventas).

##Predecir con el Modelo #####Estimar las ventas para un mes en el cual se invierta en mercadeo en facebook 65 mil dólares.

predict(mod_face,list(facebook=65),interval = "confidence",level = 0.95)
##        fit      lwr     upr
## 1 24.33619 22.68098 25.9914
El promedio esperado de ventas para una eventual inversión en facebook de 65 mil dolares seria de 24.336 millones de dolares. El intervalo de confianza para la predicción de las ventas nos indica que el promedio de ventas estaria entre los 22.68 y 25.99 millones de dolares con un 95% de confianza.

Paso 1 - Segmentar los Datos

id_modelar=sample(1:200,size = 160)
marketing_modelar=marketing[id_modelar,]
marketing_validar=marketing[-id_modelar,]

Paso 2 - Estimar el Modelo Set de Modelar

mod_face_modelar=lm(sales~facebook,data=marketing_modelar)

Paso 3 - Predeccir Set de Validación

sales_pred=predict(mod_face_modelar,list(facebook=marketing_validar$facebook))

Paso 4 - Comparar Ventas del Modelo y Reales

sales_real=marketing_validar$sales
error=sales_real-sales_pred
res=data.frame(sales_real,sales_pred,error)

Paso 5 - Calcular Indicador de Evaluación de la Predicción

MAE=mean(abs(error)) #Mean Absolut Error (Error Medio Absoluto)
MAE
## [1] 3.832691
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,69 millones de dolares como error de predicción (pronóstico de ventas).