Analysis Two

Was there a change in the number of units after changing the price? 
   * By Catalog
   * By Territory

How much money did we make before the wholesale price change
How much money did we make after the wholesale price change
How much money did we make after the experiment

How much could we make across all catalog
How much could we make across all Frontline


-----------------------------------------------

toTest <- c("country_code", "category", "TreatmentWk1", "discretized_tracks", "OverridePerc", "multi_cd")


transac <- "DT"
transac <- "DA"
value.var <- "deltarevenue"
value.var <- "deltaunits"

groupCols <- c("country_code", "discretized_tracks", "relative_to_default", "OverridePerc", "multi_cd")

INFO <- sprintf("Looking at change in %s for %s\n  goruping by %s", ifelse(value.var=="deltarevenue", "REVENUE", "UNITS"), ifelse(transac=="DT", "TRACKS", "ALBUMS"), pasteQand(groupCols))
cat(INFO, "\n")

## Add group column
DT.EU_aggd.delta[, group := do.call(paste, c(.SD, sep=" - ")), .SDcols = groupCols]

# setnames(DT.EU_aggd.deltaunits, gsub(" Experiment", "_Experiment", names(DT.EU_aggd.deltaunits)))
if (!haskey(DT.EU_aggd)) stop ("DT.EU_aggd.delta has lost its key")
DT.EU_aggd.deltaunits <- dcast.data.table(DT.EU_aggd.delta[store_name == "iTunes" & transac_type_abbr == transac], makeFormula(setdiff(key(DT.EU_aggd.delta), "TimePeriod"), "TimePeriod"), value.var=value.var)

## CONFIRM:  Values as expected
stopifnot(identical(
      DT.EU_aggd.deltaunits[, sumn(`Before_Experiment`), keyby=list(category, country_code, TreatmentWk1)]
    , DT.EU_aggd.delta[store_name == "iTunes" & transac_type_abbr == transac][TimePeriod=="Before_Experiment", sumn(get(value.var)), keyby=list(category, country_code, TreatmentWk1)]
))


## INTERACTION PLOTS
if (FALSE) {
  par(mfrow=c(1, 2))
  DT.EU_aggd.deltaunits[, interaction.plot(x.fa=TreatmentWk1, response=During_Experiment, trace.fa=category)]
  DT.EU_aggd.deltaunits[, interaction.plot(x.fa=category, response=During_Experiment, trace.fa=TreatmentWk1)]
  par(mfrow=c(1, 2))
  DT.EU_aggd.deltaunits[, interaction.plot(x.fa=TreatmentWk1, response=During_Experiment, trace.fa=country_code)]
  DT.EU_aggd.deltaunits[, interaction.plot(x.fa=country_code, response=During_Experiment, trace.fa=TreatmentWk1)]
}

## Country by Country basis --- ignore p values
{
  cat (".......... Comparing Before & During on a country-by-country basis. Ignore p values ..........  \n")
  for (ctry in names(countries_using)) {
    cat ("\n\n ----------------------- ", ctry , " ------------------------\n")
    print(anova(lm(`During_Experiment` ~ TreatmentWk1, data=DT.EU_aggd.deltaunits[country_code == ctry])))
    print(anova(lm(`During_Experiment` ~ TreatmentWk1 * category, data=DT.EU_aggd.deltaunits[country_code == ctry])))
    print(anova(lm(`During_Experiment` ~ TreatmentWk1 * discretized_tracks, data=DT.EU_aggd.deltaunits[country_code == ctry])))
    print(anova(lm(makeFormula("During_Experiment", c("TreatmentWk1", setdiff(groupCols, "country_code")), "*"), data=DT.EU_aggd.deltaunits[country_code == ctry])))
  }
}

invisible(DT.EU_aggd.deltaunits[, {cat ("\n\n-----------\n"); print(do.call(paste, c(.BY, sep = " - "))); cat ("      ---   samples: " ,  nrow(.SD) ," \n"); if (nrow(.SD) < 4) cat("Not enought data") else print(anova(lm("During_Experiment ~ TreatmentWk1", data=.SD))); TRUE}, by=c(groupCols[c(1, 2, 5)])])


## Quick overview of different models
cat (".......... Comparing Before & During with and without country_code ..........  \n")
anova(lm(`Before_Experiment` ~ category * TreatmentWk1                 , data=DT.EU_aggd.deltaunits))
anova(lm(`Before_Experiment` ~ category * TreatmentWk1 * country_code  , data=DT.EU_aggd.deltaunits))
anova(lm(`During_Experiment` ~ category * TreatmentWk1                 , data=DT.EU_aggd.deltaunits))
anova(lm(`During_Experiment` ~ category * TreatmentWk1 * country_code  , data=DT.EU_aggd.deltaunits))
anova(lm(`During_Experiment` ~            TreatmentWk1 * country_code  , data=DT.EU_aggd.deltaunits))
## With discretized_tracks and OverridePerc
anova(lm(`During_Experiment` ~ category * TreatmentWk1 * country_code * discretized_tracks * OverridePerc  , data=DT.EU_aggd.deltaunits))
anova(lm(`During_Experiment` ~            TreatmentWk1 * country_code * discretized_tracks * OverridePerc  , data=DT.EU_aggd.deltaunits))
anova(lm(`During_Experiment` ~            TreatmentWk1 * country_code * discretized_tracks * relative_to_default * OverridePerc  , data=DT.EU_aggd.deltaunits))

