SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
GNU R, Google Analytics und Optimierung von
Google Adwords
Hinnerk Gnutzmann
data2day September 30, 2015
Zur Person: Hinnerk Gnutzmann
Gr¨under flexponsive UG (haftungsbeschr¨ankt)
E-Commerce Beratung
Fokus auf Data Analytics
Qualitatives User Testing
PhD Economics, European University Institute (2013)
Kontakt
mailto: gnutzmann@flexponsive.net
web: https://www.flexponsive.net/
t: @flexponsive
Worum geht es heute?
Erfolg von Marketing
schwer zu definieren
noch schwerer zu messen
Vor Big Data: “Half the money I spend on advertising is
wasted; the trouble is I don’t know which half.” (John
Wanamaker, 1838–1922)
Worum geht es heute?
Erfolg von Marketing
schwer zu definieren
noch schwerer zu messen
Vor Big Data: “Half the money I spend on advertising is
wasted; the trouble is I don’t know which half.” (John
Wanamaker, 1838–1922)
Nach Big Data: “(AdWords) brand keyword ads have no
measurable short-term benefits” (Blake et al., 2015) - 100%
wasted?
Worum geht es heute?
Erfolg von Marketing
schwer zu definieren
noch schwerer zu messen
Vor Big Data: “Half the money I spend on advertising is
wasted; the trouble is I don’t know which half.” (John
Wanamaker, 1838–1922)
Nach Big Data: “(AdWords) brand keyword ads have no
measurable short-term benefits” (Blake et al., 2015) - 100%
wasted?
Viele offene Fragen
Incrementality Debate: Verdr¨angen Kampagnen organische
Besucher?
Qualit¨at: Sind “gekaufte” Besucher gute oder schlechte
Kunden?
Heterogenit¨at: Wirken Kampagnen unterschiedlich nach
Kunde?
Agenda
1. Fallbeispiel Brand Keyword: Das Geheimnnis des
verschwindenden ROI f¨ur AdWords
2. Was kann man tun?
Attributionsmodelle
Kontrollierte Experimente
GNU R & Google Analytics: Ein Dream Team
3. Wie gehts?
Google Core Reporting API & GNU R
GA Query Explorer
Experiment in AdWords konfigurieren
4. Analyse mit GNU R
Data wrangling, sampling, etc.
GA Metriken replizieren
Regressionsanalyse
Fallbeispiel
Was ist passiert?
Das AdWord ist hochgradig relevant f¨ur die Suche
Navigational Query: Der Besucher will zur Telekom
Hat sich bereits f¨ur ein Telekom-Produkt entschieden?
Ergebnis: Das “wohl beste” Keyword im Account
Hervorragende CTR
Sehr gute Conversion on-site
CPC vielleicht gar nicht mal so hoch
Was ist passiert?
Das AdWord ist hochgradig relevant f¨ur die Suche
Navigational Query: Der Besucher will zur Telekom
Hat sich bereits f¨ur ein Telekom-Produkt entschieden?
Ergebnis: Das “wohl beste” Keyword im Account
Hervorragende CTR
Sehr gute Conversion on-site
CPC vielleicht gar nicht mal so hoch
Noch Fragen?
Was ist passiert?
Das AdWord ist hochgradig relevant f¨ur die Suche
Navigational Query: Der Besucher will zur Telekom
Hat sich bereits f¨ur ein Telekom-Produkt entschieden?
Ergebnis: Das “wohl beste” Keyword im Account
Hervorragende CTR
Sehr gute Conversion on-site
CPC vielleicht gar nicht mal so hoch
Noch Fragen?
Das organische Ergebnis ist das gleiche!
Was w¨are wenn. . . es nur das organische Ergebnis g¨abe?
Was sagt Google?
Die eBay Studie
Blake et al. (2015), “Consumer Heterogeneity and Paid
Search Effectiveness: A Large Scale Field Experiment”
Feldexperiment: Funktioniert AdWords f¨ur eBay?
Sehr kontroverse Ergebnisse:
1. Click Substition: Wenn das Brand AdWord wegf¨allt, klicken
fast alle Nutzer auf das organische Ergebnis
2. Informative Advertising: AdWords funktionieren, wenn Sie
einen Besucher ¨uber ein Angebot informieren, von dem er
noch nichts wusste
AdWords hat fast keinen Effekt auf Ums¨atze bei
Bestandskunden
H¨atten auch sonst den Weg zu eBay gefunden!
Was kann man tun? Attributionsmodelle
Was kann man tun? Kontrolliertes Experiment
Nach Zufallsprinzip Behandlungs & Kontrollgruppe
ausw¨ahlen, z.B.
Pro Benutzer: A/B Testing
Nach geographischer Region
Annahme: Ohne Experiment verhalten sich beide Gruppen
¨ahnlich
Auswertung: difference in differences
Unterschied in Kontrollgruppe: Noise
Unterschied in Behandlungsgruppe: Effekt + Noise
Metrik: ∆TREATED − ∆UNTREATED
Vorteile geographisches Experiment:
kein multi-device Tracking notwendig
einfache Integration mit externen Daten
komplizierte Customer Journeys k¨onnen abgebildet werden
Caveat: Geographische Gruppen m¨ussen wirklich vergleichbar
sein, mobile Benutzer
GNU R und Google Analytics: Dream Team
1. Auswahl der Behandlungs- und Kontrollgruppe
R installieren, Sample mit GNU R erzeugen
Export: Copy&paste zu AdWords
2. Datensammlung: macht Marketing!
Google Analytics oft schon vorhanden und konfiguriert
3. Aggregierung und Abfrage
In der Cloud: Google Analytics mit Query Explorer
Integration mit RGoogleAnalytics
4. Auswertung: Sch¨atzung und Visualisierung
Alle notwendigen Funktionen als Pakete in R vorhanden
R installieren
Open Source f¨ur Windows/Mac/Linux etc.
GNU R: https://www.r-project.org/
RStudio IDE: http://www.rstudio.com
Cheat Sheets helfen weiter!
R Reference Card
https://www.rstudio.com/resources/cheatsheets/
Paketmanagement ¨uber CRAN
install.package(’RGoogleAnalytics’)
install.package(’plm’);
install.package(’ggplot2’);
Behandlungsgruppe erzeugen
download.file(’https://goo.gl/9ENFV7’,
destfile=’geoid.csv’);
regions <- read.csv(’geoid.csv’);
states<-regions[which(regions$Country.Code == ’DE’
& regions$Target.Type == ’State’
& regions$Status == ’Active’),];
set.seed(1);
states$isTreatment <- sample(c(0,1),
nrow(states), replace =T)
write.csv(states, file=’states.csv’);
# paste into AdWords
writeLines(as.vector(
states[which(states$isTreatment == ’1’),]$Canonical.Name),
file(’treatment.csv’));
Konfiguration Google AdWords I
Konfiguration Google Adwords II
Konfiguration Google Adwords III
Fertig
Warten
. . . auf die Ergebnisse
Google Analytics Core Reporting API & R
1. “App” erstellen
Google Developers Seite
Typ: Installed Application, Untertyp: Other
Ergebnis: Client ID und Client Secret
2. GA Profile ID herausfinden
Konfiguration GNU R
client.id <- ’xxxxxxxxxxxxxxx.apps.googleusercontent.com’;
client.secret <- ’xxxxxxxxxxxxxxx’;
analyticsProfileId <- ’111111111’;
# redirect to google, paste, code
require(RGoogleAnalytics);
token <- Auth(client.id, client.secret)
# save
save(token, file = ’gatoken.txt’);
# next time
ValidateToken(token);
Abfrage erstellen
query.list <- Init(start.date = "2015-01-01",
end.date = "2015-09-01",
dimensions = "ga:region,ga:date,ga:medium",
metrics = "ga:sessions,ga:transactionRevenue",
filter = "ga:country==Germany",
max.results = 50000,
sort = "-ga:date,ga:region",
table.id = paste0("ga:",analyticsProfileId));
ga.query <- QueryBuilder(query.list);
ga.data <- GetReportData(ga.query, token);
Tip: Query Explorer
Tip: Sampling vermeiden
> ga.data <- GetReportData(ga.query, token)
Status of Query:
The API returned 1393 results
The query response contains sampled data. It is based on
XX.XX % of your visits. You can split the query day-wise
in order to reduce the effect of sampling.
Set split_daywise = T in the GetReportData function
Note that split_daywise = T will automatically ....
“Sampling occurs automatically when more than 500,000
sessions (25M for Premium) are collected for a report,
allowing Google Analytics to generate reports more quickly for
those large data sets.”
Datenintegration
Wide Format: f¨ur jede Region und Zeit eine Zeile
Long Format: Region/Zeit/Dimensionen je eine Zeile (EAV)
require(reshape2);
w<- reshape(ga.data, timevar=’medium’,
idvar = c(’region’,’date’), direction=’wide’);
Datenintegration: Fast fertig
Merge: Wer ist in welcher Gruppe?
ds <- merge(w, states[,c(’Name’,’isTreatment’)],
by.x = ’region’, by.y = ’Name’, all.x = T)
Datenset steht bereit!
Komfortable DSL zur Datenmanipulation
Nutzung von Paketen um Code zu minimieren
Auswertung
K¨unstliche Daten zur Illustration: 90 Tage
50. Tag: Experiment startet in 8 Bundesl¨andern - AdWords aus
50. Tag: Ebenfalls Saisonende, Suchvolumen f¨allt ¨uberall 50%
Szenario: 100% der Besucher klicken organisch, wenn das
AdWord wegf¨allt
Beispiell¨ander - Randomisierung hat entschieden:
Bayern: Im Experiment, ab 50. Tag keine AdWords
Bremen: Nimmt nicht teil, AdWords laufen weiter
Ums¨atze in Bayern
Ums¨atze in Bremen
Kombiniert
ROI Kalkulation
> summary(lm(transactionRevenue.total ~ isTreatment.cpc,
data = sd.w))
...
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 105.2617 0.7253 145.13 <2e-16 ***
isTreatment.cpc -42.2907 1.5197 -27.83 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘
Residual standard error: 24.19 on 1438 degrees of freedom
Multiple R-squared: 0.35, Adjusted R-squared: 0.3496
F-statistic: 774.4 on 1 and 1438 DF, p-value: < 2.2e-16
Differences in Differences
> require(plm)
> summary(plm(transactionRevenue.total ~ isTreatment.cpc,
data=sd.w, index=c("region", "date"), model="between"))
Coefficients :
Estimate Std. Error t-value Pr(>|t|)
(Intercept) 95.657436 0.052508 1821.7609 <2e-16 ***
isTreatment.cpc -0.125488 0.163005 -0.7698 0.4542
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘
Total Sum of Squares: 0.32187
Residual Sum of Squares: 0.3088
R-Squared : 0.040613
Adj. R-Squared : 0.035536
Welcher Unterschied wird gez¨ahlt?
Diskussion
Grundproblem: The Missing Counterfactual
wir wissen nicht, was sonst passiert sein k¨onnte
Hilfe: Experiment
Herausfoderung: Big Data without Big Code
Google Analytics & GNU R
Sehr reiche Toolbox
Ergebnis: Differences in Differences kann funktionieren
Annahmen beachten
Viel mit den Daten arbeiten

