Skip to content

Digital Analytics Blog

von Marcus Stade

Menu
Menu
Workflow für Forecast in Google Analytics

Forecasting Daten in Google Analytics abgleichen

Posted on 20. April 202023. April 2020 by mstade

Forecasting-Algorithmen finden heute in zahlreichen Feldern Anwendung. Auch Google Analytics Daten sind dabei ein geeigneter Ausgangspunkt. Allerdings ist die Validierung des Forecasts, also der Abgleich, ob die Zahlen im Forecast mit wirklich realisierten Zahlen übereinstimmen, nicht im Interface out-of-the-box möglich. Also bauen wir uns hierfür ein Tool.

Die Daten für Forecast

Als einfaches Startbeispiel erstellen wir einen Forecast der Sessions. Als erstes benötigen wir die Rohdaten, also einen Custom-Report aus Google Analytics, der das Datum und die Anzahl der Sessions wiedergibt. Der Report sollte mehrere Monate an Daten umfassen und das Enddatum sollte der gestrige Tag sein.

Custom Report für Zeitreihen-Forecast

Wir exportieren der Report als Excel File. Damit haben wir eine Zeitreihe der Sessions. Für die weitere Bearbeitung löschen wir das erste Tabellenblatt (Summary) und auf dem verbleibenden Tabellenblatt entfernen wir die Zeitangaben, so dass nur noch die Sessions verbleiben. Die Datei speichern wir als TimeSeries_Session.xlsx.

Session Report

ARIMA-Modell

Um den Forecast zu erstellen, nutzen wir R. R bietet eine Reihe von Bibliotheken, die entsprechende Algorithmen vorimplementiert mitbringen. Für einen ersten Forecast bietet sich das ARIMA-Modell (ARIMA = autoregressive integrated moving average) an.

Kurz (und oberflächlich) erklärt wird ein ARIMA-Modell erstellt, das bestmöglich auf die Zeitreihe passt und dann zukünftige Werte vorhersagt. Für kurzfristige Vorhersage ist es daher gut geeignet. Es arbeitet mit einer gewichteten Summe aus Messwerten, einer gewichteten Summe aus Zufallseinflüssen und verlangt, dass eine sogenannte Stationarität, also den gleichen Erwartungswert und die gleiche Varianz der Zeitreihe zu allen Zeitpunkten.

Die wird im ARIMA-Modell durch drei Parameter(p,d,q) als Integer ausgedrückt:

  • p: Nicht saisonaler autoregressiver Polynomgrad
  • d: Grad der nicht saisonalen Integration
  • q: Nicht saisonaler gleitender durchschnittlicher Polynomgrad

Mehr zum ARIMA-Modell: https://en.wikipedia.org/wiki/Autoregressive_integrated_moving_average

Diese Parameter müssen nicht selbst festgelegt werden, sondern können errechnet werden. Der erste Teil des Quellcodes übernimmt daher das Einlesen der Excel-Datei mit den Session-Daten, und erstellt das ARIMA-Modell:

# Die benutzen Bibliotheken importieren - falls nicht bereits vorhanden, mit install(forecast) etc. installieren
library(forecast)
library(tseries)
library(readxl)

#Datei einlesen
file <- read_excel('Pfad zu TimeSeries_Session.xlsx') 

#Zeitreihe erstellen, frequency gibt die Abstände (1=täglich) und start das Startdatum an
session <- ts(retail, frequency=1)

#Arima Model berechnen
arimaModel <- auto.arima(session)

Nachdem das Modell erstellt wurde, kann der Forecast berechnet werden. Hierfür können zwei Parameter angegeben werden. Einerseits wird confidence übergeben, zum andere der Parameter h. Confidence bestimmt die prozentuale Sicherheit der Vorhersage aufgrund des Modells. Je höher diese Angegeben ist, umso breiter wird der Korridor der Vorhersage, also die Abweichung des berechneten Maximal- und Minimalwertes für die Vorhersage zu einem Zeitpunkt. h gibt die Anzahl der vorherzusagenden Zeitpunkte an. Wird h=10 gewählt, sind es zehn Zeitpunkte im Abstand der Zeitreihe, auf der das Modell basiert.

