title: “Análisis de Marketing Campaign Performance” author: “PAVEL TORRES” date: “2025-08-01” output: PDF
En este análisis exploraremos un dataset real de Marketing Campaign Performance (más de 200000 registros y dos años de información sobre campañas, clics, conversiones, ingresos y ROI) :contentReferenceoaicite:1 El objetivo es aplicar análisis descriptivo, crear funciones estadísticas en R, y comparar resultados usando R Markdown para generar un reporte reproducible.
install.packages(“tinytex”) tinytex::install_tinytex() library(dplyr) library(ggplot2)
#CARGA DE DATOS PARA TALLER
datos <- read.csv("C:\\Users\\CEC\\Documents\\PAVEL_TORRES\\R\\datos_taller.csv", stringsAsFactors = FALSE)
summary(datos)
## Campaign_ID Company Campaign_Type Target_Audience
## Min. : 1 Length:200000 Length:200000 Length:200000
## 1st Qu.: 50001 Class :character Class :character Class :character
## Median :100001 Mode :character Mode :character Mode :character
## Mean :100001
## 3rd Qu.:150000
## Max. :200000
## Duration Channel_Used Conversion_Rate Acquisition_Cost
## Length:200000 Length:200000 Min. :0.01000 Length:200000
## Class :character Class :character 1st Qu.:0.05000 Class :character
## Mode :character Mode :character Median :0.08000 Mode :character
## Mean :0.08007
## 3rd Qu.:0.12000
## Max. :0.15000
## ROI Location Language Clicks
## Min. :2.000 Length:200000 Length:200000 Min. : 100.0
## 1st Qu.:3.500 Class :character Class :character 1st Qu.: 325.0
## Median :5.010 Mode :character Mode :character Median : 550.0
## Mean :5.002 Mean : 549.8
## 3rd Qu.:6.510 3rd Qu.: 775.0
## Max. :8.000 Max. :1000.0
## Impressions Engagement_Score Customer_Segment Date
## Min. : 1000 Min. : 1.000 Length:200000 Length:200000
## 1st Qu.: 3266 1st Qu.: 3.000 Class :character Class :character
## Median : 5518 Median : 5.000 Mode :character Mode :character
## Mean : 5507 Mean : 5.495
## 3rd Qu.: 7753 3rd Qu.: 8.000
## Max. :10000 Max. :10.000
#' Calcula la Media de un vector
#' @param a Vector numérico de valores
#' @return Media Normal
media <- function(a) {
resultado <- sum(a)/length(a)
return(resultado)
}
#' Calcula la Media Ponderada de un vector
#' @param a Vector numérico de valores
#' @param b Vector numérico de pesos
#' @return Media Ponderada
media_pon <- function(a,b) {
resultado <- sum(a*b)/sum(b)
return(resultado)
}
#' Calcula la Varianza de un vector
#' @param a Vector numérico de valores
#' @return Varianza
varianza <- function(a){
resultado <- sum((a-media(a))^2)/(length(a) -1)
}
#' Calcula la Desviación Estandar de un vector
#' @param a Vector numérico de valores
#' @return Desviación Estandar
desviacion <- function(a){
resultado <- sum((a-media(a))^2)/(length(a) -1)
}
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
#MEDIA
datos_ventas <- datos |>
dplyr::group_by(Company, Target_Audience) |>
dplyr::summarise(total_clicks = sum(Clicks, na.rm = TRUE), .groups = "drop")
media_general <- media(datos_ventas$total_clicks)
# Crear gráfico de barras
ggplot(datos_ventas, aes(x = Company, y = total_clicks, fill = Target_Audience)) +
geom_col(position = "dodge") +
geom_hline(yintercept = media_general, linetype = "dashed", color = "red", size = 1) +
labs(
title = "Total de Clicks por Compañía y Audiencia",
subtitle = paste("Media general:", round(media_general, 2)),
x = "Compañía",
y = "Total de Clicks",
fill = "Audiencia"
) +
theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.