1. Análisis Exploratorio de Datos

Cargar librerías

library(readxl)
library(ggplot2)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(corrplot)
## corrplot 0.95 loaded

Importar base de datos

library(ggpubr)
data <- read_excel("Base de datos mktg.xlsx")
dim(data)
## [1] 100   4

A. Contextualización base de datos

La base de datos que escogimos contiene información sobre diferentes estrategias de marketing, tanto digitales como tradicionales. Cada fila representa un caso donde se aplicó una estrategia y muestra cuánto se invirtió, cuántas conversiones se lograron y qué impacto tuvo.

En la base de datos tenemos cuatro variables:

Estrategia: nos dice qué tipo de acción de marketing se usó (como SEO, redes sociales, email marketing o publicidad en TV).

Inversión: muestra cuánto dinero se gastó en esa estrategia.

Conversiones: indica cuántas acciones se lograron (por ejemplo, compras, registros o clics).

Impacto: es un valor entre 0 y 1 que mide qué tan efectiva fue la estrategia frente a los objetivos.

B. Características generales de la base de datos

La base de datos tiene 100 filas y 4 columnas.

head(data)
## # A tibble: 6 × 4
##   Estrategia      Inversion Conversiones Impacto
##   <chr>           <chr>            <dbl> <chr>  
## 1 SEO             24425.76           489 0.23   
## 2 SEO             38382.77            99 0.3    
## 3 Redes Sociales  26007.83           262 0.59   
## 4 Email Marketing 48328.58           429 0.75   
## 5 Publicidad TV   16902.05           437 0.74   
## 6 Publicidad TV   35587.91           236 0.7
str(data)
## tibble [100 × 4] (S3: tbl_df/tbl/data.frame)
##  $ Estrategia  : chr [1:100] "SEO" "SEO" "Redes Sociales" "Email Marketing" ...
##  $ Inversion   : chr [1:100] "24425.76" "38382.77" "26007.83" "48328.58" ...
##  $ Conversiones: num [1:100] 489 99 262 429 437 236 279 140 145 473 ...
##  $ Impacto     : chr [1:100] "0.23" "0.3" "0.59" "0.75" ...
dim(data)
## [1] 100   4

Las variables que contiene son:

  1. Estrategia, que es de tipo categórica (texto).

  2. Inversión, que es una variable numérica continua (valores decimales).

  3. Conversiones, que es una variable numérica discreta (números enteros).

  4. Impacto, que es una variable numérica continua (valores decimales entre 0 y 1).

names(data)
## [1] "Estrategia"   "Inversion"    "Conversiones" "Impacto"

C. Análisis de variables según su tipo

Variables númericas

data$Inversion <- as.numeric(gsub(",", "", data$Inversion))
data$Impacto   <- as.numeric(gsub(",", "", data$Impacto))
quantile(data$Inversion, probs = c(0, 0.25, 0.5, 0.75, 1), na.rm = TRUE)
##       0%      25%      50%      75%     100% 
##  5061.85 18409.27 28834.45 40271.14 49849.64
quantile(data$Conversiones, probs = c(0, 0.25, 0.5, 0.75, 1), na.rm = TRUE)
##     0%    25%    50%    75%   100% 
##  51.00 155.50 270.50 394.25 496.00
quantile(data$Impacto, probs = c(0, 0.25, 0.5, 0.75, 1), na.rm = TRUE)
##     0%    25%    50%    75%   100% 
## 0.1100 0.3000 0.5300 0.7325 0.9800

En la variable Inversión, el cuartil uno es 18,787.77, el segundo es 28,581.98, el tercero es 37,943.64 y el cuarto es 49,811.74.

En la variable Conversiones, el cuartil uno es 182, el segundo es 272, el tercero es 366 y el cuarto es 499.

En la variable Impacto, el cuartil uno es 0.30, el segundo es 0.54, el tercero es 0.75 y el cuarto es 1.00.

hist(data$Inversion, 
     main = "Histograma de Inversión con Cuartiles", 
     col = "lightblue", 
     xlab = "Inversión")
abline(v = quantile(data$Inversion, probs = c(0.25, 0.5, 0.75), na.rm = TRUE),
       col = c("red","darkgreen","blue"), 
       lwd = 2, lty = 2)

hist(data$Conversiones, 
     main = "Histograma de Conversiones con Cuartiles", 
     col = "lightgreen", 
     xlab = "Conversiones")
abline(v = quantile(data$Conversiones, probs = c(0.25, 0.5, 0.75), na.rm = TRUE),
       col = c("red","darkgreen","blue"), 
       lwd = 2, lty = 2)

hist(data$Impacto, 
     main = "Histograma de Impacto con Cuartiles", 
     col = "lightpink", 
     xlab = "Impacto")
abline(v = quantile(data$Impacto, probs = c(0.25, 0.5, 0.75), na.rm = TRUE),
       col = c("red","darkgreen","blue"), 
       lwd = 2, lty = 2)

data$Inversion <- as.numeric(gsub(",", "", data$Inversion))
data$Impacto   <- as.numeric(gsub(",", "", data$Impacto))
mean(data$Inversion, na.rm = TRUE)
## [1] 28581.98
sd(data$Inversion, na.rm = TRUE)
## [1] 13272.33
mean(data$Impacto, na.rm = TRUE)
## [1] 0.5377
sd(data$Impacto, na.rm = TRUE)
## [1] 0.2505584