# ## MODEL (ORIGINALY) USING
# ## Note that the country IS significant.  TreatmentWk1 as well.  However, category is NOT significant
# Model.During__treatment_country_category <- lm(`During_Experiment` ~ TreatmentWk1 * country_code * category, data=DT.EU_aggd.deltaunits)
# Anova.During__treatment_country_category <- anova(Model.During__treatment_country_category)
# Tukey.During__treatment_country_category <- TukeyHSD(aov(Model.During__treatment_country_category))
# print(names(Tukey.During__treatment_country_category))
# as.data.table(Tukey.During__treatment_country_category)[["TreatmentWk1:country_code"]][from_country_code == to_country_code]
# tail(as.data.table(Tukey.During__treatment_country_category), 1)[[1]][from_country_code == to_country_code] [order(upr)]
# plot(Tukey.During__treatment_country_category)

# ## MODEL WITH TRACKS & OVERRIDES
# ## Note that the country IS significant.  TreatmentWk1 as well.  However, category is NOT significant
# Model.During__treatment_country_tracks_overrides <- lm(`During_Experiment` ~ TreatmentWk1 * country_code * discretized_tracks * OverridePerc, data=DT.EU_aggd.deltaunits)
# Anova.During__treatment_country_tracks_overrides <- anova(Model.During__treatment_country_tracks_overrides)
# Tukey.During__treatment_country_tracks_overrides <- TukeyHSD(aov(Model.During__treatment_country_tracks_overrides))
# print(names(Tukey.During__treatment_country_tracks_overrides))
# as.data.table(Tukey.During__treatment_country_tracks_overrides)[["TreatmentWk1:country_code"]][from_country_code == to_country_code]
# tail(as.data.table(Tukey.During__treatment_country_tracks_overrides), 1)[[1]][from_country_code == to_country_code] [!(zero_in_interval)]
# plot(Tukey.During__treatment_country_tracks_overrides)

## MODEL WITH OVERRIDE PERC -- no TRACKS
## Note that the country IS significant.  TreatmentWk1 as well.  However, category is NOT significant
Model.During__treatment_country_tracks <- lm(`During_Experiment` ~ TreatmentWk1 * country_code *                      relative_to_default * OverridePerc * multi_cd, data=DT.EU_aggd.deltaunits)
Model.During__treatment_country_tracks <- lm(`During_Experiment` ~ TreatmentWk1 * country_code * discretized_tracks * relative_to_default                          , data=DT.EU_aggd.deltaunits)
Model.During__treatment_country_tracks <- lm(`During_Experiment` ~ TreatmentWk1 * country_code * relative_to_default * OverridePerc , data=DT.EU_aggd.deltaunits)

## USING:  
Model.During__treatment_country_tracks <- lm(`During_Experiment` ~ TreatmentWk1 * country_code * relative_to_default                          , data=DT.EU_aggd.deltaunits)
Anova.During__treatment_country_tracks <- anova(Model.During__treatment_country_tracks)
Tukey.During__treatment_country_tracks <- TukeyHSD(aov(Model.During__treatment_country_tracks))

tmp_DT.ll <- as.data.table(Tukey.During__treatment_country_tracks)
cat(INFO, "\n")
for (tmp_nm in names(tmp_DT.ll)) {
  cat (" \n\n----------------- ", tmp_nm, " ---------------\n\n")
  tmp_DT <- tmp_DT.ll[[tmp_nm]]
  froms <- setdiff(extract("from_", tmp_DT), "from_TreatmentWk1")
  if (length(froms))
    # print(tmp_DT[Reduce("&", lapply(froms, function(fr) get(fr) == get(gsub("from_", "to_", fr))))] [!(zero_in_interval)] [orderch(names(tmp_DT)[c(3, 5)])] )
    print(tmp_DT[Reduce("&", lapply(froms, function(fr) get(fr) == get(gsub("from_", "to_", fr))))] [`p adj` < 0.1] [orderch(names(tmp_DT)[c(3, 5)])] )
  # tmp_DT[(`p adj` < .05)]
  else 
    # print(tmp_DT [!(zero_in_interval)] [orderch(names(tmp_DT)[c(3, 5)])] )
    print(tmp_DT [`p adj` < 0.005] [orderch(names(tmp_DT)[c(3, 5)])] )
}; cat("\n", INFO, "\n")


