Kaiser Fung a récemment critiqué ce graphique des variations du revenu disponible.

Il a mis en avant l’idée d’utiliser des graphiques de pente catégorisés à la place:

Comment pouvons-nous faire quelque chose comme ça dans JMP? Nous pouvons créer des panneaux et des lignes de couleur variable dans Graph Builder; nous avons juste besoin de mettre les données sous la bonne forme. Comme d'habitude, une étape clé dans la création d'un graphique de pente dans Graph Builder consiste à utiliser Table> Pile pour obtenir les deux colonnes de données dans une colonne d'étiquettes et une colonne de données. Ensuite, la colonne d'étiquette va sur l'axe des X et la colonne de données sur l'axe des Y.
Premièrement, nous devons obtenir les données. Parfois, lorsque je fais un remake rapide, la chose la plus simple à faire est de lire les données directement sur le graphique. Il existe des programmes et des sites Web pour vous aider. Cette fois, j'ai utilisé l'application en ligne, Numériseur Web , qui a produit un fichier CSV distinct pour chaque série. Les valeurs ne sont que des estimations des valeurs d'origine, bien sûr.
Après avoir ouvert les deux fichiers CSV et défini les noms de colonne sur "x" et "y", j'ai écrit le script suivant pour les combiner et calculer certaines valeurs dérivées.
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
);
);
L'interpolation consiste à aligner les valeurs "x" sur des valeurs de centiles paires. Le groupe et le classement permettent de contrôler la manière dont nous groupons et colorons dans le Générateur de graphes. Les valeurs de base et nette sont parce que je voulais essayer quelque chose d'un peu différent de ce que Kaiser a fait. Voir les pourcentages de perte et de gain ne suffit pas pour voir l'effet net. Je calcule donc explicitement l'effet net et les représente graphiquement.
Remarque : Ce calcul vient avec un grand si : Cela suppose que les centiles sont les mêmes pour les deux périodes. En d'autres termes, les personnes d'un centile donné pour la période 2007-2010 se trouvent dans le même centile pour la période 2010-2013. Je ne sais pas si c'est le cas, même s'il est peu probable que les centiles aient trop changé au cours de la première période, étant donné que chaque centile a chuté et à des taux essentiellement uniformes.
Après avoir empilé les trois colonnes Base2007, Net2010 et Net2013, je peux créer le graphique à lignes. J'ai placé le groupe dans le rôle du groupe X et le rang dans le rôle de la couleur, ajouté une ligne de référence à 100% et mis à jour les étiquettes.

Je viens de me rendre compte que même si j'ai besoin de la valeur de base pour les calculs, je n'ai pas réellement besoin d'afficher les valeurs de base (elles sont toutes identiques). Après avoir utilisé un filtre de données local pour exclure Base2007 et suivi l'exemple de Kaiser pour éclaircir le groupe du milieu, je reçois:

Charlie Shipp a écrit:
C'est du beau travail. En me levant ce matin, j'ai pensé à
quelque chose de similaire (un graphique temporel) pour nos finances personnelles.