La media de la Inversión es 28,581.98 y su desviación estándar es 13,272.33.

La media de las Conversiones es 272.26 y su desviación estándar es 133.99.

La media del Impacto es 0.54 y su desviación estándar es 0.25.

Variables categóricas

table(data$Estrategia)
## 
## Email Marketing   Publicidad TV  Redes Sociales             SEO 
##              22              36              21              21
prop.table(table(data$Estrategia))
## 
## Email Marketing   Publicidad TV  Redes Sociales             SEO 
##            0.22            0.36            0.21            0.21
barplot(table(data$Estrategia),
        main = "Frecuencia de Estrategias de Marketing",
        col = "skyblue",
        xlab = "Estrategia",
        ylab = "Frecuencia")

La variable categórica Estrategia muestra que Publicidad TV se usó 36 veces, Email Marketing 22 veces, SEO 21 veces y Redes Sociales también 21 veces.

D. Revisión de valores faltantes

sum(is.na(data))
## [1] 0
colSums(is.na(data))
##   Estrategia    Inversion Conversiones      Impacto 
##            0            0            0            0

La revisión de la base de datos muestra que no contiene valores ausentes, ya que todas las variables tienen información completa.

E. Detección de valores atípicos

bp1 <- boxplot(data$Inversion, 
               main="Boxplot Inversión", 
               col="lightblue", 
               ylab="Inversión", 
               outline=FALSE)
outliers1 <- boxplot.stats(data$Inversion)$out
points(rep(1, length(outliers1)), outliers1, col="red", pch=19)

bp2 <- boxplot(data$Conversiones, 
               main="Boxplot Conversiones", 
               col="lightgreen", 
               ylab="Conversiones", 
               outline=FALSE)
outliers2 <- boxplot.stats(data$Conversiones)$out
points(rep(1, length(outliers2)), outliers2, col="red", pch=19)

bp3 <- boxplot(data$Impacto, 
               main="Boxplot Impacto", 
               col="lightpink", 
               ylab="Impacto", 
               outline=FALSE)
outliers3 <- boxplot.stats(data$Impacto)$out
points(rep(1, length(outliers3)), outliers3, col="red", pch=19)

Los boxplots de Inversión, Conversiones e Impacto muestran que los datos están dentro de rangos normales, con medianas claras, y no se observan outliers en ninguna de las variables.

F. Comentarios de resultados

En Estrategia se ve que la publicidad en TV es la más usada, mientras que SEO y redes sociales son las menos frecuentes.

En Inversión, el promedio fue de 28,582, pero los valores varian mucho porque hay campañas con montos bajos y otras muy altos.

En Conversiones, el promedio fue de 272 y algunas estrategias lograron hasta 500, mostrando que no todas tienen el mismo nivel de éxito.

En Impacto, la mayoría de los valores están entre 0.3 y 0.75, con un promedio de 0.54, lo que refleja un resultado intermedio.

La base no tiene datos faltantes ni outliers, lo que hace que el análisis sea más confiable.

2. Aplicación de distribuciones muestrales (media muestral)

Si se selecciona una muestra aleatoria de n = 25 registros, calcule la probabilidad de que la media muestral de la variable Impacto este entre 0.4 y 0.6 y determine que la media muestral de la variable Impacto sea mayor a 0.6.

library(readxl)

# Leer base
df <- read_excel("Base de datos mktg.xlsx", sheet = "Hoja 1 - Base de datos mktg")

# Variable Impacto
x <- as.numeric(df$Impacto)

# Parámetros
N <- nrow(df)
n <- 25
media_poblacional <- mean(x, na.rm=TRUE)
desviacion_poblacional <- sd(x, na.rm=TRUE)
error_estandar <- (desviacion_poblacional / sqrt(n)) * sqrt((N-n)/(N-1))

# Probabilidad de que Xbar > 0.6
probabilidad <- 1 - pnorm(0.6, mean = media_poblacional, sd = error_estandar)
print(paste("La probabilidad de que la media muestral sea mayor a 0.6 es:", round(probabilidad, 3)))
## [1] "La probabilidad de que la media muestral sea mayor a 0.6 es: 0.077"
# Probabilidad de que 0.4 < Xbar < 0.6
probabilidad_intervalo <- pnorm(0.6, mean = media_poblacional, sd = error_estandar) - 
                          pnorm(0.4, mean = media_poblacional, sd = error_estandar)
print(paste("La probabilidad de que la media muestral esté entre 0.4 y 0.6 es:", round(probabilidad_intervalo, 3)))
## [1] "La probabilidad de que la media muestral esté entre 0.4 y 0.6 es: 0.923"

Con una muestra de 25 casos, la probabilidad de que el promedio del Impacto sea mayor a 0.6 es de solo 7.7%, mientras que la probabilidad de que esté entre 0.4 y 0.6 es de 92.3%. Eso quiere decir que casi siempre los resultados se van a mantener en ese rango medio, y es difícil que pasen de 0.6. Para la gestión, esto significa que normalmente se puede esperar un impacto estable y no tan extremo.