Nachfrage und Preiselastizität mit Regression modellieren
Kurz gesagt
Niveau: Fortgeschritten
Jede Preisdiskussion läuft auf eine Zahl hinaus: wie viel Menge du für jedes Prozent Preis verlierst, das du draufschlägst.
- Eine Log Log Regression auf einem Jahr Wochendaten schätzt diese Elastizität direkt, mit Fehlerspanne.
- Der Umsatz erreicht seinen Gipfel, wo die Elastizität minus eins ist, aber der Preis, der sich lohnt, ist das Maximum des Deckungsbeitrags, $P^* = MC / (1 + 1/\eta)$.
- Nahe dem Gipfel ist die Kurve des Deckungsbeitrags flach, und der beste Preis reagiert sehr empfindlich auf die Elastizität, also lies die Preisleiter, nicht eine einzelne Zahl.
- Segmente unterscheiden sich: Firmenkunden können unelastisch sein, während Geschenkkäufer im Webshop elastisch sind.
- Preise werden selten zufällig gesetzt, also ist das Modell die Hypothese und ein Test gegen eine Kontrollgruppe der Beweis.
Jede Preisdiskussion läuft auf eine unbekannte Zahl hinaus: wie viel Menge du für jedes Prozent Preis verlierst, das du draufschlägst. Hier nehme ich ein Jahr Wochenverkäufe eines Geschenkkorbs aus einem erfundenen Hamburger Shop und gehe eine Nachfrageregression von Anfang bis Ende durch, vom Lesen der Ausgabe bis zum Preis, der sich lohnt, und dem Test, der ihn beweist. Kapitel 4 von 21 der Serie Marketing Analytics.
Der Geschenkkorb, der niemandem seinen Preis verraten wollte
Lena betreibt Korbwerk, einen erfundenen Onlineshop für Geschenkkörbe in Hamburg unter korbwerk.example. Ihr Afternoon Tea Korb ist das stille Arbeitspferd des Sortiments. Er verkauft sich das ganze Jahr, und er steht schon so lange bei 49 €, dass sich der Preis wie ein Naturgesetz anfühlt. Im letzten Frühjahr wollte sie wissen, ob er 54 € kosten sollte.
Ihr Marketinginstinkt sagte das Gegenteil: runter auf 45 €, mehr verkaufen, die Geschenkkäuferin gewinnen, die gerade fünf Tabs vergleicht. Ihr Finanzinstinkt sagte rauf, die Marge ist dünn, sobald der Paketdienst bezahlt ist. Beide Instinkte raten an derselben unbekannten Zahl herum: wie viele Körbe sie für jeden zusätzlichen Euro verliert.
Die gute Nachricht: Der Shop hatte das Experiment schon gemacht, schlecht und aus Versehen. Im Jahr davor hatte sich der Preis siebenmal bewegt, zwischen 39 € beim Abverkauf im Januar und 59 € vor Weihnachten. Es gab 11 Aktionswochen mit einem Code für kostenlosen Versand, sechs Weihnachtswochen und einen Mitbewerber, dessen vergleichbarer Korb zwischen 52 € und 58 € hin und her wanderte. Zweiundfünfzig Wochen mit Preis, Stückzahl und Umfeld: genau der Rohstoff, den eine Regression braucht.
Dieses Kapitel macht daraus eine Zahl, die du in einem Meeting verteidigen kannst, die Preiselastizität der Nachfrage. Korbwerk und jede Zahl darin sind erfunden, damit ich jeden Schritt zeigen kann. Die Methode ist die, die ich wirklich anwende.
Wo dieses Kapitel in der Serie steht
Das ist Kapitel 4 von 21 meiner Serie Marketing Analytics und das erste von Teil zwei, den Verfahren mit abhängiger Variable, die von hier bis Kapitel 10 reichen. Teil eins endete mit was ist ein Insight, und warum die meisten Reports keinen enthalten, wo ich dafür argumentiert habe, dass ein Insight eine Entscheidung ändern muss. Dieses Kapitel ist die erste Methode, die zuverlässig einen liefert.
Das nächste Kapitel, Polynomial Distributed Lags, behält dieselbe Regressionsmaschine und nimmt die Zeit dazu, denn eine Anzeige, die diese Woche gesehen wird, verkauft auch nächsten Monat noch Körbe. Jede Grundidee, die hier vorkommt, vom Mittelwert bis zum Logarithmus, wird auf der Seite Grundlagen von Grund auf aufgebaut.
Zwei Familien von Verfahren, und die Frage, die sie trennt
Fast jede Methode im Marketing Analytics gehört zu einer von zwei Familien. Die Frage, die sie sortiert, ist einfach: Gibt es eine Variable, die du erklären willst?
Wenn ja, bist du in der Familie mit abhängiger Variable. Verkaufte Stückzahl, Umsatz, Kündigungen, ob eine Testphase zum Kauf wird: etwas auf der linken Seite einer Gleichung, von dem du glaubst, dass es zumindest teilweise von den Dingen auf der rechten Seite verursacht wird. Regression, logistische Regression, Überlebensmodelle und ihre Verwandten leben hier, und ebenso dieser ganze Teil der Serie.
Wenn nein, bist du in der Familie der Zusammenhangsverfahren. Es gibt kein Ziel, nur Struktur, etwa welche Kunden einander ähneln oder welche Produkte im selben Warenkorb landen. Segmentierung und Faktorenanalyse leben dort, und dazu kommt die Serie in Teil drei.
Innerhalb der ersten Familie gibt es eine zweite Unterscheidung. Manche Gleichungen sind deterministisch: Umsatz ist Preis mal Stückzahl, immer und exakt, ohne etwas zu schätzen. Andere sind probabilistisch: Die Stückzahl dieser Woche hängt von Preis, Aktion und Saison ab, plus etwas, das niemand gemessen hat. Dieses Etwas ist der Fehlerterm. Ihn in die Gleichung zu schreiben, ist das ehrliche Eingeständnis, dass das Modell eine Vereinfachung ist.
Ein Beispiel: Lenas Umsatz in einer Woche, in der sie 60 Körbe zu 49 € verkauft hat, ist €. Einen Fehlerterm gibt es nicht, denn die Kasse rät nicht. Aber "wie viele Körbe verkauft sie nächste Woche zu 49 €" ist eine probabilistische Frage. Ein Modell sagt vielleicht 60, und die ehrliche Fassung sagt 60, plus oder minus einer typischen Abweichung. Eine Nachfrageprognose ohne Fehlerspanne hat entweder die Unsicherheit versteckt oder so getan, als sei eine Identität ein Modell.
Die Methode der kleinsten Quadrate, das Arbeitspferd
Das Nachfragemodell für einen Korb sieht in seiner schlichtesten linearen Form so aus:
Dabei ist die Zahl der verkauften Körbe in Woche und Lenas Preis in dieser Woche. ist eine Dummyvariable für Aktionen, , wenn ein Rabatt oder ein Code für kostenlosen Versand aktiv war, und sonst . ist eine Dummyvariable für die Saison, in den sechs Weihnachtswochen. ist der Preis des Mitbewerbers. Die Betas sind die Unbekannten: ist die Basis, die Veränderung der wöchentlichen Stückzahl bei einem Euro mehr Preis, und so weiter. ist der Fehlerterm, alles über Woche , was das Modell nicht weiß. Die Grundlagen stehen in Grundlagen: Regression.
Die Methode der kleinsten Quadrate (Ordinary Least Squares, OLS) wählt die Betas so, dass die vorhergesagten Stückzahlen über alle 52 Wochen so nah wie möglich an den tatsächlichen liegen, wobei "nah" die Summe der quadrierten Abweichungen meint:
Dabei ist die Vorhersage des Modells für Woche , die Zahl der Wochen, und addiert die quadrierten Abweichungen über alle Wochen auf. Das Quadrieren verhindert, dass sich positive und negative Abweichungen aufheben, und es bestraft eine riesige Abweichung stärker als mehrere kleine. Siehe Grundlagen: Regression und, dazu, warum Quadrate, Grundlagen: Streuung.
Die Methode gibt es, seit Adrien Marie Legendre sie 1805 veröffentlicht hat.1 Sie ist immer noch die Voreinstellung, weil sie einfach und durchschaubar ist und weil OLS unter einer kurzen Liste von Bedingungen (Fehler mit Mittelwert null, konstante Streuung, keine Korrelation zwischen den Wochen) der beste lineare unverzerrte Schätzer ist, ein Ergebnis, das als Satz von Gauß Markow bekannt ist.2 Wöchentliche Verkaufsdaten verletzen die letzte Bedingung, und das spielt im Code eine Rolle.
Rechenbeispiel: eine Zeile einer Regressionstabelle lesen
Was aus der Software zurückkommt, ist eine Tabelle, und sie zu lesen ist die eigentliche Kunst. Angenommen, ein lineares Modell liefert einen Preiskoeffizienten von minus 1,95 mit einem Standardfehler von 0,29.
Erster Schritt, der Koeffizient. Jeder zusätzliche Euro Preis kostet ungefähr zwei Körbe pro Woche, bei gleicher Aktion, Saison und gleichem Mitbewerber.
Zweiter Schritt, der Standardfehler. Er ist die Unsicherheit um die Schätzung, der typische Abstand zwischen dieser Schätzung und der, die ein anderes Jahr desselben Shops liefern würde.
Dritter Schritt, die t Statistik: der Koeffizient geteilt durch seinen Standardfehler, . Bei rund 50 Wochen heißt ein Betrag von t über etwa 2, dass das Vorzeichen wahrscheinlich kein Glück ist. Siehe Grundlagen: Hypothesentests.
Vierter Schritt, das Bestimmtheitsmaß R Quadrat, also wie viel der Schwankung der Stückzahl von Woche zu Woche das Modell erklärt:
Der Zähler ist das, was das Modell unerklärt lässt. Der Nenner ist die gesamte Schwankung um den Durchschnitt . Das Verhältnis ist der Anteil, der noch fehlt, und eins minus dieses Verhältnis ist der erklärte Anteil. Die Idee steht in Grundlagen: Regression und Grundlagen: der Mittelwert.
Ein R Quadrat von 0,81 heißt, dass das Modell 81 % des Auf und Ab erfasst. Es heißt nicht, dass das Modell stimmt. Ein hohes R Quadrat mit einem unsinnigen Koeffizienten ist schlechter als ein niedriges mit einem vernünftigen.
Fünfter Schritt, die Residuen, die Abweichungen Woche für Woche. Zeichne sie gegen die Zeit und gegen den Preis. Zufälliges Rauschen ist gut. Trends, Häufungen oder eine Fächerform heißen, dass dem Modell etwas fehlt und die Standardfehler dich anlügen.
Vom Koeffizienten zur Elastizität
Ein Koeffizient von minus 1,95 Körben pro Euro ist für diesen Korb nützlich und für den Vergleich mit einem Softwaretarif für 120 € oder einem Hotelzimmer für 190 € nutzlos. Die Elastizität löst das, indem sie beide Seiten in Prozent ausdrückt: die prozentuale Veränderung der Menge bei einer Veränderung des Preises um 1 %.3
Dabei ist (Eta) die Elastizität. ist die Steigung der Nachfrage in Bezug auf den Preis, im linearen Modell einfach . rechnet sie von Euro und Körben in Prozent um. Die Grundlagen schreiben dieselbe Idee als , in Grundlagen: Elastizität. Ich nehme hier , weil schon der Fehlerterm ist.
Weil sich entlang einer geraden Nachfragelinie verändert, ist die Elastizität eines linearen Modells bei jedem Preis anders. Üblicherweise wertet man sie an den Durchschnitten aus.
Rechenbeispiel: die Elastizität an den Durchschnitten
Erster Schritt, die Eingaben: , ein durchschnittlicher Preis von 49 € und ein durchschnittlicher Wochenabsatz von 60 Körben.
Zweiter Schritt, die Umrechnung: .
Dritter Schritt, das Produkt: .
Eine Preiserhöhung um 1 % kostet rund 1,6 % der Menge. Die Nachfrage ist elastisch, also im Betrag größer als eins,3 und diese eine Tatsache treibt die ganze Preisdiskussion, die folgt. Wenn du die Intuition ohne die Algebra willst, habe ich sie in Preiselastizität einfach erklärt aufgeschrieben. In diesem Kapitel schätzen wir sie tatsächlich.
Das Log Log Modell liefert dir die Elastizität direkt
Das lineare Modell gibt dir eine Elastizität, die davon abhängt, wo du stehst. Für Preisarbeit greife ich meist zuerst zu einer anderen funktionalen Form, weil sie die Elastizität zu dem macht, was du schätzt. Nimm den natürlichen Logarithmus der Menge und jedes Preises:
Dabei ist der natürliche Logarithmus und der Achsenabschnitt. , der Koeffizient des logarithmierten Preises, ist jetzt die Eigenpreiselastizität selbst, gleich auf jedem Preisniveau. (Theta) ist die Kreuzpreiselastizität, die prozentuale Veränderung von Lenas Stückzahl bei einer Veränderung des Mitbewerberpreises um 1 %, positiv bei einem Ersatzprodukt. und sind die Dummyvariablen von vorher, und und (Gamma) sind ihre Wirkungen auf die logarithmierte Stückzahl. Siehe Grundlagen: Logarithmen und Grundlagen: Elastizität.
Der Trick: Eine kleine Veränderung im Logarithmus einer Variable ist eine prozentuale Veränderung. Eine Regression von Logarithmus auf Logarithmus ist also eine Regression von Prozent auf Prozent, und der Koeffizient liest sich als prozentuale Veränderung der Stückzahl bei einer Preisänderung um 1 %.4 Eine Dummyvariable funktioniert in einem logarithmischen Modell etwas anders: Ihr exakter prozentualer Effekt ist , also den Koeffizienten exponieren und eins abziehen.4
Das Log Log Modell hat einen Preis, auf den ich bei den Fallstricken zurückkomme: Es nimmt eine konstante Elastizität an, und die Nachfrage tut einem selten den Gefallen über die ganze Preisspanne. Als erste Schätzung auf einem Jahr Shopdaten ist es trotzdem schwer zu schlagen.
Rechenbeispiel: 52 Wochen des Afternoon Tea Korbs
Hier ist die Ausgabe des Log Log Modells für Lenas Jahr: 52 wöchentliche Beobachtungen, Preise zwischen 39 € und 59 € auf sieben verschiedenen Stufen, 11 Aktionswochen, sechs Weihnachtswochen ab Mitte November und der Preis des Mitbewerbers, jeden Montag geprüft.
| Term | Koeffizient | Standardfehler | t Statistik |
|---|---|---|---|
| Achsenabschnitt | 8,31 | 1,92 | 4,3 |
| ln Preis (eigener) | minus 1,61 | 0,24 | minus 6,7 |
| Aktionswoche (0 oder 1) | 0,28 | 0,09 | 3,1 |
| Weihnachtswoche (0 oder 1) | 0,74 | 0,12 | 6,2 |
| ln Mitbewerberpreis | 0,52 | 0,31 | 1,7 |
Die Anpassung: n = 52 Wochen, R Quadrat 0,81, korrigiertes R Quadrat 0,79, Standardfehler der Residuen 0,14 in logarithmischen Einheiten, also eine typische Abweichung von rund 15 % ().
Lies sie Zeile für Zeile.
Der Achsenabschnitt ist der Logarithmus der Stückzahl bei einem Preis von 1 € und einem Mitbewerber bei 1 €. Er hat keine geschäftliche Bedeutung, und ich ignoriere ihn.
Der Koeffizient des eigenen Preises ist die Schlagzeile: eine Elastizität von minus 1,61 mit einem Standardfehler von 0,24. Zwei Standardfehler zu beiden Seiten ergeben eine plausible Spanne von ungefähr minus 1,1 bis minus 2,1, und die t Statistik von sagt, dass das Vorzeichen nicht in Zweifel steht. Ob es minus 1,2 oder minus 2,0 ist, zählt für die Preisgestaltung sehr viel, und ein Jahr Daten grenzt es nicht enger ein. Siehe Grundlagen: Konfidenzintervalle.
Die Aktion mit 0,28 heißt, dass eine Woche mit kostenlosem Versand die Stückzahl um rund 32 % hebt, denn , bei gleichem Preis. Das ist die Wirkung des Codes zusätzlich zu der Preissenkung, mit der er meist einhergeht, und deshalb gehört der Preis ins selbe Modell.
Weihnachten mit 0,74 ist ein Plus von rund 110 %, denn : Die Nachfrage verdoppelt sich ungefähr. Ihr t von macht sie zu einem der sichersten Dinge in der Tabelle.
Der Koeffizient des Mitbewerbers braucht Sorgfalt. Ein Wert von 0,52 sagt, dass ein um 10 % höherer Preis beim Mitbewerber Lena rund 5 % mehr Stückzahl bringt, das richtige Vorzeichen für ein Ersatzprodukt. Aber das t von heißt, dass ich auf die Größe nicht Haus und Hof verwetten würde. Der Preis des Mitbewerbers hat sich im Jahr kaum bewegt, also steckt dort wenig Information, und der Standardfehler sagt das ehrlich.
Die waagerechte Achse ist der Preis, den Lena verlangt hat, die senkrechte die Zahl der verkauften Körbe pro Woche, und gezeigt werden nur normale Wochen (keine Aktion, kein Weihnachten). Eine Linie ist der beobachtete Durchschnitt bei jedem Preis, die andere die Vorhersage des Modells, also . Die Modellkurve fällt am unteren Ende steiler und flacht am oberen Ende ab. So sieht konstante Elastizität in Stückzahlen aus: Derselbe prozentuale Verlust für jede prozentuale Erhöhung heißt, dass mit steigendem Preis in absoluten Zahlen weniger Körbe verloren gehen.
Der Umsatz erreicht seinen Gipfel, wo die Elastizität minus eins ist
Jetzt der Teil, den das Meeting eigentlich will. Umsatz ist Preis mal Stückzahl, also ist die Wirkung einer kleinen Preiserhöhung auf den Umsatz:
Dabei ist der Umsatz, die Stückzahl, der Preis und die Elastizität von vorher. Der zweite Schritt nutzt , also nur die umgestellte Formel der Elastizität. Siehe Grundlagen: Elastizität und Grundlagen: Grenzwert und Durchschnitt.
Der Umsatz steigt mit dem Preis, solange positiv ist, also solange die Nachfrage unelastisch ist, und er fällt, solange es negativ ist, solange die Nachfrage elastisch ist.5 Der Umsatz erreicht seinen Gipfel also genau dort, wo ist. Bei einer Elastizität von minus 1,6 sagt diese Bedingung, dass Lena hinter dem Umsatzgipfel steht: Jede Preiserhöhung kostet Umsatz, jede Preissenkung bringt etwas. Unachtsam gelesen, sagt das Modell: Senk den Preis.
Sorgfältig gelesen, sagt es nichts dergleichen, und zwar aus zwei Gründen.
Erstens hat ein Modell mit konstanter Elastizität von minus 1,6 nirgends einen Umsatzgipfel. Es sagt: senken, und weiter senken, bis auf null. Das ist eine Eigenschaft der funktionalen Form und nicht von Geschenkkörben.
Zweitens hat das lineare Modell sehr wohl einen Gipfel, bei .
Rechenbeispiel: zwei Modelle, zwei Umsatzgipfel
Erster Schritt, die Basis des linearen Modells für normale Wochen. Mit einer Steigung von minus 1,95 und 60 Körben bei 49 € ist der Achsenabschnitt .
Zweiter Schritt, der Gipfel: €.
Das lineare Modell sagt also, der Umsatz erreicht seinen Gipfel bei rund 40 €, und das Log Log Modell sagt, es gibt gar keinen Gipfel. Zwei vernünftige Modelle, zwei Antworten: Ein Umsatzgipfel, geschätzt aus einem Jahr Daten, ist weich, und der Umsatz ist ohnehin das falsche Ziel.
Den Preis, der sich lohnt, bestimmt der Deckungsbeitrag, nicht der Umsatz
Niemand sollte den Umsatz maximieren. In diesem Beispiel kostet es 19 €, den Korb zu verkaufen: Ware, Karton, Schleife und Paketdienst. Der Deckungsbeitrag, also Preis minus diese Kosten, mal Stückzahl, ist das, was die Rechnungen bezahlt. Bei konstanter Elastizität ergibt seine Maximierung die Aufschlagsregel aus jedem Volkswirtschaftskurs:6
Dabei ist der Preis, der den Deckungsbeitrag maximiert, die Grenzkosten, also die Kosten, eine Einheit mehr zu verkaufen (hier 19 €), und die Elastizität, die unter minus eins liegen muss, damit die Regel eine Antwort liefert. Es ist dieselbe Regel wie in Optimierung unter Unsicherheit für Budget und Preise, dort mit der Elastizität als positiver Zahl geschrieben. Siehe Grundlagen: Elastizität und Grundlagen: Grenzwert und Durchschnitt.
Rechenbeispiel: die Aufschlagsregel am Geschenkkorb
Erster Schritt: .
Zweiter Schritt: .
Dritter Schritt: €, rund 50 €.
Hier ist dieselbe Geschichte als Preisleiter, mit den Stückzahlen des Modells für normale Wochen. Die Stückzahlen stehen mit einer Nachkommastelle da, damit Umsatz und Deckungsbeitrag aufgehen.
| Preis | Stückzahl pro Woche laut Modell | Umsatz | Deckungsbeitrag bei 19 € Kosten |
|---|---|---|---|
| 39 € | 86,6 | 3.379 € | 1.733 € |
| 42 € | 76,9 | 3.230 € | 1.769 € |
| 45 € | 68,8 | 3.097 € | 1.789 € |
| 49 € | 60,0 | 2.940 € | 1.800 € |
| 52 € | 54,5 | 2.835 € | 1.799 € |
| 55 € | 49,8 | 2.740 € | 1.793 € |
| 59 € | 44,5 | 2.625 € | 1.780 € |
Der Umsatz fällt die ganze Leiter hinunter, wie es die Elastizität vorhergesagt hat. Der Deckungsbeitrag bewegt sich kaum. Er erreicht seinen Höchstwert mit rund 1.800 € pro Woche zwischen 49 € und 52 €, und selbst 45 € oder 55 € kosten nur 7 € bis 11 € pro Woche.
Diese Flachheit ist der eigentliche Befund. Der Shop steht nahe dem Gipfel eines breiten Hügels, und die Frage 49 € gegen 54 € ist rund 4 € pro Woche wert ( € gegen 1.800 €), weit innerhalb der Fehlerspanne des Modells. Der Marketinginstinkt, auf 45 € zu senken, hätte rund neun Pakete mehr pro Woche gebracht, für etwas weniger Deckungsbeitrag. Der Finanzinstinkt, auf 54 € zu gehen, ist vertretbar und nicht dringend.
Die Regel reagiert in der Nähe von minus eins außerdem sehr empfindlich. Füttere sie mit den beiden Enden der plausiblen Spanne: Bei minus 2,09 liefert sie €, bei minus 1,13 liefert sie €. Ein Standardfehler von 0,24 bei der Elastizität wird zu einem besten Preis irgendwo zwischen 36 € und 165 €, und deshalb ist die Leiter mit ihrem flachen Gipfel ein besserer Wegweiser als die einzelne Zahl. Warum 49 € und 54 € für eine Geschenkkäuferin nicht dasselbe sind, auch wenn die Mathematik sagt, dass sie es fast sind, behandelt Pricing Psychologie, den Teil, den die Regression nicht sieht.
Elastizität ist nicht eine Zahl: Firmenkunden und Privatkunden unterscheiden sich
Die minus 1,6 sind ein Durchschnitt über alle, die den Korb gekauft haben, und Durchschnitte verstecken den nützlichen Teil. Korbwerk hat drei erkennbare Gruppen: Firmenkunden, die fünf oder mehr auf Rechnung bestellen, private Geschenkkäufer und private Selbstkäufer. Teilt man die Wochendaten nach Segment und passt dasselbe Modell neu an, ergibt sich:
| Segment | Anteil an der Stückzahl | Elastizität | Standardfehler |
|---|---|---|---|
| Firmenbestellungen | 31 % | minus 0,7 | 0,30 |
| Private Geschenkkäufer | 54 % | minus 1,9 | 0,28 |
| Private Selbstkäufer | 15 % | minus 2,4 | 0,55 |
| Alle Käufer | 100 % | minus 1,6 | 0,24 |
Eine schnelle Plausibilitätsprüfung: Die Gesamtelastizität ist der Durchschnitt der Segmentelastizitäten, gewichtet mit ihrem Anteil an der Stückzahl, im Betrag. Die Aufteilung ergibt das Ganze.
Die waagerechte Achse listet die Käufersegmente, die senkrechte zeigt die Größe der Elastizität ohne Minuszeichen, ein höherer Balken heißt also preisempfindlichere Käufer. Alles unter eins ist unelastisch, alles über eins elastisch. Die Erkenntnis: Firmenkunden sind die einzige unelastische Gruppe, und die privaten Selbstkäufer sind am empfindlichsten.
Die Nachfrage der Firmen ist unelastisch. Eine Einkaufsleiterin, die 40 Körbe an Kunden schickt, gibt ein Budget aus, das im September freigegeben wurde. Die Freigabe ist bei 49 € dieselbe wie bei 54 €, und die Alternative ist kein günstigerer Korb, sondern der Aufwand, einen neuen Lieferanten zu finden. Private Selbstkäufer sind das Gegenteil, und der große Standardfehler sagt, dass es nicht viele von ihnen gibt, aus denen man lernen könnte. Geschenkkäufer liegen dazwischen und machen den Großteil der Menge aus.
Rechenbeispiel: was die Segmente mit dem besten Preis machen
Für Firmenkunden bei minus 0,7 hat die Aufschlagsregel keine Antwort: Die Nachfrage ist unelastisch, also bringt jede Preiserhöhung innerhalb der getesteten Spanne mehr Deckungsbeitrag. Das spricht für eine Firmenpreisliste über dem Webpreis.
Für private Geschenkkäufer bei minus 1,9: , , und €.
Im Webshop, wo die Geschenkkäufer dominieren, zeigt die Regel also deutlich unter 49 €. Der Instinkt des Marketings lag halb richtig, nur für die falsche Hälfte der Kunden. Aber der Standardfehler von 0,28 zählt immer noch. Ein Standardfehler zu jeder Seite: Bei minus 1,62 liegt der beste Preis bei rund 50 €, bei minus 2,18 bei rund 35 €. Das Segmentmodell sagt dir, in welche Richtung du testen sollst, nicht, wo du landest.
Die praktische Folge: Ein einziger Listenpreis ist das falsche Instrument. Eine Firmenpreisliste mit Mengenstaffeln über dem Webpreis und ein Webpreis, der für die Geschenkkäufer nach unten getestet wird, schlagen jede einzelne Zahl, und die Regression ist das, was dir sagt, dass die Lücke echt ist und kein Bauchgefühl. Die Kreuzpreiselastizität teilt sich genauso auf: nahe null bei Firmenkunden, die keine Tabs vergleichen, größer bei Selbstkäufern, die es tun. Geht man weiter und lässt den Preis nach Segment und Zeit bewegen, wie es das Modell sagt, ist man im Gebiet des dynamischen Pricings, das ein eigenes Playbook verdient.
Der Test gegen eine Kontrollgruppe entscheidet
Alles oben ist Beobachtung. Lena hat die Preise in den Daten selbst gesetzt, aus Gründen, und manche dieser Gründe hingen mit der Nachfrage zusammen, und das ist der erste Fallstrick weiter unten. Das Modell ist also eine Hypothese mit einer Zahl daran, und der Beweis ist ein Feldtest mit einer Kontrollgruppe.
Rechenbeispiel: acht Wochen 49 € gegen 54 €
Der Aufbau. In acht normalen Herbstwochen ohne laufende Aktion sah die Hälfte der Sitzungen im Webshop, zufällig ausgewählt, den Korb zu 54 € und die andere Hälfte zu 49 €. Jede Hälfte hatte rund 4.400 Sitzungen.
Die Vorhersage. Für Privatkunden bei minus 1,9 sollte eine Preiserhöhung um 10,2 % () die Stückzahl auf der Kurve mit konstanter Elastizität um rund 17 % senken, .
Das Ergebnis. Die Kontrollgruppe kaufte 268 Körbe, 61 pro tausend Sitzungen. Die Testgruppe kaufte 216, 49 pro tausend. Das ist ein Rückgang um .
Die Unsicherheit. Der Standardfehler der Lücke zwischen zwei Raten ist . Ein 95 % Intervall für die Lücke von 12 pro tausend ist 12 plus minus 9,5, der Rückgang liegt also irgendwo zwischen rund 4 % und 35 %. Siehe Grundlagen: Hypothesentests und Grundlagen: Stichprobengröße.
Das Geld. Der Umsatz pro tausend Sitzungen lag in der Kontrollgruppe bei € gegen € im Test. Der Deckungsbeitrag lag bei € gegen €. Für den Webshop hat 49 € gewonnen, und das Modell hatte die Richtung vorhergesagt. Der naheliegende nächste Test ist 45 € gegen 49 €.
Bei den Firmenkunden hat Lena der Hälfte der Anfragen in diesem Zeitraum 54 € angeboten und dem Rest 49 €. Elf von 14 nahmen den höheren Preis an, 12 von 15 den niedrigeren. Das ist viel zu wenig, um irgendetwas zu beweisen, und passt voll und ganz zu einer Elastizität nahe minus 0,7.
Der Test gegen eine Kontrollgruppe ist der Beweis, weil er die Verzerrung an der Quelle beseitigt: dieselben Wochen, dasselbe Wetter, derselbe Mitbewerberpreis, derselbe Abstand zu Weihnachten, nur der Preis war anders. Die Regression hat gesagt, wo man hinschauen muss und wie groß der Effekt sein dürfte. Der Test hat gesagt, dass er echt ist. Wenn du dir nur eines von beidem leisten kannst, mach den Test. Wenn du dir beides leisten kannst, macht das Modell den Test kleiner und schärfer.
So machst du das selbst
Du brauchst eine Zeile pro Woche für ein Produkt: verkaufte Stückzahl, durchschnittlich erzielter Preis, ein Kennzeichen für Aktionen, Kennzeichen für die Saison und jeden Mitbewerberpreis, den du sammeln kannst. Diese Tabelle zu bauen ist der Großteil der Arbeit. In einem Solidus Shop liegen Bestellungen, Bestellpositionen und Varianten in drei Tabellen, und jede Bestellposition trägt ihren Preis, ihre Menge und ihre eigene Aktionssumme.7 In PostgreSQL rollt date_trunc('week', ...) jede Bestellung auf ihre Woche zusammen.8
select date_trunc('week', o.completed_at)::date as week,
sum(li.quantity) as units,
sum(li.price * li.quantity + li.promo_total) / sum(li.quantity) as price
from spree_line_items li
join spree_orders o on o.id = li.order_id
join spree_variants v on v.id = li.variant_id
where v.sku = 'AFTERNOON-TEA' and o.state = 'complete'
group by 1 order by 1;
Das Feld promo_total einer Bestellposition ist negativ, wenn ein Rabatt greift, wer es addiert, bekommt also den Preis, den die Kundin tatsächlich bezahlt hat. Füg die Kennzeichen für Aktionen und Weihnachten aus deinem Marketingkalender und den Mitbewerberpreis hinzu und passe dann das Modell an. In Python mit statsmodels:
import numpy as np
import statsmodels.formula.api as smf
df["ln_units"] = np.log(df["units"])
df["ln_price"] = np.log(df["price"])
df["ln_comp"] = np.log(df["competitor_price"])
model = smf.ols("ln_units ~ ln_price + promo + christmas + ln_comp", data=df)
fit = model.fit(cov_type="HAC", cov_kwds={"maxlags": 4})
print(fit.summary())
print("elasticity:", round(fit.params["ln_price"], 2))
Die Option HAC liefert Standardfehler, die robust gegen Heteroskedastizität und Autokorrelation sind,9 und das zählt, weil der Absatz einer Woche mit dem der nächsten korreliert, genau die Bedingung von Gauß Markow, die Wochendaten verletzen. Wer mit R arbeitet, bekommt dasselbe mit lm plus dem Paket sandwich, das den Schätzer von Newey und West enthält.10
Zeitaufwand: ein Tag, um eine saubere Wochentabelle zu bauen, eine Stunde, um anzupassen und zu zeichnen, und ungefähr eine Woche Diskussion darüber, was die Koeffizienten bedeuten. Bevor du dem Ergebnis traust, fünf Prüfungen.
- Zähl die verschiedenen Preisstufen. Weniger als fünf, und die Elastizität ist eine Vermutung mit Nachkommastellen.
- Zeichne die Residuen gegen die Zeit und gegen die angepassten Werte und such nach Struktur.
- Prüf die Korrelation zwischen dem Aktionskennzeichen und dem Saisonkennzeichen. Liegt sie über etwa 0,6, streiten sich beide um dieselben Wochen.
- Pass das Modell auf den ersten 40 Wochen neu an, sag die letzten 12 voraus und schau, ob die Abweichungen so groß sind, wie es der Standardfehler der Residuen versprochen hat.
- Lies das Vorzeichen jedes Koeffizienten vor der Größe. Ein positiver Koeffizient für den eigenen Preis ist keine Entdeckung, sondern ein Datenproblem.
Das Diagramm läuft von der Wochentabelle hinunter zum Entscheidungsmemo. Die eine Schleife ist die Prüfung der Residuen: Zeigen die Abweichungen ein Muster, ergänz den fehlenden Treiber und pass neu an, bevor du irgendeinen Koeffizienten liest. Der Test ist nicht optional.
Fallstricke, die eine Elastizität lügen lassen
Der Preis wird nicht zufällig gesetzt. Das ist der große Fallstrick, und er hat einen Namen: Endogenität. Wenn du die Preise erhöhst, wenn die Nachfrage stark ist, und senkst, wenn sie schwach ist, bewegen sich Preis und Fehlerterm gemeinsam. OLS meldet dann eine Elastizität, die zu nahe an null liegt oder sogar das falsche Vorzeichen hat.11 Saisondummys fangen einen Teil davon auf. Für den Rest braucht es Preisänderungen aus Gründen, die nichts mit der Nachfrage zu tun haben, oder einen randomisierten Test. Wenn die Historie eines Kunden jede Preiserhöhung im November zeigt, sage ich das, bevor ich irgendetwas anpasse.
Aktionen leben in der Saison. Liefen alle Aktionen im Dezember, kann das Modell den Code nicht vom Weihnachtsplus trennen, und die Standardfehler von beiden blähen sich auf. Das Gegenmittel ist langweilig: ein paar Aktionen in normalen Monaten fahren.
Zu wenig Bewegung. Ein Preis, der sich im Jahr zweimal bewegt hat, gibt dir zwei Punkte und eine Linie hindurch. Der Standardfehler wird riesig sein, aber die Leute lesen den Koeffizienten und überspringen den Rest. Wenn du deine Elastizität wissen willst, musst du den Preis bewegen, bewusst und in beide Richtungen.
Extrapolation. Lenas Daten reichten von 39 € bis 59 €. Über 29 € oder 79 € sagen sie nichts, und die Form mit konstanter Elastizität liefert für beides fröhlich eine Zahl. Eine Elastizität gilt über die Spanne der Preise, die du tatsächlich verlangt hast, und nicht darüber hinaus.
Konstante Elastizität ist eine Annahme. Das Log Log Modell erzwingt überall dieselbe prozentuale Reaktion. Echte Nachfrage hat oft einen Knick, eine Schwelle wie 50 €, an der sich das Verhalten ändert. Nimm einen quadrierten Term des logarithmierten Preises auf oder pass ein stückweises Modell an, und wenn die Anpassung besser wird, nenn verschiedene Elastizitäten für verschiedene Spannen.
Wie ich das für Kunden mache
Das Ergebnis ist eine Preisentscheidung mit einer Zahl und einem Risiko daran, kein Modell. Es beginnt mit dem kostenlosen Workshop: Wir klären, welche Produkte sich oft genug im Preis bewegt haben, um überhaupt etwas zu sagen, was die Kosten pro Stück wirklich sind und welche Entscheidung die Elastizität ändern würde. Lautet die Antwort "keine", sage ich das, und wir hören dort auf.
Dann stecke ich zwei Wochen hinein, bevor du dich zu irgendetwas verpflichtest. Ich brauche Bestellpositionen mit erzielten Preisen, die Aktionshistorie, die es gibt, und alle Mitbewerberpreise, die du hast oder ab jetzt sammeln kannst. Daraus baue ich die Wochentabelle, passe das lineare und das Log Log Modell an, teile nach Segment, wo die Daten es erlauben, und entwerfe einen Test gegen eine Kontrollgruppe für das Produkt, das am meisten zählt.
Du bekommst drei Dinge. Das Modell selbst, in einem Notebook, das du erneut laufen lassen kannst. Eine Preisleiter wie die oben, mit Umsatz und Deckungsbeitrag auf jeder Stufe und der Fehlerspanne gezeigt statt versteckt. Und ein Entscheidungsmemo auf einer Seite, das sagt, welchen Preis du testen sollst, was das Modell erwartet und was mich widerlegen würde. Wenn du die Elastizität am Leben halten willst, wird daraus ein Dashboardfeld, das eine einzige Frage beantwortet: Sind wir noch auf dem flachen Teil des Hügels?
Das gehört zu meiner Arbeit in Data Science, und die Gebühren stehen klar auf der Preisseite. Für eCommerce Shops gibt es dort außerdem das Provisionsmodell: eine monatliche Grundgebühr oder eine Provision auf gemessenes Wachstum, je nachdem, was höher ist, nie beides.
Fragen, bevor du einen Preis bewegst
- Wie viele verschiedene Preisstufen enthält unsere Historie für dieses Produkt, und über welche Spanne?
- Wird die Elastizität mit einem Standardfehler oder Konfidenzintervall genannt, und wie breit ist es?
- Wurden die Preisänderungen in den Daten aus Gründen gemacht, die nichts mit der Nachfrage zu tun hatten, und wenn nicht, wie wurde damit umgegangen?
- Stehen Aktionen und Saison getrennt im Modell, und wie stark korrelieren sie?
- Ist der empfohlene Preis ein Umsatzmaximum oder ein Maximum des Deckungsbeitrags, und welche Kosten pro Stück wurden angesetzt?
- Unterscheidet sich die Elastizität nach Kundensegment, und spiegelt unsere Preisstruktur das wider?
- Welches Ergebnis aus einem Test gegen eine Kontrollgruppe würde uns dazu bringen, die Empfehlung aufzugeben?
Die Serie ist von Mike Grigsbys Buch Marketing Analytics inspiriert.12 Die Erklärungen, Beispiele und Zahlen hier sind meine eigenen.
Footnotes
-
Jeff Suzuki, Legendre, Adrien-Marie, Biographical Encyclopedia of Astronomers, Springer, 2007 (über MacTutor, University of St Andrews), https://mathshistory.st-andrews.ac.uk/BEA/legendre_bea.pdf
-
Marco Taboga, Gauss Markov theorem, Lectures on probability theory and mathematical statistics, Statlect, https://statlect.com/fundamentals-of-statistics/Gauss-Markov-theorem
-
Steven A. Greenlaw, David Shapiro und andere, Principles of Economics 3e, Abschnitt 5.1 Price Elasticity of Demand and Price Elasticity of Supply, OpenStax, 2022, https://openstax.org/books/principles-economics-3e/pages/5-1-price-elasticity-of-demand-and-price-elasticity-of-supply
-
Clay Ford, Interpreting Log Transformations in a Linear Model, University of Virginia Library StatLab, 2018, https://library.virginia.edu/data/articles/interpreting-log-transformations-in-a-linear-model
-
Steven A. Greenlaw, David Shapiro und andere, Principles of Economics 3e, Abschnitt 5.3 Elasticity and Pricing, OpenStax, 2022, https://openstax.org/books/principles-economics-3e/pages/5-3-elasticity-and-pricing
-
Robert S. Pindyck, Lecture Notes on Pricing, 15.013 Industrial Economics for Strategic Decisions, MIT Sloan School of Management, August 2010, https://www.mit.edu/~rpindyck/Courses/Pricing_10.pdf
-
Solidus Mitwirkende, Datenbankschema des Kerns (spree_orders, spree_line_items, spree_variants), Quellcode von Solidus auf GitHub, https://github.com/solidusio/solidus/blob/main/core/db/migrate/20160101010000_solidus_one_four.rb
-
PostgreSQL Global Development Group, Date/Time Functions and Operators, PostgreSQL Dokumentation, https://www.postgresql.org/docs/current/functions-datetime.html
-
statsmodels Entwickler, RegressionResults.get_robustcov_results, statsmodels Dokumentation, https://www.statsmodels.org/stable/generated/statsmodels.regression.linear_model.RegressionResults.get_robustcov_results.html
-
Achim Zeileis, Thomas Lumley und andere, sandwich: Robust Covariance Matrix Estimators, CRAN, https://cran.r-project.org/package=sandwich
-
Anubhav Jha, Lecture 7: Demand Systems: Discrete Choice Models (endogeneity problem and bias of the OLS estimator), UG Empirical Industrial Organization, Ashoka University, 2024, https://anubhavpcjha.github.io/files/ug_emp_IO_lec_07_demand_function_estimation.pdf
-
Mike Grigsby, Marketing Analytics: A Practical Guide to Improving Consumer Insights Using Data Techniques, Kogan Page, 2022, ISBN 9781398608191, https://www.netgalley.co.uk/catalog/book/267990