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.
library(glmtoolbox)
library(ggplot2)
library(dplyr)
library(shiny)
library(plotly)
library(reshape2)
data(advertising)
attach(advertising)
Este dataset contiene 200 registros y 4 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
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)')
¿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'
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)