#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))
| (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
| 200 |
3.91 |
0.6119 |
0.6099 |
modelo_face=lm(sales~facebook,data = marketing)
pander(summary(modelo_face))
| (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
| 200 |
5.13 |
0.332 |
0.3287 |
modelo_news=lm(sales~newspaper,data = marketing)
pander(summary(modelo_news))
| (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
| 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))
Estimación Youtube
pander(predict(modelo_face,list(facebook=65),interval = "confidence",level = 0.95))
##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