#Forecast erstellen
forecastARIMA <- forecast(arimaModel, level = c(60), h = 10)

#Datenpunkt ansehen
forecastARIMA

#Datenpunkte graphisch darstellen
 autoplot(forecastARIMA)

Eine Visualisierung der Vorhersage verdeutlicht das:

ga-forecast-plot-blue

Die blaue Linie stellt den Mittelwert des Korridors (blau) dar. Nachdem die Vorhersage erstellt wurde, speichern wir diese Werte nun in einer CSV Datei.

Wir speichern den oberen, unteren, und mittleren Vorhersagewert. Um die Zeitreihen in der richtigen Reihenfolge zu halten, fügen wir einen Index an die Werte an, sowie am Ende eine 0, die wir später noch benötigen.

# Index für Datenwerte erzeugen - 1 bis 10 da 10 Datenpunkte
index<-c(1:10)

# Wert mit 0 (= false) für Send-Flag
send<-0

# Verbinden des Index, der Forecast-Werte und des Send Flags in einen dataframe

df<-cbind(index,forecastARIMA$mean,forecastARIMA$upper, forecastARIMA$lower,send)

#dataframe ansehen
df

#df in CSV schreiben
write.csv(df,"Pfad zu Speichern von forecast-session.csv", quote = FALSE, row.names = FALSE)
Forecast-Werte als CSV

Den Forecast nach Google Analytics senden

Um die Daten des Forecasts mit den Daten in Google Analytics abzugleichen, ist es notwendig, die jeweilige Zeitreihe zum richtigen Zeitpunkt nach Google Analytics zu senden. Hierfür benutzen wir die Google Cloud Platform:

Workflow für Forecast in Google Analytics

Die Daten zum Forecast speichern wir in BigQuery. Dafür wird ein Table mit folgenden Schema erstellt und die Datei mit den Forecast-Zahlen importiert. Die in die Daten angefügte Null, wird nun zu einem Marker (True/False), welche Daten bereits gesendet wurden. Nach dem Import sind alle Zeilen auf False, da noch keine Daten gesendet wurden.

BigQuery Schema

Nun benötigen wir eine Cloud-Function, die einmal am Tag (entsprechend dem Abstand der Zeitreihen) die Höhe der vorhergesagten Sessions für diesen Tag erzeugt. Zusätzlich erzeugen wir Sessions in Höhe des oberen und unteren Vorhersagewert. Alle Events werden mit unterschiedlichen ClientIDs erzeugt, damit die Session im Interface von Google Analytics separiert werden können. Dafür eignen sich Events. Die Events werden mit einer nicht existenten ClientID per Measurement-Protocol erzeugt.

Event-Category ist dabei „Forecast“, Event-Action die jeweilige Zurodnung der Sessions (Mean, Upper, Lower) und Event-Label der Wert. Optional kann nach noch eine Custom Dimension mitgesendet werden, um den Measurement-Protocol Traffic von den gesammelten Daten auf der Webseite zu unterscheiden. Nachdem die Daten gesendet wurden, wird das Flag Send auf true gesetzt.

Die Cloud-Function ist dabei einfach aufgebaut:

CloudFunction-Forecast

Diese wird über einen HTTP-Trigger ausgelöst. Wir möchten diese Function jedoch nicht täglich manuell starten, daher nutzen wir den Cloud Scheduler, der die Function mit der Einstellung 30 23 * * * jeden Tag um 23:30 startet.

Cloud Scheduler für Forecast

Google Analytics Konfiguration

