Kaiser Fung recientemente criticado Este cuadro de cambios en renta disponible.

Expuso la idea de utilizar gráficos de pendiente categorizados en su lugar:

¿Cómo hacemos algo así en JMP? Podemos hacer paneles y líneas con color variable en Graph Builder; solo tenemos que poner los datos en la forma correcta. Como de costumbre, un paso clave para hacer un gráfico de pendiente en Graph Builder es usar Mesa> Pila para obtener las dos columnas de datos en una columna de etiquetas y una columna de datos. Luego, la columna de la etiqueta va en el eje X y la columna de datos en el eje Y.
Primero, necesitamos obtener los datos. A veces, cuando estoy haciendo un remake rápido, lo más sencillo es leer los datos directamente de la gráfica. Hay programas y sitios web para ayudar con eso. Esta vez, utilicé la aplicación en línea, Web Plot Digitizer , que produjo un archivo CSV separado para cada serie. Los valores son solo estimaciones de los valores originales, por supuesto.
Después de abrir los dos archivos CSV y establecer los nombres de las columnas en "x" y "y", escribí la siguiente secuencia de comandos para combinarlos y calcular algunos valores derivados.
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
);
);
La interpolación consiste en alinear los valores "x" en valores de percentiles pares. El grupo y la clasificación deben controlar cómo agrupamos y coloreamos en Graph Builder. Los valores Base y Neto se deben a que quería probar algo un poco diferente de lo que hizo Kaiser. El solo hecho de ver los porcentajes de pérdida y ganancia no es suficiente para ver el efecto neto, por lo que calculo explícitamente el efecto neto y los grafico en su lugar.
Nota : Este cálculo viene con una gran Si : Asume que los percentiles son los mismos en ambos períodos. Es decir, que las personas en un percentil dado para el período 2007-2010 se encuentran en el mismo percentil para el período 2010-2013. No sé si ese es el caso, aunque es poco probable que los percentiles hayan cambiado demasiado en el primer período dado que todos los percentiles bajaron y en su mayoría a tasas uniformes.
Después de apilar las tres columnas, Base2007, Net2010 y Net2013, puedo crear el gráfico de líneas. Puse el Grupo en el rol del Grupo X y el Rango en el rol de Color, agregué una línea de referencia al 100% y actualicé las etiquetas.

Me di cuenta de que, aunque necesito el valor base para los cálculos, en realidad no necesito mostrar los valores base (todos son iguales). Después de usar un filtro de datos locales para excluir Base2007 y seguir el ejemplo de Kaiser para diluir el grupo intermedio, obtengo:

Charlie Shipp escribió:
Este es un gran trabajo. Al despertar esta mañana, pensé en
algo similar (una trama de tiempo) para nuestras finanzas personales.