Actividad 2

1. Contexto del problema
Una empresa de e-commerce quiere evaluar el impacto de una nueva
campaña de marketing sobre sus ventas diarias. Tienen datos de ventas
antes y después de la campaña y desean determinar si la campaña tuvo un
efecto significativo en el aumento de las ventas. Dado que los datos de
ventas pueden tener alta variabilidad y dependencia temporal, se decide
usar el doble bootstrap para mejorar la estimación del intervalo de
confianza del efecto de la campaña.
La hipótesis a evaluar es:
-Hipótesis nula: la campaña no tuvo efecto.
-Hipótesis alternativa: la campaña sí tuvo efecto
Datos:
• Se dispone de un dataset con 90 días de ventas antes de la campaña
y 90 días después de la campaña.
Variables del dataset:
• día: Es la etiqueta correspondiente al día de la venta.
• ventas: Es el monto de venta resultante.
• periodo: Indica si la venta es previa o posterior a la
implementación de la campaña.
Archivo: Base de datos se llama
dataset_ventas.csv
Instrucciones:
• Cargar los datos de ventas antes y después de la campaña.
• Calcular la diferencia de medias entre ambos periodos.
• Aplicar el primer bootstrap sobre los datos de ventas antes y
después para obtener una distribución de diferencias de medias.
• Aplicar el segundo bootstrap sobre la distribución obtenida en el
primer paso para afinar la estimación.
• Construir intervalos de confianza para la diferencia de medias con
el doble bootstrap.
# librerias
library(boot)
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
# Cargar datos
set.seed(616)
data <- read.csv("/Users/sebastianespi/Downloads/dataset_ventas.csv")
head(data)
## dia ventas periodo
## 1 1 83.71554 antes
## 2 2 114.96018 antes
## 3 3 104.24468 antes
## 4 4 77.40558 antes
## 5 5 91.32100 antes
## 6 6 124.77155 antes
summary(data)
## dia ventas periodo
## Min. : 1.0 Min. : 58.02 Length:180
## 1st Qu.:23.0 1st Qu.: 93.55 Class :character
## Median :45.5 Median :106.07 Mode :character
## Mean :45.5 Mean :105.54
## 3rd Qu.:68.0 3rd Qu.:116.51
## Max. :90.0 Max. :148.97
# Función para calcular diferencia de medias entre los dos periodos
diff_means <- function(data, indices) {
muestra <- data[indices, ]
mean_after <- mean(muestra$ventas[muestra$periodo == "despues"])
mean_before <- mean(muestra$ventas[muestra$periodo == "antes"])
return(mean_after - mean_before)
}
# Primer bootstrap
boot_1 <- boot(data = data, statistic = diff_means, R = 1000)
ic1 <- boot.ci(boot_1, type = "perc")
# Segundo bootstrap
set.seed(838)
n_outer <- 500
n_inner <- 200
theta_star <- numeric(n_outer)
t_values <- numeric(n_outer)
for (i in 1:n_outer) {
# Bootstrap externo
outer_sample <- data[sample(nrow(data), replace = TRUE), ]
theta_star_i <- diff_means(outer_sample, 1:nrow(outer_sample))
theta_star[i] <- theta_star_i
# Bootstrap interno para SE
inner_stats <- replicate(n_inner, {
inner_sample <- outer_sample[sample(nrow(outer_sample), replace = TRUE), ]
diff_means(inner_sample, 1:nrow(inner_sample))
})
se_star_i <- sd(inner_stats)
if (se_star_i > 0) {
t_values[i] <- (theta_star_i - boot_1$t0) / se_star_i
}
}
# Calcular ICs
# Eliminacion de NAs
t_values <- t_values[!is.na(t_values)]
se_hat <- sd(theta_star)
q_low <- quantile(t_values, 0.975)
q_high <- quantile(t_values, 0.025)
ci_low <- boot_1$t0 - q_low * se_hat
ci_high <- boot_1$t0 - q_high * se_hat
# final
estadistico <- round(boot_1$t0, 4)
ic_bootstrap_t <- c(round(ci_low, 4), round(ci_high, 4))
ic_percentil <- c(round(quantile(theta_star, 0.025), 4),
round(quantile(theta_star, 0.975), 4))
significativo <- !(ci_low <= 0 && 0 <= ci_high)
resultado <- if (significativo) "SÍ" else "NO"
# Analisis de resultados
cat("Estadístico observado:", estadistico, "\n")
## Estadístico observado: 10.0125
cat("Error estándar estimado:", round(se_hat, 4), "\n")
## Error estándar estimado: 2.3452
cat("IC 95% bootstrap-t (doble): [", ic_bootstrap_t[1], ", ", ic_bootstrap_t[2], "]\n", sep = "")
## IC 95% bootstrap-t (doble): [5.3716, 14.9684]
cat("IC 95% percentil simple: [", ic_percentil[1], ", ", ic_percentil[2], "]\n", sep = "")
## IC 95% percentil simple: [5.2873, 14.6137]
El análisis estadístico en R muestra un observado de 10.0125 con un
error estándar de 2.3452, lo que indica una variabilidad moderada.
Los intervalos de confianza al 95% obtenidos tanto con el
método bootstrap-t doble ([5.3716, 14.9684]) como con
el bootstrap percentil simple ([5.2873, 14.6137]).
Confirman un impacto positivo y significativo de la campaña de marketing
en las ventas.
Con este resutlado se conoce que la campaña fue efectiva, el analisis
de datos respalda la toma de decisiones estratégicas futuras.

