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