&&& RESULTS &&&
---------------
  10.99 / 9.99  Stat significant from 8.99 but not from each other
  GB Different from ES/DE/FR

  Multi CDs in Germany

---------------
&&& RESULTS &&&

&&&& LEFT OFF HERE &&&&&&&&&
DT.EU_aggd.deltaunits[, pairwise.t.test(x=During_Experiment, g=TreatmentWk1)]
DT.EU_aggd.deltaunits[, pairwise.t.test(x=During_Experiment, g=country_code)]
&&&&&&&&&


#    if (FALSE) {
#      ## REMINDER TO SELF:   
#      ##
#      ##    "During" modeled agains "After" makes no sense.  They are NOT INDEPENDENT. 
#      ##    By Definition:   "During" :=  "Wk.0" - "Wk.-1"
#      ##                     "After"  :=  "Wk.1" - "Wk.0"
#      ##                     They both depend on Wk.0 !!
#      ##
#      anova(lm(`During_Experiment` ~ `Before_Experiment` * category * TreatmentWk1 * country_code, data=DT.EU_aggd.deltaunits))
#      ggplot(DT.EU_aggd.deltaunits, aes_string(x="`Before_Experiment`", y="`During_Experiment`", color="TreatmentWk1")) + geom_point(alpha=0.3) + legendtop()
#    }

## ----------------------------------------- ##
# setnames(DT.EU_aggd.deltaunits, gsub("_Experiment", "\nExperiment", names(DT.EU_aggd.deltaunits)))
## ----------------------------------------- ##
notch <- TRUE
setkeyIfNot(DT.EU_aggd.delta, "store_name", "transac_type_abbr")
P.deltaunits_new <- 
DT.EU_aggd.delta[transac_type_abbr != "DV", { list(list(
    ggBoxplotWithDots(DT.EU_aggd.delta[.BY], x="TimePeriod", y="deltaunits", color="TimePeriod", colDotgroup="TimePeriod", facet_formula=". ~ TreatmentWk1", jwidth=0.2, dots_alpha=0.2, ylims=c(-10, 10), title=sprintf("%s, %s", .BY[["store_name"]], .BY[["transac_type_abbr"]]), xlab="", x_angledtext=0.8, notch=notch) + ylim(-15, 15)
    ))}
  , keyby=list(store_name, transac_type_abbr)
  ]$V1
printToPDF(P.deltaunits_new, height=4, width=4, paginate=TRUE, pdfFunc="pdf")


## Color by TimePeriod, x is COUNTRY -- no dots
P.by_country <- 
  ggBoxplotWithDots(DT.EU_aggd.delta[(is_iTunesDA)][, TimePeriod := gsub("_", "\n", TimePeriod)], x="country_code", y="deltaunits", color="TimePeriod", colDotgroup="TimePeriod", facet_formula=". ~ TreatmentWk1", jwidth=0.2, dots_alpha=0.2, title=sprintf("%s, %s", .BY[["store_name"]], .BY[["transac_type_abbr"]]), xlab="", x_angledtext=0.8, relativetext=0.7, dots_on = TRUE, violin=FALSE, notch=notch, legend="top", ylims=c(-6, 6))

## Color by TimePeriod, x is COUNTRY -- no dots
P.by_region_group_facet <- P.by_country + facet_grid("discretized_tracks ~ TreatmentWk1") + gg_hline(0, size=0.3, alpha=0.8)
printToPDF(P.by_region_group_facet, heigh=40, width=20)



ggplot(DT.EU_aggd.delta[(is_iTunesDA )][country_code %in% ctry], alpha=global_alpha) +
  aes(x=TimePeriod, y=deltaunits, color=country_code, group=upc) + 
  geom_point(alpha=global_alpha) + geom_line(alpha=global_alpha) + 
  facet_grid("category ~ TreatmentWk1") + 
  labs(title=paste0("Album Downloads for ", DT.country[.(ctry)]$country_name), y="Log of Units", x="") + 
  legendtop(notitle=TRUE) + angledtext() + ylim(-20, 20)

{
ggplot(DT.EU_aggd[(is_iTunesDA & !is.na(TestWk))][country_code %in% ctry], alpha=global_alpha) +
  aes(x=TestWk.dates, y=units, color=country_code, group=upc) + 
  geom_point(alpha=global_alpha) + geom_line(alpha=global_alpha) + 
  facet_grid("category ~ TreatmentWk1") + 
  labs(title=paste0("Album Downloads for ", DT.country[.(ctry)]$country_name), y="Log of Units", x="") + 
  legendtop(notitle=TRUE) + scale_y_log10(lim=c(1, 15)) + angledtext()

}


## Basic models for anova
model.revenue__cat_testwk <- lm(log_1p_revenue ~ category * TestWk, data=DT.EU_aggd)
model.units__cat_testwk   <- lm(log_1p_units   ~ category * TestWk, data=DT.EU_aggd)
anova(model.revenue__cat_testwk)
anova(model.units__cat_testwk)