Weitere ähnliche Inhalte

Ähnlich wie Using GNU R and Google Analytics to optimize AdWords Bids

Werbeplanung.at SUMMIT 15 - Conversion Optimierung in Echtzeit - Andreas Berth
Werbeplanung.at SUMMIT 15 - Conversion Optimierung in Echtzeit - Andreas BerthWerbeplanung.at SUMMIT 15 - Conversion Optimierung in Echtzeit - Andreas Berth
Werbeplanung.at SUMMIT 15 - Conversion Optimierung in Echtzeit - Andreas BerthWerbeplanung.at Summit
 
Multi Channel Trichter bei Google Analytics - Wertbeitrag einzelner Quellen
Multi Channel Trichter bei Google Analytics - Wertbeitrag einzelner QuellenMulti Channel Trichter bei Google Analytics - Wertbeitrag einzelner Quellen
Multi Channel Trichter bei Google Analytics - Wertbeitrag einzelner Quellen121WATT GmbH
 
Google Analytics & Seo @seosixt wiesn 2014
Google Analytics & Seo @seosixt wiesn 2014Google Analytics & Seo @seosixt wiesn 2014
Google Analytics & Seo @seosixt wiesn 2014121WATT GmbH
 
Google Business Development Company Profile
Google Business Development Company ProfileGoogle Business Development Company Profile
Google Business Development Company ProfileEnzo Giannone
 