LS0tCnRpdGxlOiAiQWN0aXZpZGFkIDIgTW9kdWxvIDItIEJvb3RTdHJhcCIKYXV0aG9yOiAiU2ViYXN0aWFuIEVzcGlub3phIEEwMDgzMzcwNCIKZGF0ZTogIjIwMjUtMDgtMTkiCm91dHB1dDogCiBodG1sX2RvY3VtZW50OiAKICB0b2M6IFRSVUUKICB0b2NfZmxvYXQ6IFRSVUUKICBjb2RlX2Rvd25sb2FkOiBUUlVFCiAgdGhlbWU6IHlldGkKLS0tCgojIDxzcGFuIHN0eWxlPSdjb2xvcjpyZWQ7Jz4gIEFjdGl2aWRhZCAyICA8L3NwYW4+CgohW10oaHR0cHM6Ly91cGxvYWQud2lraW1lZGlhLm9yZy93aWtpcGVkaWEvY29tbW9ucy85LzlkL0Jvb3RzdHJhcC5naWYpCgoqKjEuIENvbnRleHRvIGRlbCBwcm9ibGVtYSoqCgpVbmEgZW1wcmVzYSBkZSBlLWNvbW1lcmNlIHF1aWVyZSBldmFsdWFyIGVsIGltcGFjdG8gZGUgdW5hIG51ZXZhIGNhbXBhw7FhIGRlIG1hcmtldGluZyBzb2JyZSBzdXMgdmVudGFzIGRpYXJpYXMuIFRpZW5lbiBkYXRvcyBkZSB2ZW50YXMgYW50ZXMgeSBkZXNwdcOpcyBkZSBsYSBjYW1wYcOxYSB5IGRlc2VhbiBkZXRlcm1pbmFyIHNpIGxhIGNhbXBhw7FhIHR1dm8gdW4gZWZlY3RvIHNpZ25pZmljYXRpdm8gZW4gZWwgYXVtZW50byBkZSBsYXMgdmVudGFzLiBEYWRvIHF1ZSBsb3MgZGF0b3MgZGUgdmVudGFzIHB1ZWRlbiB0ZW5lciBhbHRhIHZhcmlhYmlsaWRhZCB5IGRlcGVuZGVuY2lhIHRlbXBvcmFsLCBzZSBkZWNpZGUgdXNhciBlbCBkb2JsZSBib290c3RyYXAgcGFyYSBtZWpvcmFyIGxhIGVzdGltYWNpw7NuIGRlbCBpbnRlcnZhbG8gZGUgY29uZmlhbnphIGRlbCBlZmVjdG8gZGUgbGEgY2FtcGHDsWEuIAoKTGEgaGlww7N0ZXNpcyBhIGV2YWx1YXIgZXM6CgotSGlww7N0ZXNpcyBudWxhOiBsYSBjYW1wYcOxYSBubyB0dXZvIGVmZWN0by4gCgotSGlww7N0ZXNpcyBhbHRlcm5hdGl2YTogbGEgY2FtcGHDsWEgc8OtIHR1dm8gZWZlY3RvCgoKRGF0b3M6CgogIOKAoiAJU2UgZGlzcG9uZSBkZSB1biBkYXRhc2V0IGNvbiA5MCBkw61hcyBkZSB2ZW50YXMgYW50ZXMgZGUgbGEgY2FtcGHDsWEgeSA5MCBkw61hcyBkZXNwdcOpcyBkZSBsYSBjYW1wYcOxYS4KICAKVmFyaWFibGVzIGRlbCBkYXRhc2V0OgoKICDigKIgCWTDrWE6IEVzIGxhIGV0aXF1ZXRhIGNvcnJlc3BvbmRpZW50ZSBhbCBkw61hIGRlIGxhIHZlbnRhLgogIAogIOKAoiAJdmVudGFzOiBFcyBlbCBtb250byBkZSB2ZW50YSByZXN1bHRhbnRlLgogIAogIOKAoiAJcGVyaW9kbzogSW5kaWNhIHNpIGxhIHZlbnRhIGVzIHByZXZpYSBvIHBvc3RlcmlvciBhIGxhIGltcGxlbWVudGFjacOzbiBkZSBsYSBjYW1wYcOxYS4KCioqQXJjaGl2bzoqKiBCYXNlIGRlIGRhdG9zIHNlIGxsYW1hIGRhdGFzZXRfdmVudGFzLmNzdgoKSW5zdHJ1Y2Npb25lczoKCiAg4oCiIENhcmdhciBsb3MgZGF0b3MgZGUgdmVudGFzIGFudGVzIHkgZGVzcHXDqXMgZGUgbGEgY2FtcGHDsWEuCiAgCiAg4oCiIENhbGN1bGFyIGxhIGRpZmVyZW5jaWEgZGUgbWVkaWFzIGVudHJlIGFtYm9zIHBlcmlvZG9zLgogIAogIOKAoiBBcGxpY2FyIGVsIHByaW1lciBib290c3RyYXAgc29icmUgbG9zIGRhdG9zIGRlIHZlbnRhcyBhbnRlcyB5IGRlc3B1w6lzIHBhcmEgb2J0ZW5lciB1bmEgZGlzdHJpYnVjacOzbiBkZSBkaWZlcmVuY2lhcyBkZSBtZWRpYXMuCiAgCiAg4oCiIEFwbGljYXIgZWwgc2VndW5kbyBib290c3RyYXAgc29icmUgbGEgZGlzdHJpYnVjacOzbiBvYnRlbmlkYSBlbiBlbCBwcmltZXIgcGFzbwpwYXJhIGFmaW5hciBsYSBlc3RpbWFjacOzbi4KCiAg4oCiIENvbnN0cnVpciBpbnRlcnZhbG9zIGRlIGNvbmZpYW56YSBwYXJhIGxhIGRpZmVyZW5jaWEgZGUgbWVkaWFzIGNvbiBlbCBkb2JsZQpib290c3RyYXAuCgpgYGB7cn0KIyBsaWJyZXJpYXMKbGlicmFyeShib290KQpsaWJyYXJ5KGx1YnJpZGF0ZSkKYGBgCgoKYGBge3J9CiMgQ2FyZ2FyIGRhdG9zCnNldC5zZWVkKDYxNikKZGF0YSA8LSByZWFkLmNzdigiL1VzZXJzL3NlYmFzdGlhbmVzcGkvRG93bmxvYWRzL2RhdGFzZXRfdmVudGFzLmNzdiIpCmhlYWQoZGF0YSkKc3VtbWFyeShkYXRhKQoKIyBGdW5jacOzbiBwYXJhIGNhbGN1bGFyIGRpZmVyZW5jaWEgZGUgbWVkaWFzIGVudHJlIGxvcyBkb3MgcGVyaW9kb3MKZGlmZl9tZWFucyA8LSBmdW5jdGlvbihkYXRhLCBpbmRpY2VzKSB7CiAgbXVlc3RyYSA8LSBkYXRhW2luZGljZXMsIF0KICBtZWFuX2FmdGVyIDwtIG1lYW4obXVlc3RyYSR2ZW50YXNbbXVlc3RyYSRwZXJpb2RvID09ICJkZXNwdWVzIl0pCiAgbWVhbl9iZWZvcmUgPC0gbWVhbihtdWVzdHJhJHZlbnRhc1ttdWVzdHJhJHBlcmlvZG8gPT0gImFudGVzIl0pCiAgcmV0dXJuKG1lYW5fYWZ0ZXIgLSBtZWFuX2JlZm9yZSkKfQpgYGAKCmBgYHtyfQojIFByaW1lciBib290c3RyYXAKYm9vdF8xIDwtIGJvb3QoZGF0YSA9IGRhdGEsIHN0YXRpc3RpYyA9IGRpZmZfbWVhbnMsIFIgPSAxMDAwKQppYzEgPC0gYm9vdC5jaShib290XzEsIHR5cGUgPSAicGVyYyIpCgojIFNlZ3VuZG8gYm9vdHN0cmFwCnNldC5zZWVkKDgzOCkKbl9vdXRlciA8LSA1MDAKbl9pbm5lciA8LSAyMDAKCnRoZXRhX3N0YXIgPC0gbnVtZXJpYyhuX291dGVyKQp0X3ZhbHVlcyA8LSBudW1lcmljKG5fb3V0ZXIpCgpmb3IgKGkgaW4gMTpuX291dGVyKSB7CiAgIyBCb290c3RyYXAgZXh0ZXJubwogIG91dGVyX3NhbXBsZSA8LSBkYXRhW3NhbXBsZShucm93KGRhdGEpLCByZXBsYWNlID0gVFJVRSksIF0KICB0aGV0YV9zdGFyX2kgPC0gZGlmZl9tZWFucyhvdXRlcl9zYW1wbGUsIDE6bnJvdyhvdXRlcl9zYW1wbGUpKQogIHRoZXRhX3N0YXJbaV0gPC0gdGhldGFfc3Rhcl9pCiAgCiAgIyBCb290c3RyYXAgaW50ZXJubyBwYXJhIFNFCiAgaW5uZXJfc3RhdHMgPC0gcmVwbGljYXRlKG5faW5uZXIsIHsKICAgIGlubmVyX3NhbXBsZSA8LSBvdXRlcl9zYW1wbGVbc2FtcGxlKG5yb3cob3V0ZXJfc2FtcGxlKSwgcmVwbGFjZSA9IFRSVUUpLCBdCiAgICBkaWZmX21lYW5zKGlubmVyX3NhbXBsZSwgMTpucm93KGlubmVyX3NhbXBsZSkpCiAgfSkKICAKICBzZV9zdGFyX2kgPC0gc2QoaW5uZXJfc3RhdHMpCiAgaWYgKHNlX3N0YXJfaSA+IDApIHsKICAgIHRfdmFsdWVzW2ldIDwtICh0aGV0YV9zdGFyX2kgLSBib290XzEkdDApIC8gc2Vfc3Rhcl9pCiAgfQp9CgojIENhbGN1bGFyIElDcwojIEVsaW1pbmFjaW9uIGRlIE5Bcwp0X3ZhbHVlcyA8LSB0X3ZhbHVlc1shaXMubmEodF92YWx1ZXMpXQpzZV9oYXQgPC0gc2QodGhldGFfc3RhcikKcV9sb3cgPC0gcXVhbnRpbGUodF92YWx1ZXMsIDAuOTc1KQpxX2hpZ2ggPC0gcXVhbnRpbGUodF92YWx1ZXMsIDAuMDI1KQoKY2lfbG93IDwtIGJvb3RfMSR0MCAtIHFfbG93ICogc2VfaGF0CmNpX2hpZ2ggPC0gYm9vdF8xJHQwIC0gcV9oaWdoICogc2VfaGF0CgojIGZpbmFsCmVzdGFkaXN0aWNvIDwtIHJvdW5kKGJvb3RfMSR0MCwgNCkKaWNfYm9vdHN0cmFwX3QgPC0gYyhyb3VuZChjaV9sb3csIDQpLCByb3VuZChjaV9oaWdoLCA0KSkKaWNfcGVyY2VudGlsIDwtIGMocm91bmQocXVhbnRpbGUodGhldGFfc3RhciwgMC4wMjUpLCA0KSwgCiAgICAgICAgICAgICAgICAgICByb3VuZChxdWFudGlsZSh0aGV0YV9zdGFyLCAwLjk3NSksIDQpKQpzaWduaWZpY2F0aXZvIDwtICEoY2lfbG93IDw9IDAgJiYgMCA8PSBjaV9oaWdoKQpyZXN1bHRhZG8gPC0gaWYgKHNpZ25pZmljYXRpdm8pICJTw40iIGVsc2UgIk5PIgoKYGBgCgpgYGB7cn0KIyBBbmFsaXNpcyBkZSByZXN1bHRhZG9zIApjYXQoIkVzdGFkw61zdGljbyBvYnNlcnZhZG86IiwgZXN0YWRpc3RpY28sICJcbiIpCmNhdCgiRXJyb3IgZXN0w6FuZGFyIGVzdGltYWRvOiIsIHJvdW5kKHNlX2hhdCwgNCksICJcbiIpCmNhdCgiSUMgOTUlIGJvb3RzdHJhcC10IChkb2JsZSk6IFsiLCBpY19ib290c3RyYXBfdFsxXSwgIiwgIiwgaWNfYm9vdHN0cmFwX3RbMl0sICJdXG4iLCBzZXAgPSAiIikKY2F0KCJJQyA5NSUgcGVyY2VudGlsIHNpbXBsZTogWyIsIGljX3BlcmNlbnRpbFsxXSwgIiwgIiwgaWNfcGVyY2VudGlsWzJdLCAiXVxuIiwgc2VwID0gIiIpCgpgYGAKRWwgYW7DoWxpc2lzIGVzdGFkw61zdGljbyBlbiBSIG11ZXN0cmEgdW4gb2JzZXJ2YWRvIGRlIDEwLjAxMjUgY29uIHVuIGVycm9yIGVzdMOhbmRhciBkZSAyLjM0NTIsIGxvIHF1ZSBpbmRpY2EgdW5hIHZhcmlhYmlsaWRhZCBtb2RlcmFkYS4KCkxvcyBpbnRlcnZhbG9zIGRlIGNvbmZpYW56YSBhbCA5NSUgb2J0ZW5pZG9zIHRhbnRvIGNvbiBlbCAqKm3DqXRvZG8gYm9vdHN0cmFwLXQgZG9ibGUgKFs1LjM3MTYsIDE0Ljk2ODRdKSoqIGNvbW8gY29uIGVsICoqYm9vdHN0cmFwIHBlcmNlbnRpbCBzaW1wbGUgKFs1LjI4NzMsIDE0LjYxMzddKSoqLiBDb25maXJtYW4gdW4gaW1wYWN0byBwb3NpdGl2byB5IHNpZ25pZmljYXRpdm8gZGUgbGEgY2FtcGHDsWEgZGUgbWFya2V0aW5nIGVuIGxhcyB2ZW50YXMuIAoKQ29uIGVzdGUgcmVzdXRsYWRvIHNlIGNvbm9jZSBxdWUgbGEgY2FtcGHDsWEgZnVlIGVmZWN0aXZhLCBlbCBhbmFsaXNpcyBkZSBkYXRvcyByZXNwYWxkYSBsYSB0b21hIGRlIGRlY2lzaW9uZXMgZXN0cmF0w6lnaWNhcyBmdXR1cmFzLiAKCgohW10oaHR0cHM6Ly9pLm1ha2VhZ2lmLmNvbS9tZWRpYS84LTIxLTIwMTUvdWplRkN4LmdpZikK