Hauptkomponenten und Faktorenanalyse für Marketer
Kurz gesagt
Niveau: Profi
- 24 korrelierte Umfragefragen sind meist vier oder fünf dahinterliegende Dinge, mehrfach gemessen. PCA und Faktorenanalyse finden diese Dinge.
- Die PCA dreht die Daten so, dass die Varianz vorn liegt, und nimmt nichts an. Die Faktorenanalyse ist ein Modell, in dem verborgene Konstrukte die Antworten verursachen und jede Frage einen eigenen Teil behält.
- Faktorenanalyse für Umfragen, die Konstrukte messen, PCA, um Verhalten vor Clustering oder Regression zu verdichten. Vorher standardisieren, schiefe Variablen logarithmieren.
- Die Zahl mit Scree Plot, Kaiser Regel und Parallelanalyse gemeinsam bestimmen, und die Deutbarkeit sticht alle drei. Die Rotation ändert die Lesbarkeit, nie die Passung.
- Die Werte zahlen sich erst aus, wenn sie mit einem Ergebnis verknüpft sind: Im Beispiel schlägt eine faire Bepreisung der Extras eine Renovierung der Zimmer.
Die meisten Umfragen und Kundentabellen haben viel zu viele Spalten, die ungefähr dasselbe sagen. Am Beispiel einer erfundenen Hotelgruppe an der Ostsee und von Korbwerk in Hamburg zeigt dieses Kapitel, wie Hauptkomponentenanalyse und Faktorenanalyse sie auf wenige Dimensionen verdichten, die du benennen und nutzen kannst, mit der Mathematik, lauffähigem Code und den Prüfungen, die entscheiden, ob du dem Ergebnis trauen kannst. Teil 12 von 21 der Serie Marketing Analytics.
24 Spalten mit Durchschnitten und keine Antwort
Jeden Herbst schickt Dünenhof seinen Gästen einen Fragebogen. Dünenhof ist eine erfundene Gruppe aus fünf kleinen Hotels in Kühlungsborn und entlang der mecklenburgischen Ostseeküste. 24 Fragen, jede mit einer Note von 1 bis 10: wie herzlich der Empfang war, wie schnell das Personal Probleme gelöst hat, ob das Zimmer sauber war, wie das Frühstück geschmeckt hat, ob der Preis fair wirkte. In der letzten Saison haben 1.340 Gäste geantwortet. Ines, die die Gruppe mit ihrem Bruder führt, schickt mir die Tabelle mit einer Mail aus einer Zeile: "Alles liegt zwischen 7,6 und 8,7. Was reparieren wir zuerst, und bringt das mehr Direktbuchungen?"
Das ist das ehrliche Problem mit Umfragedaten und mit den meisten Kundendatenbanken. Du hast keine 24 Informationen. Du hast vielleicht vier Dinge, jedes sechsmal in leicht anderen Worten gemessen, dazu Rauschen. Ein Gast, der dem Empfang eine 9 gibt, gibt auch "das Personal hat Probleme schnell gelöst" eine 9, weil beide Fragen wissen wollen, wie die Menschen sie behandelt haben. Solange du diese dahinterliegenden Dinge nicht findest, ist jedes Diagramm mit 24 Balken dieselben vier Balken, immer wieder neu gezeichnet, und was zuerst repariert wird, bleibt Geschmackssache.
Hauptkomponentenanalyse und Faktorenanalyse sind die beiden Werkzeuge für genau diese Aufgabe. Sie nehmen Dutzende korrelierter Variablen und dampfen sie auf eine Handvoll Dimensionen ein, die du benennen, bewerten und in Entscheidungen übersetzen kannst. Sie sehen sich ähnlich, sie werden ständig verwechselt, und sie beantworten verschiedene Fragen. Dieses Kapitel behandelt beide, an der Umfrage von Ines und am Kaufverhalten der Kundschaft von Korbwerk, Lenas erfundenem Onlineshop für Geschenkkörbe in Hamburg aus früheren Kapiteln. Dünenhof, Korbwerk und jede Zahl hier sind erfunden, damit ich jeden Schritt zeigen kann. Die Zahlen stammen aus simulierten Dateien, und der Code weiter unten gibt genau das aus, was die Tabellen zeigen.
Wo dieses Kapitel in der Serie steht
Das ist Kapitel 12 von 21 meiner Serie Marketing Analytics, im dritten Teil über Verfahren für Wechselbeziehungen (Kapitel 11 bis 14). Das vorige Kapitel, simultane Gleichungen: wenn Marketing Umsatz treibt und Umsatz Marketing, war die Brücke: zwei Ergebnisse, jedes zugleich eine Ursache. Ab hier gibt es gar kein Ergebnis mehr. Wir fragen nicht mehr, was den Umsatz vorhersagt, sondern wie Variablen zusammenhängen. Das nächste Kapitel, Segmentierung: Strategie vor Algorithmen, fragt, wofür ein Segment da ist, bevor jemand eine Bibliothek für Clustering öffnet, und Kapitel 14 nutzt dann die Komponenten, die hier entstehen, als Rohmaterial.
Zwei Verfahren, die sich ähneln und es nicht sind
Beide Methoden beginnen mit demselben Objekt, der Korrelationsmatrix deiner Variablen: einer quadratischen Tabelle, die sagt, wie stark sich jedes Paar gemeinsam bewegt. Beide enden mit ein paar neuen Spalten, die die vielen alten ersetzen. Die Denkweisen unterscheiden sich, und der Unterschied zählt, sobald du das Ergebnis deutest.
Die Hauptkomponentenanalyse (PCA, nach dem englischen principal component analysis) ist Geometrie. Sie sucht die Richtung, in der die Punktwolke der Daten am breitesten ist, die erste Komponente, dann die breiteste Richtung im rechten Winkel dazu, und so weiter, bis sie so viele neue Achsen hat, wie es Variablen gab. Sie beschreiben dieselbe Wolke, nur gedreht. Warum die Variablen korrelieren, wird nicht angenommen. Es gibt keinen Fehlerterm. Die PCA schreibt die Daten um, ohne etwas zu verlieren, und schiebt die interessante Varianz nach vorn, damit du das Ende abschneiden kannst.
Die Faktorenanalyse (FA) ist ein Modell. Sie nimmt an, dass wenige nicht beobachtete Konstrukte, die latenten Faktoren, die beobachteten Antworten verursachen. Die unsichtbare Meinung eines Gastes über den Service erzeugt, zusammen mit etwas Rauschen, das zu jeder einzelnen Frage gehört, ihre Noten für den Empfang, für das Tempo des Personals und für seine Ortskenntnis. Die Faktorenanalyse teilt die Varianz jeder Variablen in einen gemeinsamen Teil, den die Faktoren erklären, und einen eigenen Teil, der nur zu dieser Frage gehört. Die PCA behält die ganze Varianz. Die FA will nur den gemeinsamen Teil.1
Wenn du also glaubst, dass deine Fragen Konstrukte messen, wie in einer Umfrage, ist die Faktorenanalyse das ehrliche Werkzeug. Willst du nur korrelierte Verhaltensvariablen zu Eingaben für Clustering oder Regression verdichten, ist die PCA schneller, stabiler und nimmt weniger an. Oft liefern beide ähnliche Ladungen, deshalb werden sie verwechselt, und sie laufen auseinander, sobald die eigenen Varianzen groß sind.
Ein Beispiel: Lenas Kundentabelle hat eine Zahl der Bestellungen und einen Gesamtumsatz. Niemand glaubt, dass ein verborgenes "Ausgabenkonstrukt" beides verursacht. Sie bewegen sich gemeinsam, weil der Umsatz im Wesentlichen Bestellungen mal Warenkorb ist. Das ist ein Fall für die PCA. Die drei Fragen von Ines zu Empfang, Problemlösung und Ortskenntnis sind etwas anderes. Sie wurden geschrieben, um eine Sache zu messen, den Service, aus drei Richtungen. Das ist ein Fall für die Faktorenanalyse.
Erst standardisieren, dann die Korrelationsmatrix bauen
Die PCA sucht die Richtung der größten Varianz in den Einheiten, die du ihr gibst. Der Umsatz in Euro schwankt in den Tausendern, eine Klickrate in den Hundertsteln, also ist die erste Komponente auf Rohdaten einfach der Umsatz. Die Lösung ist, jede Variable vorher auf dieselbe Skala zu bringen:
Dabei ist der Rohwert der Variablen für Kundin oder Befragten , der Mittelwert der Variablen , ihre Standardabweichung, und der standardisierte Wert, der sagt, wie viele Standardabweichungen diese Person über oder unter dem Durchschnitt liegt. ist die Tabelle aller standardisierten Werte, eine Zeile pro Person und eine Spalte pro Variable, ist diese Tabelle auf die Seite gelegt (die Transponierte), ist die Zahl der Zeilen, und ist die Korrelationsmatrix: eine Tabelle von mal , wobei die Zahl der Variablen ist, mit Einsen auf der Diagonale und der Korrelation jedes Paares überall sonst. Mittelwerte und Standardabweichungen erklärt Grundlagen: Streuung, die Korrelation Grundlagen: Korrelation, und wie man solche Tabellen multipliziert Grundlagen: Matrizen.
Auf Rohdaten hängt das Ergebnis von den Maßeinheiten ab, also ergibt eine PCA auf Rohwerten nur Sinn, wenn alle Variablen dieselbe Einheit haben.2
Rechenbeispiel: zwei Spalten von Korbwerk
Nimm eine Kundin mit sieben Bestellungen, während die durchschnittliche Kundschaft von Korbwerk 3,4 Bestellungen hat und die Standardabweichung 2,6 beträgt. Ihre standardisierte Zahl der Bestellungen ist . Ihr Umsatz bekommt dieselbe Behandlung in seinen eigenen Einheiten. Über 6.200 Kundinnen und Kunden korrelieren die logarithmierten Bestellungen und der logarithmierte Umsatz mit 0,89, also hat die Korrelationsmatrix für nur diese beiden Variablen Einsen auf der Diagonale (jede Variable mit sich selbst) und 0,89 in den beiden anderen Zellen. Diese kleine Matrix nehme ich in den nächsten Abschnitt mit.
Die Mathematik der Hauptkomponenten
Die Korrelationsmatrix wird in ihre Eigenvektoren und Eigenwerte zerlegt:
Dabei ist die Korrelationsmatrix von mal , eine Matrix von mal , deren Spalten die Eigenvektoren sind (jede Spalte enthält die Gewichte, die eine Komponente festlegen), ihre Transponierte, und eine Diagonalmatrix mit den Eigenwerten bis , absteigend sortiert. Jeder Eigenwert ist die Varianz einer Komponente.2 Die Matrixschreibweise erklärt Grundlagen: Matrizen, die Varianz Grundlagen: Streuung.
Der Wert einer Person auf der ten Komponente ist eine gewichtete Summe ihrer standardisierten Werte:
Dabei ist ihr Wert auf Komponente , ihr Vektor aus standardisierten Werten bis , die te Spalte von , und das Gewicht der Variablen in Komponente . Eine gewichtete Summe einer Zahlenreihe ist eine Zeile eines Matrixprodukts, siehe Grundlagen: Matrizen.
Die Ladung der Variablen auf Komponente ist die Korrelation zwischen beiden, und sie ist das Gewicht, hochskaliert mit der Wurzel aus der Varianz der Komponente:
Dabei ist die Ladung, das Gewicht von oben und der Eigenwert von Komponente . Eine Ladung liest sich wie jede Korrelation, von minus 1 bis 1, siehe Grundlagen: Korrelation.
Weil jede standardisierte Variable eine Varianz von genau eins hat, summieren sich die Varianzen auf der Diagonale von zu , und die Eigenwerte ebenso.2 Der Anteil der Gesamtvarianz, den Komponente trägt, ist dann einfach
Dabei ist der Anteil der gesamten Varianz, den Komponente erklärt, ihr Eigenwert, die Summe aller Eigenwerte und die Zahl der Variablen. Es ist ein ganz gewöhnlicher Anteil an einer Summe, siehe Grundlagen: Verhältnisse und Raten.
Rechenbeispiel: aus Bestellungen und Umsatz wird eine Komponente
Für eine Korrelationsmatrix von zwei mal zwei mit der Korrelation sind die Eigenwerte und , und die Eigenvektoren sind die beiden Diagonalen, mit Gewichten von jeweils .
- Eigenwerte: und . Zusammen ergeben sie 2, die Zahl der Variablen.
- Anteil der ersten Komponente: , also sagen Bestellungen und Umsatz 94,5 % von allem, was sie sagen, gemeinsam.
- Gewichte der ersten Komponente: . Die Komponente ist "Bestellungen und Umsatz, zu gleichen Teilen".
- Ladungen: . Beide Variablen korrelieren mit 0,97 mit der Komponente.
- Eine Kundin mit standardisierten Bestellungen von 1,2 und einem standardisierten Umsatz von 0,8 kommt auf auf der ersten Komponente und auf auf der zweiten, den kleinen Rest, weil sie pro Bestellung etwas weniger ausgibt, als ihre Zahl der Bestellungen erwarten lässt.
Zwei Spalten, eine echte Dimension. Bei 18 Spalten rechnet der Computer, und sonst ändert sich nichts.
Wie viele Komponenten oder Faktoren du behältst
Die Kaiser Regel behält jede Komponente mit einem Eigenwert über eins, denn eine Komponente, die weniger wert ist als eine einzelne ursprüngliche Variable, verdichtet nichts. Sie ist in der meisten Software voreingestellt, und in den Simulationen von Costello und Osborne behielt sie in 36 % der Stichproben zu viele Faktoren.1 Der Scree Plot zeichnet die Eigenwerte der Reihe nach und sucht den Knick, an dem die Kurve in Geröll übergeht.2 Die Parallelanalyse, 1965 von John Horn vorgeschlagen, berechnet die Eigenwerte von Zufallsdaten derselben Größe und behält nur Komponenten, deren Eigenwerte über dem liegen, was der Zufall allein schafft.3 Costello und Osborne nennen sie genau und einfach anzuwenden.
Ich nutze alle drei. Wenn sie übereinstimmen, traue ich der Zahl. Wenn nicht, behalte ich die kleinere Zahl und sage es. Und die Deutbarkeit sticht alle drei: Ein Faktor, den du aus seinen Fragen nicht benennen kannst, ist kein Befund. Beide Rechenbeispiele weiter unten zeigen die drei Regeln bei der Arbeit, und bei Korbwerk sind sie sich uneinig.
Das Faktorenmodell
Die Faktorenanalyse schreibt jede beobachtete Variable als gewichtete Summe weniger latenter Faktoren plus ihren eigenen Teil:
Dabei ist der standardisierte Wert der Frage , bis sind die latenten Faktoren (weit weniger als die Fragen), ist die Ladung der Frage auf Faktor , und der eigene Teil der Frage , das Stück, das kein Faktor erklärt. Der Text in der Formel, "or in matrix form", heißt "oder in Matrixform": Dort enthält alle Fragen, ist die Ladungsmatrix von mal und die eigenen Teile. Jede Zeile ist eine Regression auf Variablen, die niemand sehen kann, siehe Grundlagen: Regression und Grundlagen: Matrizen.
Sind die Faktoren unkorreliert und haben Varianz eins, legt das Modell eine Struktur für die ganze Korrelationsmatrix fest:4
Dabei ist die Korrelationsmatrix, der Teil, den die Faktoren erklären, eine Diagonalmatrix der eigenen Varianzen , und die Kommunalität der Frage : die Summe ihrer quadrierten Ladungen über die Faktoren, also der Anteil ihrer Varianz, den die Faktoren erklären. Varianzanteile erklärt Grundlagen: Streuung, quadrierte Korrelationen Grundlagen: Korrelation.
Eine Frage mit einer Kommunalität von 0,70 ist gut abgebildet. Eine mit 0,25 ist überwiegend Rauschen oder misst etwas, das die Faktoren nicht abdecken, und gehört hinterfragt oder gestrichen. Geschätzt wird mit Maximum Likelihood oder der Hauptachsenmethode. Beide rechnen in Schleifen, bis die vom Modell implizierten und die beobachteten Korrelationen so gut wie möglich übereinstimmen.4
Rechenbeispiel: die Kommunalität einer Frage
In der endgültigen Lösung für Ines lädt "der Empfang war herzlich und einladend" mit 0,73 auf den ersten Faktor, 0,16 auf den zweiten, 0,15 auf den dritten und 0,18 auf den vierten. Die Kommunalität ist
Dabei ist die Kommunalität dieser Frage, und jeder Summand ist eine ihrer vier Ladungen zum Quadrat. Die vier Faktoren erklären also 61 % davon, wie Gäste den Empfang bewerten, und der eigene Teil ist . Diese 39 % gehören der Frage selbst: der bestimmten Person am Empfang an dem bestimmten Abend, und dem Rauschen. Die Rechnung steht in Grundlagen: Korrelation.
Die Rotation ändert das Lesen, nicht die Passung
Eine Faktorlösung ist nicht eindeutig: Jede Drehung der Faktorachsen passt genauso gut zu den Daten.4 Das ist eine Freiheit, kein Makel, und du nutzt sie, um die Drehung zu wählen, die sich am leichtesten lesen lässt. Varimax, 1958 von Henry Kaiser eingeführt, hält die Faktoren im rechten Winkel und drückt jede Frage dazu, auf einen Faktor stark und auf die übrigen schwach zu laden.5 Oblimin lässt die Faktoren korrelieren, was für Umfragen realistischer ist, denn ein Gast, der sich gut betreut fühlt, findet meist auch den Preis fair.
Ich fange mit Varimax an, weil die Tabelle sauberer wird, und prüfe dann mit Oblimin, ob sich die Geschichte ändert. Costello und Osborne gehen weiter und empfehlen die schiefwinklige Rotation als Standard, weil sie eine rechtwinklige Lösung wiedergibt, wenn die Faktoren wirklich unkorreliert sind, und die Information behält, wenn sie es nicht sind.1 So oder so: Wähl die Rotation, bevor du die Ladungen siehst, und nenn sie im Bericht.
Rechenbeispiel: die Achsen um 45 Grad drehen
Eine Frage lädt 0,60 auf Faktor eins und 0,60 auf Faktor zwei. Ihre Kommunalität ist . Dreh beide Achsen um 45 Grad, sodass :
- Neue Ladung auf Faktor eins: .
- Neue Ladung auf Faktor zwei: .
- Neue Kommunalität: .
Die Frage gehört jetzt klar zu einem Faktor, und ihre Kommunalität hat sich nicht bewegt. Die Rotation kauft Lesbarkeit, ohne an Passung zu kosten.
Rechenbeispiel: Dünenhof, 24 Fragen, vier Faktoren
1.340 Antworten, 24 Fragen, 24 Eigenwerte, die sich zu 24 summieren. Das Kaiser Meyer Olkin Maß, das fragt, ob die Fragen überhaupt genug Varianz teilen, um sie zu faktorisieren, liegt bei 0,94. Kaiser nannte Werte über 0,9 "marvelous" (wunderbar) und alles unter 0,5 inakzeptabel.6 Die Daten lassen sich also faktorisieren. Die ersten 12 Eigenwerte, gegen das 95. Perzentil derselben Eigenwerte aus Zufallsdaten derselben Form:
Die waagrechte Achse ist die Nummer der Komponente, die senkrechte ihr Eigenwert. Die Linie der Umfrage fällt steil bis zur vierten Komponente und wird dann flach, während die Zufallslinie fast waagrecht knapp über eins verläuft. Wo die Umfragelinie unter sie fällt, zwischen der vierten und fünften Komponente, endet die Struktur und beginnt das Rauschen.
Die erste Komponente allein trägt 7,69 von 24, also 32,0 % der gesamten Varianz: eine allgemeine Neigung "alles war gut", die durch jede Antwort läuft. Die zweite trägt 11,3 %, die dritte 8,5 %, die vierte 7,7 %. Zusammen erklären die vier . Der fünfte Eigenwert, 0,71, liegt unter Kaisers Linie von eins und unter den 1,15, die Zufallsdaten an fünfter Stelle liefern, und der Scree Plot wird flach. Alle drei Regeln sind sich einig: vier.
Dann die Schätzung mit Maximum Likelihood und Varimax Rotation. Eine Frage hat sie nicht überlebt. "Geschwindigkeit des WLAN" lud 0,38 auf den Zimmerfaktor, 0,36 auf den Servicefaktor und 0,15 und 0,10 auf die beiden anderen, für eine Kommunalität von . Sie misst keines der vier Konstrukte. Ich nehme sie aus der Lösung und berichte sie getrennt, die richtige Behandlung für eine Frage, die im Betrieb zählt, aber zu keinem Konstrukt gehört. Die neue Schätzung auf den übrigen 23 Fragen ergibt diese Ladungen, 12 davon gezeigt (die anderen 11 folgen demselben Muster):
| Frage | Service | Zimmer | Essen | Preis und Wert |
|---|---|---|---|---|
| Der Empfang war herzlich und einladend | 0,73 | 0,16 | 0,15 | 0,18 |
| Das Personal hat Probleme schnell gelöst | 0,75 | 0,17 | 0,12 | 0,18 |
| Das Personal kannte sich in der Gegend gut aus | 0,63 | 0,15 | 0,13 | 0,16 |
| Das Zimmer war bei Ankunft sauber | 0,17 | 0,79 | 0,11 | 0,10 |
| Bett und Schlafqualität | 0,18 | 0,73 | 0,07 | 0,07 |
| Zustand des Badezimmers | 0,16 | 0,74 | 0,11 | 0,09 |
| Qualität des Frühstücks | 0,17 | 0,11 | 0,77 | 0,19 |
| Qualität des Abendessens | 0,14 | 0,08 | 0,72 | 0,19 |
| Regionale Produkte aus Mecklenburg auf der Karte | 0,16 | 0,10 | 0,62 | 0,11 |
| Der Preis war fair für das, was wir bekommen haben | 0,19 | 0,15 | 0,15 | 0,73 |
| Die Extras waren fair bepreist | 0,16 | 0,13 | 0,16 | 0,69 |
| Ich würde zu diesem Preis wieder direkt buchen | 0,27 | 0,14 | 0,17 | 0,57 |
Lies Zeile für Zeile. Die ersten drei Fragen laden zwischen 0,63 und 0,75 auf den ersten Faktor und unter 0,19 auf die anderen drei, also geht es bei Faktor eins um Menschen, und ich nenne ihn Service. Die Zeilen vier bis sechs sammeln sich auf dem zweiten Faktor mit Ladungen von 0,73 bis 0,79 und nichts über 0,18 anderswo: Zimmer. Die Zeilen sieben bis neun bestimmen Essen, wobei "regionale Produkte aus Mecklenburg auf der Karte" mit 0,62 schwächer ist: teils geht es ums Essen, teils darum, ob dem Gast regionale Produkte überhaupt wichtig sind. Die letzten drei Zeilen bilden Preis und Wert. Schau dir die letzte an: "Ich würde zu diesem Preis wieder direkt buchen" lädt 0,57 auf Preis und Wert, aber auch 0,27 auf Service, mehr als jede andere Frage als zweite Ladung. Diese leichte Querladung sagt etwas: Die Entscheidung wiederzukommen hängt vor allem an der Fairness und ein wenig daran, wie man behandelt wurde.
Die Struktur, die das Modell annimmt, zuerst die latenten Ursachen und danach die beobachteten Antworten:
Die Pfeile laufen vom Unsichtbaren zum Sichtbaren. Die Analyse arbeitet in die andere Richtung, von den 23 Noten zurück zu den vier Meinungen, die sie am plausibelsten erzeugt haben.
Von vier Faktoren zu einer Entscheidung
Faktoren zu benennen ist angenehm, aber keine Entscheidung. Die Umfrage hat auch gefragt, "wie wahrscheinlich ist es, dass du uns weiterempfiehlst", auf einer Skala von 0 bis 10. Also berechne ich für jeden Gast die vier Faktorwerte (um null zentriert, eine Einheit entspricht ungefähr einer Standardabweichung) und regressiere die Empfehlungsnote darauf:
| Einflussgröße | Koeffizient | Standardfehler | Lesart |
|---|---|---|---|
| Achsenabschnitt | 8,14 | 0,03 | der durchschnittliche Gast bei durchschnittlichen Faktorwerten |
| Service | 0,56 | 0,03 | eine Einheit mehr Service bringt 0,56 Punkte |
| Zimmer | 0,44 | 0,03 | der kleinste Hebel der vier |
| Essen | 0,53 | 0,03 | knapp hinter Service |
| Preis und Wert | 0,69 | 0,03 | der größte Hebel, und es ist nicht der Zimmerpreis |
Das Modell erklärt 48 % der Varianz in der Empfehlung. Weil die Varimax Faktoren unkorreliert sind, sind es ihre geschätzten Werte fast auch (kein Paar über 0,07), und die Koeffizienten kämpfen nicht gegeneinander, wie es 24 rohe Fragen täten. Du kannst jeden für sich lesen. Die Regression und ihre Standardfehler behandelt Nachfrage und Preiselastizität mit Regression modellieren.
Preis und Wert ist der stärkste Hebel, mal so stark wie Zimmer. Aber dieser Faktor entsteht genauso aus "die Extras waren fair bepreist" wie aus dem Zimmerpreis. In der Folgebefragung des Beispiels, die die Frage nach den Extras in ihre Teile zerlegt, sind Parken, Zugang zum Spa und die Minibar die wunden Punkte: Entscheidungen über die Preisgestaltung, die fast nichts kosten, kein Rabatt aufs Zimmer. Zimmer, wofür Ines den Großteil des Budgets im nächsten Jahr vorgesehen hatte, ist für die Gäste, die sie schon hat, der schwächste der vier Hebel.
Das ist der ganze Ertrag: 24 Spalten auf vier verdichtet, gereiht gegen die eine Zahl, die dem Geschäft wichtig ist. Ob Gäste, die über die großen Buchungsportale kommen, anders reagieren, ist eine Frage für das nächste Kapitel, und deshalb bleiben die Faktorwerte als Spalten in der Gästetabelle, statt mit dem Bericht zu sterben.
Rechenbeispiel: Korbwerk, 18 Variablen, drei Komponenten
Das zweite Beispiel braucht keine Umfrage. Für jede der 6.200 Kundinnen und Kunden von Korbwerk mit einer Bestellung in den letzten 14 Monaten liefert Lenas Bestellhistorie 18 Verhaltensvariablen: wie viel und wie oft sie kaufen, wie sie schenken (Grußkarten, andere Lieferadressen, Dezember, eine Firma auf der Rechnung), wie sie auf Angebote reagieren (Gutscheine, Rabatthöhe, Klicks in Mails, Tage vom Angebot bis zur Bestellung), und vier, die sich als weniger wichtig herausstellen (Bestellungen vom Handy, Newsletter, Bewertungen, Retouren).
Kapitel 14 will diese Kundschaft clustern, und ihm 18 korrelierte Spalten zu füttern wäre ein Fehler. Bestellungen und Umsatz korrelieren mit 0,89, also würde k means dieselbe Information doppelt zählen, und die "Segmente" wären verkleidete Umsatzbänder. Das ist ein Fall für die PCA: keine Theorie, dass eine latente "Schenkneigung" irgendetwas verursacht, nur die wenigsten unkorrelierten Spalten, die das meiste der Information behalten. Fünf schiefe Variablen werden zuerst logarithmiert, weil einige Firmenkunden ein Vielfaches des Medians ausgeben und die erste Komponente sonst "die Großkunden gegen alle anderen" wäre. Dann standardisieren und zerlegen:
Die waagrechte Achse ist die Nummer der Komponente, die senkrechte der Eigenwert. Drei Komponenten liegen deutlich über der Zufallslinie, und ab der vierten läuft die Linie von Korbwerk an ihr entlang, auf ihr oder knapp darunter. Der vierte Eigenwert, 1,05, besteht die Kaiser Regel und fällt bei der Parallelanalyse durch, die an vierter Stelle 1,06 liefert. Die Komponenten vier bis acht, alle nahe 1,0, sind Reste: das, was der durchschnittliche Bestellwert nicht mit dem Rest teilt, und die vier Variablen, die mit fast nichts korrelieren (Anteil Handy, Newsletter, Bewertungen, Retouren), untereinander gemischt. Ich behalte drei, die der Varianz tragen. Nach einer Varimax Rotation lassen sich die Komponenten leicht benennen:
| Komponente | Varianzanteil nach Rotation | Variablen mit den größten Ladungen |
|---|---|---|
| 1 Volumen | 19,4 % | Bestellungen 0,95, Umsatz 0,90, verschiedene Kategorien 0,85, aktive Monate 0,81, Tage seit der letzten Bestellung minus 0,61 |
| 2 Schenkneigung | 14,9 % | Anteil mit Grußkarte 0,87, Versand an andere Adresse 0,86, Anteil im Dezember 0,81, Firma auf der Rechnung 0,55, durchschnittlicher Bestellwert 0,43 |
| 3 Rabattneigung | 14,5 % | Anteil mit Gutschein 0,87, durchschnittliche Rabatthöhe 0,85, Klickrate auf Angebote 0,79, Tage vom Angebot bis zur Bestellung minus 0,70 |
Die Rotation verschiebt Varianz zwischen den drei Komponenten, aber nicht aus ihnen heraus: , dieselbe Summe wie vor der Rotation, bis auf Rundung.
Das Vorzeichen zählt hier. "Tage seit der letzten Bestellung" lädt minus 0,61 auf Volumen, weil eine Kundin, die viel kauft, fast schon per Definition vor kurzem da war. Eine negative Ladung sagt, dass sich die Variable gegen die Komponente bewegt. "Tage von der Angebotsmail bis zur Bestellung" lädt aus demselben Grund negativ auf Rabattneigung: Wer auf Rabatte reagiert, bestellt an dem Tag, an dem der Gutschein ankommt.
In Komponente zwei steckt die eigentliche Struktur des Shops. Sie trennt die Schenkenden, die Körbe mit Grußkarte an andere Adressen schicken und pro Bestellung etwas mehr ausgeben, von denen, die für sich selbst kaufen, mit derselben Zahl von Bestellungen, und alles nach Hause schicken. Niemand hat ihr gesagt, was eine schenkende Kundin ist, ein gutes Zeichen, dass der Unterschied in den Daten lebt und nicht nur in Lenas Kopf.
Drei unkorrelierte Werte pro Kunde gehen jetzt in Kapitel 14, damit k means jede Dimension fair behandelt, statt den Umsatz dreifach zu zählen. Warum Verhalten als Grundlage für Segmente besser ist als Demografie, begründet Segmentierung ist keine Demografie. Das hier ist der mechanische Schritt, der das möglich macht.
Selbst durchführen
Du brauchst eine breite Tabelle, eine Zeile pro befragter Person oder Kunde, eine Spalte pro Variable, mit wenigen Lücken. Für Umfragedaten verlangt eine gängige Faustregel zehn Antworten pro Frage. In den Simulationen von Costello und Osborne fand selbst dieses Verhältnis die richtige Faktorstruktur nur in 60 % der Fälle, gegen 70 % bei 20 Antworten pro Frage und 40 % bei fünf.1 24 Fragen mit 1.340 Antworten, rund 56 pro Frage, sind also bequem, und 24 Fragen mit 90 Antworten sind bestenfalls ein Münzwurf. Verhaltensvariablen sind meist stark schief, also logarithmier Zählungen und Beträge vor dem Standardisieren.
In Python ist die PCA Seite für Korbwerk kurz. Sie nutzt scikit learn für die Zerlegung7 und das Paket factor_analyzer für die Varimax Rotation:8
import numpy as np, pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from factor_analyzer.rotator import Rotator
X = pd.read_csv("hamper_behaviour.csv").set_index("customer_id")
skewed = ["orders", "spend", "avg_order_value", "days_since_last", "days_offer_to_order"]
X[skewed] = np.log1p(X[skewed]) # zuerst die langen Schwänze zähmen
Z = StandardScaler().fit_transform(X) # PCA auf der Korrelationsmatrix
eig = np.linalg.eigvalsh(np.corrcoef(Z, rowvar=False))[::-1] # größter zuerst
rng = np.random.default_rng(1) # Parallelanalyse: gleiche Form, reines Rauschen
rand = np.percentile([np.linalg.eigvalsh(np.corrcoef(rng.standard_normal(Z.shape), rowvar=False))[::-1]
for _ in range(50)], 95, axis=0)
print(np.round(eig[:6], 2), np.round(rand[:6], 2), np.round(eig[:3].sum() / len(eig), 3))
pca = PCA(n_components=3).fit(Z)
loadings = pca.components_.T * np.sqrt(eig[:3]) # Korrelation jeder Variablen mit jeder Komponente
rotated = pd.DataFrame(Rotator(method="varimax").fit_transform(loadings),
index=X.columns, columns=["volume", "gifting", "deal"]) # benannt, nachdem ich sie gelesen habe
print(rotated.round(2))
scores = pd.DataFrame(Z @ np.linalg.pinv(rotated.values.T), index=X.index, columns=rotated.columns)
scores.to_csv("hamper_components.csv") # drei Spalten für das Kapitel zur Segmentierung
Er gibt die Eigenwerte und Zufallsschwellen aus dem Diagramm aus, den behaltenen Anteil (0.489) und die Ladungen aus der Tabelle. Die drei gespeicherten Spalten mit den Werten korrelieren untereinander mit genau null.
Für die Umfrage schätzt dasselbe Paket factor_analyzer das Faktorenmodell mit Maximum Likelihood und Rotation und berechnet das Kaiser Meyer Olkin Maß:8
import numpy as np, pandas as pd
import statsmodels.api as sm
from factor_analyzer import FactorAnalyzer
from factor_analyzer.factor_analyzer import calculate_kmo
survey = pd.read_csv("guest_survey.csv")
items = survey.drop(columns=["guest_id", "recommend"]) # die 24 Fragen mit Noten
print("KMO", round(calculate_kmo(items)[1], 2))
eig = np.linalg.eigvalsh(items.corr())[::-1]
rng = np.random.default_rng(1) # Parallelanalyse, wie beim Shop für Geschenkkörbe
rand = np.percentile([np.linalg.eigvalsh(np.corrcoef(rng.standard_normal(items.shape), rowvar=False))[::-1]
for _ in range(50)], 95, axis=0)
print(np.round(eig[:6], 2), np.round(rand[:6], 2))
fit = FactorAnalyzer(n_factors=4, rotation="varimax", method="ml").fit(items)
h2 = pd.Series(fit.get_communalities(), index=items.columns)
print(h2[h2 < 0.4].round(2)) # Fragen, die die vier Faktoren kaum erklären
items = items.drop(columns=h2[h2 < 0.4].index)
fit = FactorAnalyzer(n_factors=4, rotation="varimax", method="ml").fit(items)
print(pd.DataFrame(fit.loadings_, index=items.columns).round(2)) # die Tabelle der Ladungen
names = ["room", "service", "value", "food"] # benannt, nachdem ich die Ladungen oben gelesen habe
scores = pd.DataFrame(fit.transform(items), columns=names)
model = sm.OLS(survey["recommend"], sm.add_constant(scores)).fit()
print(model.params.round(2), model.bse.round(2), round(model.rsquared, 2))
Er gibt KMO 0.94 aus, die Eigenwerte aus dem Diagramm, markiert wifi_speed 0.31 und zeigt dann die Ladungen und die Regression aus den Tabellen, mit einem R Quadrat von 0.48. In R erledigt das Paket psych dasselbe, mit fa.parallel für die Zahl der Faktoren und fa für die rotierte Lösung.9
Zeitaufwand: Eine Faktorenanalyse einer Umfrage ist eine Woche Arbeit, mit Bereinigung, Prüfung der Rotation und Bericht, und den größten Teil der Woche frisst die Bereinigung. Eine PCA auf Verhaltensdaten sind zwei Tage, sobald die Kundentabelle steht, und in der Kundentabelle steckt die eigentliche Arbeit.
Fünf Prüfungen, bevor du einer Lösung traust
- Eignung der Stichprobe. Das Kaiser Meyer Olkin Maß sollte deutlich über 0,6 liegen. Kaiser nannte die 0,60er "mediocre" (mittelmäßig) und die 0,70er "middling" (durchschnittlich).6 Darunter teilen die Variablen nicht genug Varianz, um sie zu faktorisieren.
- Reliabilität. Cronbachs Alpha für die Fragen jedes Faktors, das sagt, wie gut die Fragen miteinander übereinstimmen,10 sollte mindestens 0,70 betragen, die Schwelle, die in der sozialwissenschaftlichen Forschung meist als akzeptabel gilt.11
- Die Zahl. Die Parallelanalyse sollte die Zahl der Faktoren bestätigen.
- Stabilität. Teil die Stichprobe zufällig in zwei Hälften, schätz beide und vergleich die Ladungen. Sind sich die Hälften uneinig, welche Frage wohin gehört, ist die Struktur nicht stabil, und ich berichte weniger Faktoren.
- Rotation. Prüf, ob eine schiefwinklige Rotation die Geschichte ändert. Sagt Oblimin, dass zwei Faktoren mit 0,7 korrelieren, sind sie vielleicht einer, und dann sollte ich das sagen, statt saubere vier zu präsentieren, wenn die Daten drei bevorzugen.
Ein Beispiel: Dünenhof besteht die erste und dritte Prüfung oben, ein KMO von 0,94 und vier Faktoren, bestätigt von der Parallelanalyse. Die anderen drei brauchen die Gruppen der Fragen, zwei Hälften mit je 670 Gästen und eine neue Schätzung mit Oblimin.
Fallstricke
Der Benennungsfehler. Sobald du einen Faktor "Preis und Wert" nennst, fängst du an zu glauben, die Daten hätten Wert gemessen. Haben sie nicht. Sie haben sechs Fragen gemessen, die eine Rotation zusammengruppiert hat, und dein Name ist eine Hypothese darüber, warum. Ich habe einmal einen Faktor mit dem Etikett "Markenliebe" gesehen, der ausschließlich aus Fragen zur Liefergeschwindigkeit bestand. Benenn Faktoren aus ihren Fragen, lass die Fragen im Bericht neben dem Namen stehen, und behandle den Namen als Arbeitstitel.
Die Kaiser Regel auf Autopilot. Sie gehört zu den ungenauesten Wegen, die Zahl der Faktoren zu wählen, und behält tendenziell zu viele.1 Bei Korbwerk erzeugt eine Handvoll lose verbundener Variablen Eigenwerte nahe eins, und Kaiser würde den ersten davon fröhlich als "Komponente" behalten.
Der freundliche Gast. Wenn manche Gäste aus Höflichkeit alles hoch bewerten, ist ein Teil der großen ersten unrotierten Komponente eine Stimmung und kein Konstrukt. Die Rotation hilft, umgekehrt formulierte Fragen helfen mehr, und diese Komponente als "Gesamtzufriedenheit" zu berichten, ohne das dazuzusagen, ist eine kleine Unredlichkeit.
Komponenten für ewig halten. Eine Komponente fasst einen bestimmten Datensatz in einer bestimmten Saison zusammen. Wiederhol die Analyse für Korbwerk nächstes Jahr mit neuen Produkten, und die Komponente Schenkneigung schluckt vielleicht die Firmenvariablen oder zerfällt in zwei. Komponenten sind Werkzeuge für die Entscheidung, die vor dir liegt, keine Tatsachen über deine Kundschaft, und Dashboards, die auf ihnen beruhen, sollten ein Datum tragen.
Wie ich das für Kunden mache
Was du bekommst, hängt davon ab, welches der beiden Probleme du hast. Hast du eine Umfrage oder willst eine, brauche ich den Wortlaut der Fragen, die rohen Antworten mit einer Zeile pro befragter Person und, im besten Fall, ein Geschäftsergebnis pro Person, etwa ob sie wieder gebucht oder verlängert hat. Hast du eine Kundendatenbank, brauche ich die Historie der Bestellungen und Ereignisse, damit ich die Verhaltenstabelle selbst bauen kann, denn die Variablen, die schon im CRM liegen, sind selten die richtigen.
Es beginnt mit dem kostenlosen Workshop, ein paar Stunden, in denen wir festlegen, welche Entscheidung die Analyse stützen soll und wie das Ergebnis aussehen muss, damit du danach handeln kannst. Danach zwei Wochen echte Arbeit auf meine Rechnung, bevor du dich auf irgendetwas festlegst. Bei einer Umfrage heißt das: die Faktorlösung mit Ladungen und Reliabilitäten, die Faktorwerte zurückgeschrieben in deine Tabelle der Befragten, und ein Papier von zwei Seiten, das die Faktoren gegen dein Ergebnis reiht, mit dem Koeffizienten, seiner Fehlermarge und dem Risiko, das ich beim Handeln sehe. Bei einer Datenbank heißt das: die Verhaltenstabelle, die Komponentenlösung und die Werte als Spalten in deinen eigenen Tabellen, bereit für die Segmentierung, dazu ein Papier, das in klaren Worten sagt, was jede Komponente bedeutet und was nicht.
Deine Rohdaten bleiben deine, und die Regeln für Code und Modelle stehen in den Bedingungen für Analytics und Data Science. Die Seite zu Data Science beschreibt, was ich in diesem Bereich mache, und die Honorare stehen auf der Preisseite. Eine verantwortliche Person, ehrliche Zahlen mit ihrer Unsicherheit, keine Eitelkeitskennzahlen.
Fragen, bevor du nach einer Faktorlösung handelst
- Wie viele Befragte oder Kunden pro Variable sind eingeflossen, und waren es genug, um den Ladungen zu trauen?
- Welche Regel hat die Zahl der Faktoren bestimmt, und hätten Parallelanalyse oder Scree Plot eine andere Zahl ergeben?
- Wurden die Variablen vor der Zerlegung standardisiert oder logarithmiert, und welche haben dominiert, falls nicht?
- Welche Rotation wurde verwendet, wurde sie gewählt, bevor die Ladungen sichtbar waren, und ändert eine schiefwinklige Rotation die Geschichte?
- Folgen die Namen der Faktoren aus den Fragen in der Tabelle oder aus dem, was wir finden wollten?
- Wurden die Faktorwerte mit einem Geschäftsergebnis verknüpft, und wie viel dieses Ergebnisses erklären sie?
- Liegen die Werte dort, wo die nächste Analyse sie nutzen kann, und tragen sie ein Datum?
Die Serie ist von Mike Grigsbys Marketing Analytics inspiriert.12 Die Erklärungen, Beispiele und Zahlen hier sind meine eigenen.
Footnotes
-
Anna B. Costello und Jason Osborne, Best practices in exploratory factor analysis: four recommendations for getting the most from your analysis, Practical Assessment, Research, and Evaluation 10(7), 2005, https://openpublishing.library.umass.edu/pare/article/id/1650/
-
Penn State Eberly College of Science, STAT 505 Applied Multivariate Statistical Analysis, Lesson 11 Principal Components Analysis, https://online.stat.psu.edu/stat505/Lesson11
-
John L. Horn, A rationale and test for the number of factors in factor analysis, Psychometrika 30, 1965, https://doi.org/10.1007/BF02289447
-
Penn State Eberly College of Science, STAT 505 Applied Multivariate Statistical Analysis, Lesson 12 Factor Analysis, https://online.stat.psu.edu/stat505/Lesson12
-
Henry F. Kaiser, The varimax criterion for analytic rotation in factor analysis, Psychometrika 23, 1958, https://doi.org/10.1007/BF02289233
-
William Revelle, Dokumentation des Pakets psych, KMO: Kaiser Meyer Olkin measure of sampling adequacy, CRAN, https://search.r-project.org/CRAN/refmans/psych/html/KMO.html
-
Entwicklerinnen und Entwickler von scikit learn, sklearn.decomposition.PCA, Dokumentation von scikit learn, https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html
-
Educational Testing Service, Dokumentation von factor_analyzer (FactorAnalyzer, Rotator, calculate_kmo), https://factor-analyzer.readthedocs.io/en/latest/factor_analyzer.html
-
William Revelle, Dokumentation des Pakets psych, fa.parallel: scree plots of data or correlation matrix compared to random data, CRAN, https://search.r-project.org/CRAN/refmans/psych/html/fa.parallel.html
-
Lee J. Cronbach, Coefficient alpha and the internal structure of tests, Psychometrika 16, 1951, https://doi.org/10.1007/BF02310555
-
UCLA Office of Advanced Research Computing, What does Cronbach's alpha mean, https://stats.oarc.ucla.edu/spss/faq/what-does-cronbachs-alpha-mean/
-
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