Introducción

El dataset Advertising contiene información sobre los gastos en publicidad en distintos medios de comunicación y sus efectos en las ventas. Fue recopilado para analizar la relación entre la inversión en publicidad y el rendimiento en términos de ventas.

Cargar Librerías Necesarias

library(glmtoolbox)
library(ggplot2)
library(dplyr)
library(shiny)
library(plotly)
library(reshape2)

Cargar Dataset

data(advertising)
attach(advertising)

Composición del Dataset

Este dataset contiene 200 registros y 4 variables:

Resumen de las Variables

summary(advertising)
##        TV             radio          newspaper          sales      
##  Min.   :  0.70   Min.   : 0.000   Min.   :  0.30   Min.   : 1.60  
##  1st Qu.: 74.38   1st Qu.: 9.975   1st Qu.: 12.75   1st Qu.:10.38  
##  Median :149.75   Median :22.900   Median : 25.75   Median :12.90  
##  Mean   :147.04   Mean   :23.264   Mean   : 30.55   Mean   :14.02  
##  3rd Qu.:218.82   3rd Qu.:36.525   3rd Qu.: 45.10   3rd Qu.:17.40  
##  Max.   :296.40   Max.   :49.600   Max.   :114.00   Max.   :27.00

Distribución de los Datos

A continuación, se muestran histogramas de los presupuestos en publicidad y las ventas para visualizar su distribución.

plot_histogram <- function(df, column, fill_color, title, x_label) {
  p <- ggplot(df, aes_string(x=column)) +
    geom_histogram(fill=fill_color, bins=20, alpha=0.7) +
    geom_vline(aes(xintercept=mean(df[[column]], na.rm=TRUE)), color="red", linetype="dashed") +
    labs(title=title, x=x_label, y='Frecuencia') +
    theme_minimal()
  ggplotly(p)
}

plot_histogram(advertising, 'TV', 'steelblue', 'Distribución del Presupuesto en TV', 'Gasto en TV ($1000s)')
plot_histogram(advertising, 'radio', 'darkorange', 'Distribución del Presupuesto en Radio', 'Gasto en Radio ($1000s)')
plot_histogram(advertising, 'newspaper', 'forestgreen', 'Distribución del Presupuesto en Periódicos', 'Gasto en Periódicos ($1000s)')
plot_histogram(advertising, 'sales', 'purple', 'Distribución de las Ventas', 'Ventas (1000 unidades)')

Relaciones entre Variables

¿Existe una relación entre el gasto en publicidad y las ventas? Veamos gráficamente:

plot_relation <- function(df, x, y, color, title, x_label, y_label) {
  p <- ggplot(df, aes_string(x=x, y=y)) +
    geom_point(color=color, alpha=0.7) +
    geom_smooth(method='lm', color='red', se=FALSE) +
    labs(title=title, x=x_label, y=y_label) +
    theme_minimal()
  ggplotly(p)
}

plot_relation(advertising, 'TV', 'sales', 'blue', 'Relación entre Gasto en TV y Ventas', 'Gasto en TV ($1000s)', 'Ventas (1000 unidades)')
## `geom_smooth()` using formula = 'y ~ x'
plot_relation(advertising, 'radio', 'sales', 'orange', 'Relación entre Gasto en Radio y Ventas', 'Gasto en Radio ($1000s)', 'Ventas (1000 unidades)')
## `geom_smooth()` using formula = 'y ~ x'
plot_relation(advertising, 'newspaper', 'sales', 'darkgreen', 'Relación entre Gasto en Periódicos y Ventas', 'Gasto en Periódicos ($1000s)', 'Ventas (1000 unidades)')
## `geom_smooth()` using formula = 'y ~ x'

Matriz de Correlaciones

Visualizamos la matriz de correlaciones con un mapa de calor interactivo.

corr_matrix <- round(cor(advertising), 2)
melted_corr <- melt(corr_matrix)

p <- ggplot(data = melted_corr, aes(Var1, Var2, fill = value)) +
  geom_tile() +
  scale_fill_gradient2(low = "blue", high = "red", mid = "white", midpoint = 0, limit = c(-1,1), space = "Lab", name="Correlación") +
  theme_minimal() +
  labs(title='Matriz de Correlación')
ggplotly(p)