Prognostisera försäljning från Google Analytics med R till Slack

Fördjupad analys med R

För en produktanalytiker eller statistiker är det modulbaserade programmeringsspråket R gårdagens nyheter. Jag har medvetet valt att exkludera R från min verktygslåda tills att jag tvingats hantera större datamängder som får Excel att klappa ihop och gå för dagen. Men även som digital analytiker kommer du förr eller senare behöva gå ner i en datasjö bestående av stora mängder data från olika källor. Förmodligen har du redan idag stött på hinder i Google Analytics med samplad data eller hög kardinalitet och då behövs alternativa och mer effektiva tillvägagångssätt än att exportera CSV-filer till Excel. alt

Även om Tableau hanterar stora datamängder effektivt med populerade förslag på visualisering beroende på mätetal och dimensioner är effektiviteten i R svårslagna om du utför repetitivt arbete med rapportering.

Vad är R?

R är ett modulbaserat programmeringsspråk (baserat på S) främst anpassat för att hantera större datamängder och genomföra statistiska beräkningar omvandlade till visuella grafer med hjälp av färdiga bibliotek som användare själva kan lägga till. Arbetar du idag med analys och rapportering från ex. Google Analytics kan du med R effektivt återanvända script genom att byta GA Client ID för att generera identiska rapporter från olika profiler. Strukturkapital FTW!

Exempel på fördelar med R

  • Gratis (Open source)
  • Beräknar större datamängder
  • Uppsjö färdiga bibliotek för modellering/visualiseringar
  • Mängder av referensmaterial, exempel och online utbildningar
  • Snabb, beräkningar hanteras av din dators internminne
  • Relativt lite kod krävs för enklare grafer
  • Möjliggör effektiv återanvändning av script

Har du inte arbetat med R tidigare, men är van att behandla data från Google Analytics med ex. Query Explorer skulle jag varmt rekommendera att gräva där du står och börja med Michal Brys guide: Using Google Analytics with R och även läsa Tim Wilson's post From 0 to R With Google Analtyics. Även om du saknar praktisk erfarenhet av programmering, kommer du relativt långt genom att laborera med färdiga exempel. Vill du börja lägga grunden innan taket finns gratiskurser på Udacity, Data Analysis with R, Codeschool samt Lynda.com. Support finns bl.a på Stack Overflow samt i Slack-kanalen #measure. Har du fler tips på Communityn med färdiga script mot Google Analytics så kommentera gärna artikeln.

Förutspå försäljning med Google Analytics och R

Här följer ett exempel som hämtar genomförda transaktioner senaste 365 dagarna från Google Analtyics för att prognostisera dagens försäljning samt utvärdera huruvida gårdagerns försäljning var högre eller lägre mot föregående år.

Scriptet hanterar följande steg

  • Hämtning av transaktioner från Google Analytics
  • Prognos för morgondagens försäljning med ARIMA moddeling
  • Beräknar jämförelse mot föregående år
  • Prognos + jämförelsetal skickas till Google Sheets
  • Zapier pushar sedan information från Google Sheets till Slack

alt

Installera RStudio

Exemplet kräver att du har RStudio installerat på din dator (Mac/PC) samt tillgång till en Google Analytics vy med fungerande E-handelsspårning. Vill du undvika att använda R finns en genväg med pluginet Supermetrics till Google Sheets, nackdelen är kostnaden för schemalagd rapportering, hantering av samplad data och Google Sheets förenklade funktion för att beräkna forecast.

Steg för steg

(Mer utförlig dokumentation finns i bifogad kod längre ner i artiklen). Inled med att installera de bibliotek som krävs för hämtning av data från Google Analytics, visualisering samt för att skicka information till Google Sheets.

Installera bibliotek
install(bibliotek)

Hämta in relaterade bibliotek
library(googleAnalyticsR)
library(ggplot2)
library(googlesheets)
library(forecast)

Authensierar & hämtar data från Google Analytics
ga_auth()
my_id <- 123456789

Skapar en Data Frame (df1) med mätetal och dimensioner från Google Analytics
df1 <- google_analytics_4(my_id,
date_range = c("365daysAgo", "yesterday"),
metrics = c("transactions", "sessions"),
dimensions = c("date")

Möjliggör sekventiell hämtning av data för att undvika sampling anti_sample = TRUE)

Kontrollerar hämtning genom att skriva ut värden i df1. head(df1) alt

Visualisera ditt dataset med ggplot för att undersöka ev. anomalier. Undvik oönskade avvikelser för senare prognostisering.

ggplot(df1,aes(x=date,y=transactions,group=1)) +
geom_line() +
geom_smooth() +
theme(axis.text.x = element_text(angle = 90, hjust = ),
panel.background = element_blank())