GAUC 2017 Workshop Saubere Webanalyse Prozesse aufziehen: Markus Vollmert (lu...
GAUC 2017 Workshop Saubere Webanalyse Prozesse aufziehen: Markus Vollmert (lu...GAUC 2017 Workshop Saubere Webanalyse Prozesse aufziehen: Markus Vollmert (lu...
GAUC 2017 Workshop Saubere Webanalyse Prozesse aufziehen: Markus Vollmert (lu...e-dialog GmbH
 
Digitale Transformation in der Finanzbranche
Digitale Transformation in der FinanzbrancheDigitale Transformation in der Finanzbranche
Digitale Transformation in der FinanzbrancheTWT
 
Studie: Wie Google Unternehmensumsätze steigert
Studie: Wie Google Unternehmensumsätze steigertStudie: Wie Google Unternehmensumsätze steigert
Studie: Wie Google Unternehmensumsätze steigertTWT
 
SEOKomm 2010: Long Tail PPC
SEOKomm 2010: Long Tail PPC SEOKomm 2010: Long Tail PPC
SEOKomm 2010: Long Tail PPC Ulf Weihbold
 
Google Analytics für Einsteiger
Google Analytics für EinsteigerGoogle Analytics für Einsteiger
Google Analytics für Einsteigerguest062667b
 
Clickstream Analysis with Spark
Clickstream Analysis with Spark Clickstream Analysis with Spark
Clickstream Analysis with Spark Josef Adersberger
 
Clickstream Analysis with Spark - Understanding Visitors in Real Time
Clickstream Analysis with Spark - Understanding Visitors in Real TimeClickstream Analysis with Spark - Understanding Visitors in Real Time
Clickstream Analysis with Spark - Understanding Visitors in Real TimeQAware GmbH
 
Google Analytics Konferenz 2013: S. Stepke & J. Oppermann: Attribution Modeling
Google Analytics Konferenz 2013: S. Stepke & J. Oppermann: Attribution ModelingGoogle Analytics Konferenz 2013: S. Stepke & J. Oppermann: Attribution Modeling
Google Analytics Konferenz 2013: S. Stepke & J. Oppermann: Attribution Modelinge-dialog GmbH
 
Web-Analyse ist keine Kür sondern Pflichtprogramm
Web-Analyse ist keine Kür sondern PflichtprogrammWeb-Analyse ist keine Kür sondern Pflichtprogramm
Web-Analyse ist keine Kür sondern Pflichtprogrammcrowdmedia GmbH
 
Programmatic Approach in Google Shopping
Programmatic Approach in Google ShoppingProgrammatic Approach in Google Shopping
Programmatic Approach in Google Shoppingsemrush_webinars
 
PERFORMIX.Wien 2016 – Conversionoptimierung durch Dynamisierung von Werbemitt...
PERFORMIX.Wien 2016 – Conversionoptimierung durch Dynamisierung von Werbemitt...PERFORMIX.Wien 2016 – Conversionoptimierung durch Dynamisierung von Werbemitt...
PERFORMIX.Wien 2016 – Conversionoptimierung durch Dynamisierung von Werbemitt...Werbeplanung.at Summit
 
DMEXCO 2010: Usability als neuer Rankingfaktor?!
DMEXCO 2010: Usability als neuer Rankingfaktor?!DMEXCO 2010: Usability als neuer Rankingfaktor?!
DMEXCO 2010: Usability als neuer Rankingfaktor?!Steven Broschart
 
Google Analytics Konferenz 2015: WORKSHOP: Enhanced ECommerce (Michaela Linha...
Google Analytics Konferenz 2015: WORKSHOP: Enhanced ECommerce (Michaela Linha...Google Analytics Konferenz 2015: WORKSHOP: Enhanced ECommerce (Michaela Linha...
Google Analytics Konferenz 2015: WORKSHOP: Enhanced ECommerce (Michaela Linha...e-dialog GmbH
 
Die 10 groeßten Fehler im eMarketing
Die 10 groeßten Fehler im eMarketingDie 10 groeßten Fehler im eMarketing
Die 10 groeßten Fehler im eMarketingAngelika Röck
 
Keywordrecherche, Keywordstrategien und Keywordtools - SMX 2019
Keywordrecherche, Keywordstrategien und Keywordtools - SMX 2019Keywordrecherche, Keywordstrategien und Keywordtools - SMX 2019
Keywordrecherche, Keywordstrategien und Keywordtools - SMX 2019121WATT GmbH
 

Ähnlich wie Using GNU R and Google Analytics to optimize AdWords Bids (20)

Werbeplanung.at SUMMIT 15 - Conversion Optimierung in Echtzeit - Andreas Berth
Werbeplanung.at SUMMIT 15 - Conversion Optimierung in Echtzeit - Andreas BerthWerbeplanung.at SUMMIT 15 - Conversion Optimierung in Echtzeit - Andreas Berth
Werbeplanung.at SUMMIT 15 - Conversion Optimierung in Echtzeit - Andreas Berth
 
Multi Channel Trichter bei Google Analytics - Wertbeitrag einzelner Quellen
Multi Channel Trichter bei Google Analytics - Wertbeitrag einzelner QuellenMulti Channel Trichter bei Google Analytics - Wertbeitrag einzelner Quellen
Multi Channel Trichter bei Google Analytics - Wertbeitrag einzelner Quellen
 
Google Search Console für SEO einsetzen!
Google Search Console für SEO einsetzen!Google Search Console für SEO einsetzen!
Google Search Console für SEO einsetzen!
 
Google Analytics & Seo @seosixt wiesn 2014
Google Analytics & Seo @seosixt wiesn 2014Google Analytics & Seo @seosixt wiesn 2014
Google Analytics & Seo @seosixt wiesn 2014
 
Google Business Development Company Profile
Google Business Development Company ProfileGoogle Business Development Company Profile
Google Business Development Company Profile
 
GAUC 2017 Workshop Saubere Webanalyse Prozesse aufziehen: Markus Vollmert (lu...
GAUC 2017 Workshop Saubere Webanalyse Prozesse aufziehen: Markus Vollmert (lu...GAUC 2017 Workshop Saubere Webanalyse Prozesse aufziehen: Markus Vollmert (lu...
GAUC 2017 Workshop Saubere Webanalyse Prozesse aufziehen: Markus Vollmert (lu...
 
Digitale Transformation in der Finanzbranche
Digitale Transformation in der FinanzbrancheDigitale Transformation in der Finanzbranche
Digitale Transformation in der Finanzbranche
 
Studie: Wie Google Unternehmensumsätze steigert
Studie: Wie Google Unternehmensumsätze steigertStudie: Wie Google Unternehmensumsätze steigert
Studie: Wie Google Unternehmensumsätze steigert
 
SEOKomm 2010: Long Tail PPC
SEOKomm 2010: Long Tail PPC SEOKomm 2010: Long Tail PPC
SEOKomm 2010: Long Tail PPC
 
Google Analytics für Einsteiger
Google Analytics für EinsteigerGoogle Analytics für Einsteiger
Google Analytics für Einsteiger
 
Clickstream Analysis with Spark
Clickstream Analysis with Spark Clickstream Analysis with Spark
Clickstream Analysis with Spark
 
Clickstream Analysis with Spark - Understanding Visitors in Real Time
Clickstream Analysis with Spark - Understanding Visitors in Real TimeClickstream Analysis with Spark - Understanding Visitors in Real Time
Clickstream Analysis with Spark - Understanding Visitors in Real Time
 
Google Analytics Konferenz 2013: S. Stepke & J. Oppermann: Attribution Modeling
Google Analytics Konferenz 2013: S. Stepke & J. Oppermann: Attribution ModelingGoogle Analytics Konferenz 2013: S. Stepke & J. Oppermann: Attribution Modeling
Google Analytics Konferenz 2013: S. Stepke & J. Oppermann: Attribution Modeling
 
Web-Analyse ist keine Kür sondern Pflichtprogramm
Web-Analyse ist keine Kür sondern PflichtprogrammWeb-Analyse ist keine Kür sondern Pflichtprogramm
Web-Analyse ist keine Kür sondern Pflichtprogramm
 
Programmatic Approach in Google Shopping
Programmatic Approach in Google ShoppingProgrammatic Approach in Google Shopping
Programmatic Approach in Google Shopping
 
PERFORMIX.Wien 2016 – Conversionoptimierung durch Dynamisierung von Werbemitt...
PERFORMIX.Wien 2016 – Conversionoptimierung durch Dynamisierung von Werbemitt...PERFORMIX.Wien 2016 – Conversionoptimierung durch Dynamisierung von Werbemitt...
PERFORMIX.Wien 2016 – Conversionoptimierung durch Dynamisierung von Werbemitt...
 
DMEXCO 2010: Usability als neuer Rankingfaktor?!
DMEXCO 2010: Usability als neuer Rankingfaktor?!DMEXCO 2010: Usability als neuer Rankingfaktor?!
DMEXCO 2010: Usability als neuer Rankingfaktor?!
 
Google Analytics Konferenz 2015: WORKSHOP: Enhanced ECommerce (Michaela Linha...
Google Analytics Konferenz 2015: WORKSHOP: Enhanced ECommerce (Michaela Linha...Google Analytics Konferenz 2015: WORKSHOP: Enhanced ECommerce (Michaela Linha...
Google Analytics Konferenz 2015: WORKSHOP: Enhanced ECommerce (Michaela Linha...
 
Die 10 groeßten Fehler im eMarketing
Die 10 groeßten Fehler im eMarketingDie 10 groeßten Fehler im eMarketing
Die 10 groeßten Fehler im eMarketing
 
Keywordrecherche, Keywordstrategien und Keywordtools - SMX 2019
Keywordrecherche, Keywordstrategien und Keywordtools - SMX 2019Keywordrecherche, Keywordstrategien und Keywordtools - SMX 2019
Keywordrecherche, Keywordstrategien und Keywordtools - SMX 2019
 

Using GNU R and Google Analytics to optimize AdWords Bids

  • 1. GNU R, Google Analytics und Optimierung von Google Adwords Hinnerk Gnutzmann data2day September 30, 2015
  • 2. Zur Person: Hinnerk Gnutzmann Gr¨under flexponsive UG (haftungsbeschr¨ankt) E-Commerce Beratung Fokus auf Data Analytics Qualitatives User Testing PhD Economics, European University Institute (2013) Kontakt mailto: gnutzmann@flexponsive.net web: https://www.flexponsive.net/ t: @flexponsive
  • 3. Worum geht es heute? Erfolg von Marketing schwer zu definieren noch schwerer zu messen Vor Big Data: “Half the money I spend on advertising is wasted; the trouble is I don’t know which half.” (John Wanamaker, 1838–1922)
  • 4. Worum geht es heute? Erfolg von Marketing schwer zu definieren noch schwerer zu messen Vor Big Data: “Half the money I spend on advertising is wasted; the trouble is I don’t know which half.” (John Wanamaker, 1838–1922) Nach Big Data: “(AdWords) brand keyword ads have no measurable short-term benefits” (Blake et al., 2015) - 100% wasted?
  • 5. Worum geht es heute? Erfolg von Marketing schwer zu definieren noch schwerer zu messen Vor Big Data: “Half the money I spend on advertising is wasted; the trouble is I don’t know which half.” (John Wanamaker, 1838–1922) Nach Big Data: “(AdWords) brand keyword ads have no measurable short-term benefits” (Blake et al., 2015) - 100% wasted? Viele offene Fragen Incrementality Debate: Verdr¨angen Kampagnen organische Besucher? Qualit¨at: Sind “gekaufte” Besucher gute oder schlechte Kunden? Heterogenit¨at: Wirken Kampagnen unterschiedlich nach Kunde?
  • 6. Agenda 1. Fallbeispiel Brand Keyword: Das Geheimnnis des verschwindenden ROI f¨ur AdWords 2. Was kann man tun? Attributionsmodelle Kontrollierte Experimente GNU R & Google Analytics: Ein Dream Team 3. Wie gehts? Google Core Reporting API & GNU R GA Query Explorer Experiment in AdWords konfigurieren 4. Analyse mit GNU R Data wrangling, sampling, etc. GA Metriken replizieren Regressionsanalyse
  • 8. Was ist passiert? Das AdWord ist hochgradig relevant f¨ur die Suche Navigational Query: Der Besucher will zur Telekom Hat sich bereits f¨ur ein Telekom-Produkt entschieden? Ergebnis: Das “wohl beste” Keyword im Account Hervorragende CTR Sehr gute Conversion on-site CPC vielleicht gar nicht mal so hoch
  • 9. Was ist passiert? Das AdWord ist hochgradig relevant f¨ur die Suche Navigational Query: Der Besucher will zur Telekom Hat sich bereits f¨ur ein Telekom-Produkt entschieden? Ergebnis: Das “wohl beste” Keyword im Account Hervorragende CTR Sehr gute Conversion on-site CPC vielleicht gar nicht mal so hoch Noch Fragen?
  • 10. Was ist passiert? Das AdWord ist hochgradig relevant f¨ur die Suche Navigational Query: Der Besucher will zur Telekom Hat sich bereits f¨ur ein Telekom-Produkt entschieden? Ergebnis: Das “wohl beste” Keyword im Account Hervorragende CTR Sehr gute Conversion on-site CPC vielleicht gar nicht mal so hoch Noch Fragen? Das organische Ergebnis ist das gleiche! Was w¨are wenn. . . es nur das organische Ergebnis g¨abe?
  • 12. Die eBay Studie Blake et al. (2015), “Consumer Heterogeneity and Paid Search Effectiveness: A Large Scale Field Experiment” Feldexperiment: Funktioniert AdWords f¨ur eBay? Sehr kontroverse Ergebnisse: 1. Click Substition: Wenn das Brand AdWord wegf¨allt, klicken fast alle Nutzer auf das organische Ergebnis 2. Informative Advertising: AdWords funktionieren, wenn Sie einen Besucher ¨uber ein Angebot informieren, von dem er noch nichts wusste AdWords hat fast keinen Effekt auf Ums¨atze bei Bestandskunden H¨atten auch sonst den Weg zu eBay gefunden!
  • 13. Was kann man tun? Attributionsmodelle
  • 14. Was kann man tun? Kontrolliertes Experiment Nach Zufallsprinzip Behandlungs & Kontrollgruppe ausw¨ahlen, z.B. Pro Benutzer: A/B Testing Nach geographischer Region Annahme: Ohne Experiment verhalten sich beide Gruppen ¨ahnlich Auswertung: difference in differences Unterschied in Kontrollgruppe: Noise Unterschied in Behandlungsgruppe: Effekt + Noise Metrik: ∆TREATED − ∆UNTREATED Vorteile geographisches Experiment: kein multi-device Tracking notwendig einfache Integration mit externen Daten komplizierte Customer Journeys k¨onnen abgebildet werden Caveat: Geographische Gruppen m¨ussen wirklich vergleichbar sein, mobile Benutzer
  • 15. GNU R und Google Analytics: Dream Team 1. Auswahl der Behandlungs- und Kontrollgruppe R installieren, Sample mit GNU R erzeugen Export: Copy&paste zu AdWords 2. Datensammlung: macht Marketing! Google Analytics oft schon vorhanden und konfiguriert 3. Aggregierung und Abfrage In der Cloud: Google Analytics mit Query Explorer Integration mit RGoogleAnalytics 4. Auswertung: Sch¨atzung und Visualisierung Alle notwendigen Funktionen als Pakete in R vorhanden
  • 16. R installieren Open Source f¨ur Windows/Mac/Linux etc. GNU R: https://www.r-project.org/ RStudio IDE: http://www.rstudio.com Cheat Sheets helfen weiter! R Reference Card https://www.rstudio.com/resources/cheatsheets/ Paketmanagement ¨uber CRAN install.package(’RGoogleAnalytics’) install.package(’plm’); install.package(’ggplot2’);
  • 17. Behandlungsgruppe erzeugen download.file(’https://goo.gl/9ENFV7’, destfile=’geoid.csv’); regions <- read.csv(’geoid.csv’); states<-regions[which(regions$Country.Code == ’DE’ & regions$Target.Type == ’State’ & regions$Status == ’Active’),]; set.seed(1); states$isTreatment <- sample(c(0,1), nrow(states), replace =T) write.csv(states, file=’states.csv’); # paste into AdWords writeLines(as.vector( states[which(states$isTreatment == ’1’),]$Canonical.Name), file(’treatment.csv’));
  • 22. Warten . . . auf die Ergebnisse
  • 23. Google Analytics Core Reporting API & R 1. “App” erstellen Google Developers Seite Typ: Installed Application, Untertyp: Other Ergebnis: Client ID und Client Secret 2. GA Profile ID herausfinden
  • 24. Konfiguration GNU R client.id <- ’xxxxxxxxxxxxxxx.apps.googleusercontent.com’; client.secret <- ’xxxxxxxxxxxxxxx’; analyticsProfileId <- ’111111111’; # redirect to google, paste, code require(RGoogleAnalytics); token <- Auth(client.id, client.secret) # save save(token, file = ’gatoken.txt’); # next time ValidateToken(token);
  • 25. Abfrage erstellen query.list <- Init(start.date = "2015-01-01", end.date = "2015-09-01", dimensions = "ga:region,ga:date,ga:medium", metrics = "ga:sessions,ga:transactionRevenue", filter = "ga:country==Germany", max.results = 50000, sort = "-ga:date,ga:region", table.id = paste0("ga:",analyticsProfileId)); ga.query <- QueryBuilder(query.list); ga.data <- GetReportData(ga.query, token);
  • 27. Tip: Sampling vermeiden > ga.data <- GetReportData(ga.query, token) Status of Query: The API returned 1393 results The query response contains sampled data. It is based on XX.XX % of your visits. You can split the query day-wise in order to reduce the effect of sampling. Set split_daywise = T in the GetReportData function Note that split_daywise = T will automatically .... “Sampling occurs automatically when more than 500,000 sessions (25M for Premium) are collected for a report, allowing Google Analytics to generate reports more quickly for those large data sets.”
  • 28. Datenintegration Wide Format: f¨ur jede Region und Zeit eine Zeile Long Format: Region/Zeit/Dimensionen je eine Zeile (EAV) require(reshape2); w<- reshape(ga.data, timevar=’medium’, idvar = c(’region’,’date’), direction=’wide’);
  • 29. Datenintegration: Fast fertig Merge: Wer ist in welcher Gruppe? ds <- merge(w, states[,c(’Name’,’isTreatment’)], by.x = ’region’, by.y = ’Name’, all.x = T) Datenset steht bereit! Komfortable DSL zur Datenmanipulation Nutzung von Paketen um Code zu minimieren
  • 30. Auswertung K¨unstliche Daten zur Illustration: 90 Tage 50. Tag: Experiment startet in 8 Bundesl¨andern - AdWords aus 50. Tag: Ebenfalls Saisonende, Suchvolumen f¨allt ¨uberall 50% Szenario: 100% der Besucher klicken organisch, wenn das AdWord wegf¨allt Beispiell¨ander - Randomisierung hat entschieden: Bayern: Im Experiment, ab 50. Tag keine AdWords Bremen: Nimmt nicht teil, AdWords laufen weiter
  • 34. ROI Kalkulation > summary(lm(transactionRevenue.total ~ isTreatment.cpc, data = sd.w)) ... Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 105.2617 0.7253 145.13 <2e-16 *** isTreatment.cpc -42.2907 1.5197 -27.83 <2e-16 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ Residual standard error: 24.19 on 1438 degrees of freedom Multiple R-squared: 0.35, Adjusted R-squared: 0.3496 F-statistic: 774.4 on 1 and 1438 DF, p-value: < 2.2e-16
  • 35. Differences in Differences > require(plm) > summary(plm(transactionRevenue.total ~ isTreatment.cpc, data=sd.w, index=c("region", "date"), model="between")) Coefficients : Estimate Std. Error t-value Pr(>|t|) (Intercept) 95.657436 0.052508 1821.7609 <2e-16 *** isTreatment.cpc -0.125488 0.163005 -0.7698 0.4542 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ Total Sum of Squares: 0.32187 Residual Sum of Squares: 0.3088 R-Squared : 0.040613 Adj. R-Squared : 0.035536
  • 37. Diskussion Grundproblem: The Missing Counterfactual wir wissen nicht, was sonst passiert sein k¨onnte Hilfe: Experiment Herausfoderung: Big Data without Big Code Google Analytics & GNU R Sehr reiche Toolbox Ergebnis: Differences in Differences kann funktionieren Annahmen beachten Viel mit den Daten arbeiten