# &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& # && NEXT TODO: # (0) CROP the dates according to what we are predicting # (1) Reshape and Transform # (2) Then run models # Find the best model for iTunes Specifically # Forecast iTunes # Keeping in mind that goal is to forecast actual dollar ammount ... # ... Test robustness against forecating actual dollar ammount # If good, save it, move on to spotify # &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& setScienceIfNot("Acc_vs_Anal_2015", load=FALSE) setSubProj("iTunesForecast") ## create suffix, create_objects_for_quick_col_grab(verbose=FALSE) kCols.datestore <- c("date", "storeid") is_prediction_run <- FALSE if (.Pfm == "Linux") { ## CREATE THE TABLE DT.iTunes.acc_v_anal <- create_DT.iTunes.acc_v_anal( assignTo = "DT.iTunes.acc_v_anal" , re_pull=TRUE , include_country = FALSE , include_trans = TRUE , include_label = FALSE , include_sc_group = FALSE , add_asr , dont_crop_at_maxDate = is_prediction_run , confirm = !is_prediction_run , expand_all_dates = TRUE ) addRevenueFromWorksheet_(DT.iTunes.acc_v_anal) } else { if (!exists("DT.iTunes.acc_v_anal")) loadFromJesus("DT.iTunes.acc_v_anal") } ## Starting Dates ## Idenitfy the first and last non-na date for each column. { message ("These are the max/min dates per column: \n") print( rbind ( DT.iTunes.acc_v_anal[, c(type="Starting Date", lapply(.SD[, revAndUnitsAndASRCols, with=FALSE], function(x) {date[locateFirstNonNA(x)]})), by=storeid, .SDcols=c("date", revAndUnitsAndASRCols)] , DT.iTunes.acc_v_anal[, c(type="Last Date", lapply(.SD[, revAndUnitsAndASRCols, with=FALSE], function(x) {date[locateLastNonNA(x)]})), by=storeid, .SDcols=c("date", revAndUnitsAndASRCols)] ) ) } # ## Make sure that each group has the full range of dates # setkeyIfNot(DT.iTunes.acc_v_anal, "date", superset.ok=TRUE) # DT.iTunes.acc_v_anal <- DT.iTunes.acc_v_anal[CJ_allDatesByCols(DT.iTunes.acc_v_anal, dateCol="date", universal.range=TRUE)] ## Clean up the 'months_back' column if (all(DT.iTunes.acc_v_anal[, lunique(removeNA(months_back_TRANSFORMED)), by=date][, V1])) DT.iTunes.acc_v_anal[, "months_back_TRANSFORMED" := unique(removeNA(months_back_TRANSFORMED)), by=date] ## < see where the missing dates where > cat("The missing dates for iTunes where here: \n") print(DT.iTunes.acc_v_anal[is.na(transac_type_abbr)]) ## Make Wide DT.iTunes.acc_v_anal.wide <- make_DT.transform_wide(DT.iTunes.acc_v_anal) warning("2015-02-10 - REMINDER TO RICK: Remember to add the columns for Rasrp increase on itself", call.=FALSE) stopifnot(exists("DT.iTunes.acc_v_anal.pre_transform")) stopifnot(exists("DT.iTunes.acc_v_anal.transform_wide")) ## MODEL IT