Abuso di Treemap

L’uso di visualizzazioni per sintetizzare in maniera immediata delle informazioni quantitative è uno strumento potente per permettere una facile e rapida comprensione delle informazioni.

Tuttavia quando le visualizzazioni sono utilizzate in maniera casuale, senza cura, il risultato è una nebbia o un’alterazione delle informazioni che si vogliono trasmettere.

Un esempio significativo di quest’ultimo caso è  Quanto spende lo Stato per l’educazione e la cultura? Italia maglia nera in Europa per l’istruzione (7,9% del Pil).

Il mio obiettivo qui è quello di analizzare la visualizzazione e di evidenziare i principali problemi. Questo è anche uno degli esercizi assegnati nel corso di Visualizzazione dell’Informazione Quantitava.

Continua a leggere

Bullet Graph in R

Bullet graphs are an effective and efficient visual representation for key indicators (e.g. KPI), that were proposed by Stephen Few. I find them highly suitable to build dashboards. For this purpose I developed an implementation in R to draw such graphs.

In summary a bullet graph is a variation of a bar graph with additional references that consist of a thick line that represents the reference point (e.g. benchmark, goal, or previous value) and a background that identifies three levels (e.g. Low-Medium-High, Bad-Average-Good, etc.).

The figure below illustrates the main components, though a complete specification is available on Few’s web site.

Bullet Graph elements (from Wikipedia)

The function bulletgraph() provides a simple interface to plot a bullet graph, for instance to reproduce the example above we can use the following statements:

par(mfrow=c(2,1), mar=c(2,9,.1,1))

bulletgraph(x=270,ref=260,limits=c(0,200,250,300),
            name= "Revenue 2005 YTD",subname="(U.S. $ in thousands)",
            colored=F)

bulletgraph(x=270,ref=260,limits=c(0,200,250,300),
            name= "Revenue 2005 YTD",subname="(U.S. $ in thousands)")

Which generates the following diagram:

Bulletgraph

Example of generated bullet graph

The code is available as open-source under the GPL at:
http://softeng.polito.it/software/R/BulletGraph.R

Enjoy and let me know!

Update: added an option (colored=F) to have gray scale background (as recommended in the specification), and a subtitle to be able to reproduce the example.

Update 2: now the revised and tested code, with documentation too, is available on GitHub, here: https://github.com/mtorchiano/MTkR/wiki/Bullet-Graph

Il fattore di menzogna della visualizzazione

Recentemente ho scorso il rapporto Giarda sulla spesa pubblica (Elementi per una revisione della spesa pubblica), che contiene molti dati interessanti. Perciò ne consiglio la lettura a tutti.

Qui però vorrei soffermarmi su un particolare che ha attirato la mia attenzione: si tratta del grafico a barre che si trova a pagina 31 (Grafico 3) che riporto qui sotto. Il grafico rappresenta il rapporto tra studenti e docenti nella scuola, in diverse regioni.

Purtroppo questo grafico è sbagliato ed ingannevole ed è esemplificativo della scarsa cura nella visualizzazione dei dati che corrisponde ad una scarsa cultura di chi ne usufruisce.

Grafico3RapportoGiarda

Continua a leggere

Data visualization in SE research

I recently came across a couple of horrible examples of data visualization in two highly respectable publication venues for Software Engineering research: a major magazine and a major conference.

In one case a bar diagram is added with confidence interval bars that are clearly wrong: the lower bound of the interval is negative for a quantity that by definition must be positive.

In another case “bubbles” are used instead of bars with a result that is confusing and makes it difficult to compare different values.

What puzzles me is: how is it possible to have bright (if not top) scientist make such mistakes or be so careless? Maybe we should build some data visualization contents into the SE curricula (and possibly other engineers too).

Here are the two examples.

Continua a leggere

Un esempio di pessima visualizzazione

Nell’osservare i dati pubblicati dal Comitato Paritetico per la Didattica (CPD) del Politecnico di Torino mi sono venuti in mente alcuni post di Stephen Few.

Se da questa pagina (solo in Italiano..sic) si clicca sul pulsante “Cerca” viene generata la pagina con i dati relativi al tasso di risposta per l’a.a. scorso, che in pratica consistono esclusivamente in un grafico, come il seguente:

Invece di avere il numero che corrisponde al tasso di risposta (eventualmente a diversi livelli di aggregazione) viene presentata una rappresentazione grafica della relazione tra numero di studenti e numero di questionari compilati, per ogni insegnamento.

Ci sono, comunque, diverse informazioni che non c’entrano nulla con il tasso di risposta, ma anzi evidenziano delle anomalie nei dati:

  • R2 (R quadro) che può essere letto come la percentuale di variazione nel numero di questionari compilati che dipende dal numero di iscritti (il 70%),
  • la pendenza della retta di regressione (0.46), che sebbene abbia qualche analogia con il tasso di riposta è in generale diversa,
  • le dimensioni degli insegnamenti, ma senza la possibilità di discernere la loro distribuzione in dettaglio, tuttavia con la possibilità di identificare che esiste un corso con circa 430 iscritti ed uno con oltre 560(!) in netto contrasto con quanto fisicamente possibile oltre che legalmente ammissibile (es. DM 544/2007, allegato B),
  • la classificazione dei corsi (sotto o sopra la diagonale) in quelli che viceversa vedono il numero di iscritti al corso eccedere i questionari compilati, e quelli per i quali il numero di questionari compilati eccede il numero di iscritti (es. per alcuni insegnamenti intorno a 20-30 iscritti): situazione che ragionevolmente non dovrebbe esistere o che richiamano notizie al limite dell’incredibile.

Il tasso di risposta è un concetto molto semplice definito come:


Se considerariamo un semplice esempio di insegnamenti con i relativi numeri di iscritti e di questionari compilati:

Studenti 10 15 10 30 30 50 100 150 210 300
Consegnati 6 8 4 12 15 20 40 80 90 150

Il tasso di risposta può essere calcolato come 425/905=0.4696 (46.96%), mentre la pendenza della retta di regressione è 0.4861 (48.61%): in questo caso lo scarto è di circa 2 punti ma in generale può essere anche maggiore. Quindi il tasso di risposta e la pendenza della retta di regressione sebbene (spannometricamente?) simili non sono la stessa cosa.

E pensare che bastava dare un solo numero!