#cargar librerias
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
library(plotly)
## Warning: package 'plotly' was built under R version 4.4.3
## 
## Adjuntando el paquete: '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
library(datarium)
## Warning: package 'datarium' was built under R version 4.4.3
library(pander)

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 datos

promedio=mean(marketing$sales)
desviacion=sd(marketing$sales)

data.frame(promedio,desviacion)
##   promedio desviacion
## 1   16.827   6.260948

Gráficos: Exploración bivariada

###gráfico 1
g1=ggplot(data = marketing,mapping = aes(x=sales))+geom_histogram(fill="blue")+theme_bw()
ggplotly(g1)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
##exploración bivariada
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'
##correlación
cor(marketing$newspaper,marketing$sales)
## [1] 0.228299
g3= ggplot(data = marketing,mapping = aes(x=facebook,y=sales))+geom_point()+theme_bw()+geom_smooth()
ggplotly(g3)
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
cor(marketing$facebook,marketing$sales)
## [1] 0.5762226
g4= ggplot(data = marketing,mapping = aes(x=youtube,y=sales))+geom_point()+theme_bw()+geom_smooth()
ggplotly(g4)
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
cor(marketing$youtube,marketing$sales)
## [1] 0.7822244

Estiamción de los modelos Regresión Lineal Simple

##Estiamción de los modelos Regresión Lineal Simple
modelo_you=lm(sales~youtube,data = marketing)
pander(summary(modelo_you))
  Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.439 0.5494 15.36 1.406e-35
youtube 0.04754 0.002691 17.67 1.467e-42
Fitting linear model: sales ~ youtube
Observations Residual Std. Error \(R^2\) Adjusted \(R^2\)
200 3.91 0.6119 0.6099
modelo_face=lm(sales~facebook,data = marketing)
pander(summary(modelo_face))
  Estimate Std. Error t value Pr(>|t|)
(Intercept) 11.17 0.6755 16.54 3.561e-39
facebook 0.2025 0.02041 9.921 4.355e-19
Fitting linear model: sales ~ facebook
Observations Residual Std. Error \(R^2\) Adjusted \(R^2\)
200 5.13 0.332 0.3287
modelo_news=lm(sales~newspaper,data = marketing)
pander(summary(modelo_news))
  Estimate Std. Error t value Pr(>|t|)
(Intercept) 14.82 0.7457 19.88 4.714e-49
newspaper 0.05469 0.01658 3.3 0.001148
Fitting linear model: sales ~ newspaper ### Estimación Youtube
Observations Residual Std. Error \(R^2\) Adjusted \(R^2\)
200 6.111 0.05212 0.04733
##Predecir con el modelo
#estimar las ventas para un mes en el cual se invierte en mercadeo 65 millones
pander(predict(modelo_you,list(youtube=65),interval = "confidence",level = 0.95))
fit lwr upr
11.53 10.72 12.33

Estimación Youtube

pander(predict(modelo_face,list(facebook=65),interval = "confidence",level = 0.95))
fit lwr upr
24.34 22.68 25.99
##Validación cruzada

#Paso1: Segmentar los datos
id_modelar=sample(1:200,size=160)
marketing_modelar=marketing[id_modelar,]
marketing_validar=marketing[-id_modelar,]

#Paso2: Estimar el modelo set de modelar
modelo_you_modelar=lm(sales~youtube,data=marketing_modelar)

#Paso3: predecir set de validación
sales_pred=predict(modelo_you_modelar,list(youtube=marketing_validar$youtube))

#Paso4: Comparar ventas del modelo y reales
sales_real=marketing_validar$sales
error=sales_real-sales_pred
res=data.frame(sales_real,sales_pred,error)

#Paso5: Calcular indicador de evaluación de la predicción
MAE= mean(abs(error))
pander(MAE)

3.314

Interpretación:

El modelo que incluye la publicidad en YouTube es el que mejor explica el comportamiento de las ventas, con un R² del 61%, superior al de los modelos que utilizan otras variables. La ecuación de la recta para este modelo indica que cuando no se invierte en publicidad en YouTube, las ventas estimadas serían de 8,4 millones de dólares, y además, por cada millón de dólares invertidos en publicidad en esta plataforma, se espera un incremento adicional de 40 mil dólares en ventas. Finalmente, la validación cruzada arrojó un error absoluto medio (MAE) del 3,1%, lo que sugiere que el modelo tiene un buen desempeño predictivo.

Modelo Múltiple con youtube y facebook

#modelo múltiple
modelo_yf=lm(sales~youtube+facebook,data = marketing)
summary(modelo_yf)
## 
## Call:
## lm(formula = sales ~ youtube + facebook, data = marketing)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -10.5572  -1.0502   0.2906   1.4049   3.3994 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3.50532    0.35339   9.919   <2e-16 ***
## youtube      0.04575    0.00139  32.909   <2e-16 ***
## facebook     0.18799    0.00804  23.382   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.018 on 197 degrees of freedom
## Multiple R-squared:  0.8972, Adjusted R-squared:  0.8962 
## F-statistic: 859.6 on 2 and 197 DF,  p-value: < 2.2e-16
predict(modelo_yf,list(youtube=65,facebook=65),interval = "confidence",level = 0.95)
##        fit      lwr      upr
## 1 18.69901 17.96556 19.43246
#Paso1: Segmentar los datos
id_modelar=sample(1:200,size=160)
marketing_modelar=marketing[id_modelar,]
marketing_validar=marketing[-id_modelar,]

#Paso2: Estimar el modelo set de modelar
modelo_yf_modelar=lm(sales~youtube+facebook,data=marketing_modelar)

#Paso3: predecir set de validación
sales_pred2=predict(modelo_yf_modelar,list(youtube=marketing_validar$youtube,facebook=marketing_validar$facebook))

#Paso4: Comparar ventas del modelo y reales
sales_real=marketing_validar$sales
error2=sales_real-sales_pred2
res2=data.frame(sales_real,sales_pred2,error2)

#Paso5: Calcular indicador de evaluación de la predicción
MAE= mean(abs(error2))
MAE
## [1] 1.577422