Kaiser Fung kritisierte kürzlich dieses Diagramm der Änderungen des verfügbaren Einkommens.

Er brachte die Idee auf, stattdessen kategorisierte Steigungsgraphen zu verwenden:

Wie machen wir so etwas in JMP? Wir können im Graph Builder Panels und Linien mit variabler Farbe erstellen. Wir müssen nur die Daten in die richtige Form bringen. Wie üblich wird ein wichtiger Schritt bei der Erstellung eines Steigungsdiagramms in Graph Builder verwendet Tabelle> Stapel um die zwei Datenspalten in eine Spalte von Etiketten und eine Spalte von Daten zu bekommen. Dann geht die Beschriftungsspalte auf die X-Achse und die Datenspalte auf die Y-Achse.
Zuerst müssen wir die Daten abrufen. Wenn ich ein schnelles Remake mache, ist es manchmal am einfachsten, die Daten direkt aus der Grafik zu lesen. Es gibt Programme und Websites, die dabei helfen. Dieses Mal habe ich die Online-App verwendet, Web Plot Digitizer , die für jede Serie eine separate CSV-Datei erstellt. Die Werte sind natürlich nur Schätzungen der ursprünglichen Werte.
Nach dem Öffnen der beiden CSV-Dateien und dem Einstellen der Spaltennamen auf "x" und "y" schrieb ich das folgende Skript, um sie zu kombinieren und einige abgeleitete Werte zu berechnen.
dt1 = Data Table( "data" );
dt2 = Data Table( "data (1)" );
dt = New Table( "changes",
New Column( "Percentile", Format( "Percent", 8, 0 ), Set Values( (1 :: 100) / 100 ) ),
New Column( "Base", Format( "Percent", 8, 1 ) ),
New Column( "Change2010", Format( "Percent", 8, 1 ) ),
New Column( "Change2013", Format( "Percent", 8, 1 ) ),
New Column( "Net2010", Format( "Percent", 8, 1 ) ),
New Column( "Net2013", Format( "Percent", 8, 1 ) ),
New Column( "Group", Character ),
New Column( "Rank" )
);
For Each Row(
dt,
dt:Base = 1.0;
dt:Change2010 = Interpolate( dt:Percentile, dt2:x << Get Values(), dt2:y << Get Values );
dt:Change2013 = Interpolate( dt:Percentile, dt1:x << Get Values(), dt1:y << Get Values );
dt:Net2010 = dt:Base * (1 + dt:Change2010);
dt:Net2013 = dt:Net2010 * (1 + dt:Change2013);
dt:Group = If(
dt:Percentile <= 0.1, "Bottom 10%",
dt:Percentile <= 0.9, "Middle 80%",
"Top 10%"
);
dt:Rank = If(
dt:Percentile <= 0.1, dt:Percentile / .1,
dt:Percentile <= 0.9, (dt:Percentile - .1) / .8,
(dt:Percentile - .9) / .1
);
);
Die Interpolation besteht darin, die "x" -Werte auf gerade Perzentilwerte auszurichten. Die Gruppe und der Rang bestimmen, wie wir im Graph Builder gruppieren und färben. Die Basis- und Nettowerte beziehen sich darauf, dass ich etwas anderes ausprobieren wollte als das, was Kaiser tat. Um den Nettoeffekt zu sehen, reicht es nicht aus, nur die Verlust- und Gewinnanteile zu sehen. Daher berechne ich den Nettoeffekt explizit und zeichne diese stattdessen.
Hinweis : Diese Berechnung kommt mit einem großen ob : Es wird davon ausgegangen, dass die Perzentile in beiden Zeiträumen gleich sind. Das heißt, dass sich die Personen in einem bestimmten Perzentil für den Zeitraum 2007-2010 für den Zeitraum 2010-2013 im gleichen Perzentil befinden. Ich weiß nicht, ob dies der Fall ist, obwohl es unwahrscheinlich ist, dass sich die Perzentile in der ersten Periode zu sehr verändert haben, da jedes Perzentil gesunken ist und meistens einheitliche Werte vorliegen.
Nach dem Stapeln der drei Spalten Base2007, Net2010 und Net2013 kann ich das Liniendiagramm erstellen. Ich habe Group in die Group X-Rolle und Rank in die Color-Rolle eingefügt, eine Referenzlinie zu 100% hinzugefügt und die Beschriftungen aktualisiert.

Ich habe gerade erkannt, dass ich zwar nicht den Basiswert für die Berechnungen brauche, aber eigentlich nicht die Basiswerte anzeigen muss (sie sind alle gleich). Nach dem Verwenden eines lokalen Datenfilters, um Base2007 auszuschließen, und nach Kaisers Beispiel, um die mittlere Gruppe zu verdünnen, erhalte ich Folgendes:

Charlie Shipp schrieb:
Das ist großartige Arbeit. Ich wachte heute Morgen auf, dachte ich
etwas Ähnliches (ein Zeitplan) für unsere persönliche Finanzierung.