Da wir per Measurement Protocol Sessions erzeugen, sollten diese Daten nicht in Views einlaufen, die für andere Auswertungen genutzt werden. Daher erstellen wir einen neuen View mit den gleichen Filtern wie die im View, aus denen der Report für das ARIMA Modell erstellt wurde. Zudem werden zu allen anderen Views Filter hinzugefügt, die die Events herausfiltern. Dies kann auf Basis der Event-Category oder der Custom-Dimension (wie im Bild) erfolgen

Filter für Measurement Protocol Forecast

Auswertung in Google Analytics

Für den Vergleich unseres Session-Forecast mit realen Zahlen ist nun nur noch die Erstellung von vier Segmenten erforderlich:

Web Users:

Forecast Webusers

Forecast Mean:

Forecast Mean

Forecast Upper:

Forecast Upper

Forecast Lower:

Forecast Lower

Auf einen Blick können nun die Werte direkt im Interface verglichen werden, nachdem die Cloud Function ausgeführt wurde (blau: reale User, orange: Arima Mittelwert, grün: Arima oberer Werte, Lila: Arima unterer Wert):

ga-forecast-arima

Wofür benötige ich das?

Sessions, Conversions, oder Ausgaben und viele andere Zeitreihen eigenen sich für einen Forecast. Doch nicht alle Daten liefern immer gute Forecasts. Der Abgleich von Ist-Zahlen mit vorberechneten Zahlen hilft einerseits, die Qualität der Vorhersage einzuschätzen, das heißt wie genau das Vorhersage-Modell ist. Dabei können die Zahlen direkt mit den von Google Analytics erfassten Zahlen kombiniert, gefiltert, etc. werden und so Auswirkungen für Abweichungen vom Modell mit Acquistion oder Conversion-Daten in Verbindung gebracht werden.

Zudem werden die Vorhersage-Daten und deren Abgleich damit auch anderen Nutzergruppen zugänglich gemacht, die bisher wenig Einblick in die Vorhersagen und deren Qualität hatten.

Dennoch ist diese Lösung eher nicht für den produktiven Einsatz geeignet, da evtl. die Daten auch in einem Dashboard aggregiert werden können. Zudem werden viele Hits erzeugt. Diese Lösung ist ein PoC und soll eher als Anregung dienen.

An dieser Stelle auch einen herzlichen Dank an Markus Baersch, der immer sehr konstruktives Feedback zu solchen Ideen beísteuert.

1 thought on “Forecasting Daten in Google Analytics abgleichen”

  1. Pingback: BP 3.09: Warum App + Web noch nicht soweit ist Podcast

Comments are closed.

Keep in Touch

Supporter: InPignus GmbH

ImPignus

mohrstade

mohrstade.de

Analytics Pioneers

Schlagwörter

App+Web App-Tracking Basic Big Query Customer Data Platform DataQuality DataStudio Events Google Analytics für Firebase ITP Machine Learning Property PWA Quick-Tipp User-Journey Wordpress Überblick

Podcast Empfehlung:

beyond pageview

Neueste Beiträge

  • Tag Management Platform: Commanders Act Platform X – DataCollection (Teil 2)
  • Tag Management Platform: Übersicht (Teil 1)
  • IP und User Agent Identifier: Nachteile
  • GA4 Recipes: Machine Learning Features für Predictive Audiences in anderen Tools nutzen, am Beispiel von Tealium AudienceStream
  • Quick Tipp: GA4 Configuration Tag vs. Universal Analytics Setting Variable – Sequence matters

Kategorien

  • Allgemein
  • Cloud
  • Dashboard
  • Firebase Analytics
  • Google Analytics
  • Google Analytics 4 (App+Web)
  • Google Optimize
  • Google Tag Manager
  • Machine Learning
  • Matomo
  • Tag Management

Links

  • Datenschutzerklärung
  • Hear Me Speak
  • Impressum
  • Meet & Eat
  • Über den Blog
©2025 Digital Analytics Blog | Built using WordPress and Responsive Blogily theme by Superb