alt

Beräkna prognos med ARIMA utifrån hämtad data på daglig basis
transactions <- ts(df1, start=c(2016,5), end=c(2017,4),frequency=365)
transactionsforecast <- forecast(auto.arima(df1$transactions))

Deklarera ny Data Frame med prognostiserade värden
df2 = data.frame(transactionsforecast)
df2 <- round(df2, 1)

Prognostiserade intäkter skickas till ett på förhand skapat Google Sheets med namngivna flikar (Sheet, Forecast, Positive, Negative) Glöm inte dela ditt Sheet publikt innan scriptet körs.
gs_auth()
PredictTomorrow <- gs_url("https://docs.google.com.../edit?usp=sharing")
PredictTomorrow <- PredictTomorrow %>%
gs_edit_cells(ws = "Sheet", input = df2, trim = TRUE)

Jämför antalet genomförda transaktioner samma dag i år mot föregående år.
LastYearTransactions <- head(df1$transactions,1)
YesterdaysTransactions <- tail(df1$transactions,1)

Beräkna skillanden i % mot föregående år
TransactionDifference = (YesterdaysTransactions - LastYearTransactions)/LastYearTransactions * 100
TransactionDifference = as.integer(TransactionDifference)

Avslutningsvis görs en beräkning för att skicka jämförelsetalet till olika flikar beroende på föregående års genomförda transaktioner var mer eller mindre mot i år.
dftd = data.frame(TransactionDifference)

if (TransactionDifference > 0) { PredictTomorrow <- PredictTomorrow %>% gs_edit_cells(ws = "Positive", input = dftd, trim = TRUE) } else if (TransactionDifference < 0) { PredictTomorrow <- PredictTomorrow %>% gs_edit_cells(ws = "Negative", input = dftd, trim = TRUE) }

Givetvis vill vi autoamtisera processen och slippa köra scriptet för varje uppdaterad prognos. Använder du Windows kan du schemalägga att scriptet körs vid en viss tidpunkt varje dygn och helt automatisera din rapportering med hjälp av Windows Task Schedule. För Mac kan crontab användas.

Kontrollera skickad data till Google Sheets

Kör scriptet och undersök att din data skickas och uppdateras korrekt vid körning.

  • Sheet: Resultastet av prognostiserad data
  • Forecast: Högst resp. lägsta prognostiserade värdet
  • Positive: Positivt jämförelsetal i % mot föregående år
  • Negative: Negativt jämförelsetal i % mot föregående år

alt

Autoamtisering med Zapier

Skapa två regler (jämförelse mot föregående år och prognostierad försäljning) i Zapier som lyssnar av förändringar i Google Sheets valda flikar och efter att celler uppdateras skickar din information vidare till Slack i vald kanal eller person. Glöm inte skriva in rubriker i den översta raden av ditt Google Sheet för att Zapier ska förstå vilken kolumn som förändring avser. Från Zapier har du fler redaktionella möjligheter att påverka meddelandets utformning innan det når valda mottagare.

alt

Regler i Zapier

  • Jämförelse mot föregående år - Sheet: Positve/Negative
  • Prognostiserad försäljning idag - Sheet: Forecast

Sammanfattning

Vi har alltså hämtat data från Google Analytics som prognostiseras och jämförs mot föregående år. Bearbetad data skickas därefter till Google Sheet som med hjälp av Zapier lyssnar av förändrat värde i cellerna och skickar därefter informationen vidare till i detta fall min Slackbot som skickar en notifiering.

alt

Med hjälp av denna information kan vi enklare styra mediaköp och huruvida vi förväntas nå daglig budget eller ej. Givetvis kan prognosen bytas ut att rapporteras på månadsbasis och fler värden än transaktioner. Fördelen är att justering kan göras med minimal insats eftersom vi enkom behöver modifiera mätetal och valda dimensioner i hämtningen från Google Analytics.

Exempel på prognostiserade värden;

  • Intäkt i SEK
  • Organisk trafik
  • Trafik från köpt media
  • Trafik från viss samarbetspartner
  • Specifika produkter
  • Mobila enheter

Lycka till!
/Fredrik

Intresserad av att gå med i Sveriges största Slack-kanal för digitala analytiker, konverteringsoptimerare och SEO-konsulter? Skriv in din mailadress i kommentarsfältet eller maila mig fredrik[@]insightworks.se för inbjudan.

Script (PredictTransactionsSpreadsheet.R)

Referenser
- How to install googleAnalyticsR
- Googlesheets package documentation
- Send mail in R
- Forecasting with Arima

Kommentarer