Data visualization: a reading list

Here is a collection of books and peer-reviewed articles on data visualization. There is a lot of good material on the philosophy, principles and practices of data visualization.

I plan to update the list with additional material in the future (see the current version as a draft). Do reach out if you have any recommendations.

Introduction

Graphs in Statistical Analysis (Anscombe 1973)
An Economist’s Guide to Visualizing Data (Schwabish 2014)
Data Visualization in Sociology (Healy and Moody 2014)
Beyond Bar and Line Graphs: Time for a New Data Presentation Paradigm (Weissgerber et al. 2015)
Graphical Perception: Theory, Experimentation, and Application to the Development of Graphical Methods (Cleveland and McGill 1984)
Graphic Display of Data (Wilkinson 2012)
Visualizing Data in Political Science (Traunmüller 2020)
Better Data Visualizations: A Guide for Scholars, Researchers, and Wonks (Schwabish 2021)

History

Historical Development of the Graphical Representation of Statistical Data (Funkhouser 1937)
Quantitative Graphics in Statistics: A Brief History (Beniger and Robyn 1978)

Tips and recommendations

Ten Simple Rules for Better Figures (Rougier et al. 2014)
Designing Graphs for Decision-Makers (Zacks and Franconeri 2020)
Designing Effective Graphs (Frees and Miller 1998)
Fundamental Statistical Concepts in Presenting Data: Principles for Constructing Better Graphics (Donahue 2011)
Designing Better Graphs by Including Distributional Information and Integrating Words, Numbers, and Images (Lane and Sándor 2009)

Analysis and decision making

Statistical inference for exploratory data analysis and model diagnostics (Buja et al. 2009)
Statistics and Decisions: The Importance of Communication and the Power of Graphical Presentation (Mahon 1977)
The Eight Steps of Data Analysis: A Graphical Framework to Promote Sound Statistical Analysis (Fife 2020)

Uncertainty

Researchers Misunderstand Confidence Intervals and Standard Error Bars (Belia et al. 2005)
Error bars in experimental biology (Cumming et al. 2007)
Confidence Intervals and the Within-the-Bar Bias (Pentoney and Berger 2016)
Depicting Error (Wainer 1996)
When (ish) is My Bus?: User-centered Visualizations of Uncertainty in Everyday, Mobile Predictive Systems (Kay et al. 2016)
Decisions With Uncertainty: The Glass Half Full (Joslyn and LeClerc 2013)
Uncertainty Visualization (Padilla et al. 2020)
A Probabilistic Grammar of Graphics (Pu and Kay 2020)

Tables

Let’s Practice What We Preach: Turning Tables into Graphs (Gelman et al. 2002)
Why Tables Are Really Much Better Than Graphs (Gelman 2011)
Graphs or Tables (Ehrenberg 1978)
Using Graphs Instead of Tables in Political Science (Kastellec and Leoni 2007)
Ten Guidelines for Better Tables (Schwabish 2020)

Deciding on a chart

Graph and chart aesthetics for experts and laymen in design: The role of familiarity and perceived ease of use (Quispel et al. 2016)

Chart types

Boxplots

40 years of boxplots (Wickham and Stryjewski 2011)

Pie charts

No Humble Pie: The Origins and Usage of a Statistical Chart (Spence 2005)

Infographics

Infovis and Statistical Graphics: Different Goals, Different Looks (Gelman and Unwin 2013)
InfoVis Is So Much More: A Comment on Gelman and Unwin and an Invitation to Consider the Opportunities (Kosara 2013)
InfoVis and Statistical Graphics: Comment (Murrell 2013)
Graphical Criticism: Some Historical Notes (Wickham 2013)
Tradeoffs in Information Graphics (Gelman and Unwin 2013)

Maps

Visualizing uncertainty in areal data with bivariate choropleth maps, map pixelation and glyph rotation (Lucchesi and Wikle 2017)

Scatterplot

The Many Faces of a Scatterplot (Cleveland and McGill 1984)
The early origins and development of the scatterplot (Friendly and Denis 2005)

Dot plots

Dot Plots: A Useful Alternative to Bar Charts (Robbins 2006)

3D charts

The Pseudo Third Dimension (Haemer 1951)

Teaching pedagogy

Correlational Analysis and Interpretation: Graphs Prevent Gaffes (Peden 2001)
Numbers, Pictures, and Politics: Teaching Research Methods Through Data Visualizations (Rom 2015)
Data Analysis and Data Visualization as Active Learning in Political Science (Henshaw and Meinke 2018)

Software

Excel

Effective Data Visualization: The Right Chart for the Right Data (Evergreen 2016)

R

Data Visualization (Healy 2018)
Data Visualization with R (Kabacoff 2018)
ggplot2: Elegant Graphics for Data Analysis (Wickham 2009)
Fundamentals of Data Visualization (Wilke 2019)
R Graphics Cookbook (Chang 2020)

Stata

A Visual Guide to Stata Graphics (Mitchell 2012)


Changelog
– 2021-03-01: Add ‘Better Data Visualizations’
– 2020-08-03: Add ‘Ten Guidelines for Better Tables’
– 2020-07-14: Add ‘Designing Graphs for Decision-Makers’ and ‘A Probabilistic Grammar of Graphics’ (ht: Simon Straubinger)

Nyt bogkapitel: Logistisk regression med binært udfald

Har skrevet et kapitel om binær logistisk regressionsanalyse til den nye bog, Videregående kvantitative metoder. Bogen er redigeret af M. Azhar Hussain og Jørgen Trankjær Lauridsen, der begge har gjort et fantastisk stykke arbejde.

Kapitel 3, Logistisk regression med binært udfald, giver en introduktion til, hvordan man gennemfører logistiske regressionsanalyser. Helt konkret beskrives tre procedurer, der bør gennemføres i forbindelse med en god logistisk regression: 1) estimering af en model, 2) udregning af forudsagte sandsynligheder og 3) visualisering af resultaterne.

Hele bogen er bygget op med et praktisk fokus på, hvordan tingene gøres i Stata. Do-filen til mit kapitel kan findes her.

Data fra SPSS til Stata og R

Der var engang hvor folk brugte SPSS. I dag bruger man enten Stata og/eller R, men det hænder desværre, at man finder et datasæt, der kun vil åbnes i SPSS (.sav-filer). Der findes dog måder hvorpå man kan få et datasæt fra SPSS til Stata såvel som R. I dette indlæg beskriver jeg et par af disse måder.

Hvis man har SPSS installeret, kan man åbne datasættet og gemme det i et format, der kan åbnes i Stata såvel som R. Proceduren her er simpel: Åben datasættet i SPSS, gå op under “File”, vælg “Save As” og gem filen som Comma delimited (*.csv). Denne fil kan importeres til Stata vha. følgende kommando (hvor datasættet selvfølgelig er gemt med navnet data):

insheet using "data.csv", delimiter(";")

I R kan man anvende kommandoen read.csv og gemme datasættet i en data frame. I dette tilfælde vil kommandoen for samme datasæt som i ovenstående eksempel være:

data = read.csv("data.csv", sep = ";")

Husk i begge tilfælde at angive et korrekt working directory forinden, så den kan finde datasættet. I SPSS er det muligt at gemme datasæt i Stata-format (.dta), hvor man, såfremt man gør det, kan åbne datasættet på normal vis i Stata efterfølgende. Jeg har dog flere gange oplevet at SPSS er gået ned når jeg har gjort det, hvorfor det ikke er noget jeg personligt kan eller vil anbefale.

Har man ikke SPSS installeret, findes der pakker der kan være en behjælpelig. I R kan man anvende foreign-pakken. Først henter vi og indlæser pakken, for derefter at importere datasættet til en data frame med read.spss:

install.packages("foreign")
library(foreign)
data = read.spss("data.sav", to.data.frame=TRUE)

Hvis man vil importere SPSS-filer direkte til Stata, kan man anvende usespss-pakken. Denne virker dog udelukkende på 32-bit versionen, hvorfor det er et par år siden jeg sidst anvendte den. Der kan læses mere om den teknik her.

Split numerisk variabel op i flere variable med Stata

Det hænder at man har brug for at dele en variabel op i flere variable med hver deres informationer, f.eks. en datovariabel der indeholder information om både årstal, måned og dag. Til at gøre dette kan man anvende pakken nsplit i Stata, som installeres vha. følgende kommando:

[code]. ssc install nsplit[/code]

Har vi en datovariabel med informationer om årstal, måned og dag, kan den se ud som følger:

date_c
 20120501
 20120213
 20050930
 20081010
 19990808

Denne kan så splittes op og generere tre nye variable med følgende kommando:

[code]. nsplit date_c, digits(4 2 2) g(year month date)[/code]

De tre variable der genereres får navnene year, month og date. De vil se ud som følger:

year month date
 2012  05  01
 2012  02  13
 2005  09  30
 2008  10  10
 1999  08  08

Introduktion til eksport af regressionstabeller med estout i Stata

Det kan være forbundet med en masse unødigt arbejde at skulle konstruere regressionstabeller fra bunden, når man skal formidle sine statistiske analyser fra Stata. Der findes heldigvis flere pakker til Stata, der kan være én behjælpelig med at få eksporteret regressionstabeller fra Stata til Word (eller LaTeX, HTML osv.). En af de bedste pakker til at gøre dette er estout (Jann 2005 2007).

Dette indlæg 1) introducerer hvordan man med pakken estout kan eksportere regressionstabeller fra Stata og 2) giver en oversigt over hvilke aspekter man skal være opmærksom på, når man integrerer en eksporteret regressionstabel.

1. Installation af estout

Den nemmeste måde at installere estout på, er ved at skrive følgende i kommandolinjen:

. ssc install estout, replace

Er estout allerede installeret, tjekker Stata om dine filer er opdateret. Såfremt estout ikke er installeret og det ikke resulterer i installationen af estout, kan det også installeres manuelt.

2. Konstruktion af regressionstabel

Det smarte ved estout er, at når vi gennemfører en regression, gemmes estimaterne i hukommelsen, og vi kan så få dem vist i en tabel (skal vi have flere modeller i samme tabel, klarer estout dermed også det). På den måde kan vi også få vist det mest essentielle, uden at få hele standard outputtet, der gives i Stata.

Som et eksempel vil jeg bruge data fra tabel 1 i Matthews (2000, 37). Der er tale om det klassiske eksempel med korrelationen mellem storke og fødselsraten. Datasættet kan, for interesserede, åbnes i Stata med:

. use https://erikgahner.dk/files/data/storksbabies.dta

Det første vi gør er at rydde hukommelsen for eventuelle tidligere gemte regressioner. Dette er ikke nødvendigt hvis hukommelsen i forvejen er tom, men ikke desto mindre er det en sund vane, når man begynder på konstruktionen af en ny tabel:

. eststo clear

Det eneste du så skal gøre nu for at gemme en regression i hukommelsen, er at skrive “eststo:” før kommandoen for din regression. På den måde gemmes resultaterne fra din estimation. I vores storkeeksempel vil det sige:

. eststo: reg birthrate storks

Har du flere regressionsmodeller, der skal være i din tabel, skal du bruge eststo-kommandoen flere gange. Altså:

. eststo: reg y x1
. eststo: reg y x1 x2

Derefter kan vi i vores storkeeksempel skrive esttab, for at få vist regressionstabellen. Til dette har vi en række muligheder (“options”), vi ligeledes kan anvende, for eksempel som i nedenstående, hvor vi fortæller Stata, at vi også gerne vil have vist determinationskoefficient (r2) og standardfejl (se):

. esttab, r2 se

----------------------------
                      (1)   
                birthrate   
----------------------------
storks             0.0288** 
                (0.00940)   

_cons               225.0*  
                  (93.56)   
----------------------------
N                      17   
R-sq                0.385   
----------------------------
Standard errors in parentheses
* p<0.05, ** p<0.01, *** p<0.001

For en oversigt over hvilke muligheder der er, se hjælpefilen til esttab (help esttab). Tabellen er meget mere overskuelig end det normale output fra Stata, og vi har mulighed for nemt at eksportere ovenstående til for eksempel Word.

3. Eksport af regressionstabel

Det er muligt at eksportere ens regressionstabel til forskellige dokumentformater, hvor den mest udbredte er den frit tilgængelige standard .rtf (Rich Text Format). Det er ikke muligt at eksportere ens tabel i .doc eller .docx (man kan selvfølgelig altid blot åbne .rtf-filen efterfølgende i Word og gemme den som .docx).

Ved at tilføje "using" til esttab-kommandoen samt angive filnavn og filtype, gemmer Stata filen med tabellen i ens Working Directory. Vil vi gemme ovenstående tabel i en rtf-fil med navnet birthrate, skriver vi følgende:

. esttab using birthrate.rtf, r2 se

Dette giver et output a la:


(1)
birthrate

storks 0.0288**
(0.00940)
 
_cons 225.0*
(93.56)

N 17
R2 0.385

Standard errors in parentheses

* p < 0.05, ** p < 0.01, *** p < 0.001

For at opsummere, har vi til nu gjort følgende:

// Installerer estout
. ssc install estout, replace

// Nulstiller hukommelsen
. eststo clear

// Åbner datasæt til eksemplet
. use https://erikgahner.dk/files/data/storksbabies.dta

// Gemmer regression i hukommelsen
. eststo: reg birthrate storks

// Viser regressionstabel (med r2 og standardfejl)
. esttab, r2 se

// Eksporterer regressionstabel
. esttab using birthrate.rtf, r2 se

For et ekstra eksempel på eksport af en regressionstabel med estout, kan jeg henvise til Sønderskov (2011, 168f). Den tabel vi har eksporteret, er dog på ingen måde færdig endnu, da der er brug for visse modifikationer.

4. Tilpasning af regressionstabel

Jeg har haft den fornøjelse at læse flere opgavebesvarelser, hvor estout er anvendt til at eksportere regressionstabeller til brug i Word. Jeg har i den forbindelse også haft mulighed for at identificere nogle af de faldgruber, der er forbundet med brugen af estout. For at brugen af estout skal være tilfredsstillende, er det ikke tilstrækkeligt blot at eksportere tabellen, inkludere den i sit dokument og stoppe legen der. Der er med andre ord et par forhold, man skal notere sig.

I. Læs og applicer råd i Beck (2010)
Der er et par gode pointer i den pågældende artikel. Sørg for at tabellen er meningsfuld og letlæselig. Sørg for at variabelnavne og lignende indhold i tabellen giver mening for dig selv såvel som læseren. Lad desuden være med at angive flere decimaler end dem der har betydning. (Råd nr. 9 i artiklen ser jeg bort fra i denne sammenhæng.)

II. Oversæt til dansk
Hvis ens besvarelse er på dansk, skal tabellen også være det. Hvis du er i tvivl om hvad et statistisk begreb hedder på dansk, kan du give denne ordliste et visit. Husk ligeledes at anvende korrekt decimalseparator (komma hvis dit dokument er på dansk).

III. Tilføj tabeloverskrift
Alle tabeller skal have en titel. Husk det.

IV. Tilpas andre tabeller
Såfremt der i dit dokument er andre tabeller, skal der ganske logisk være en konsistent brug af skrifttype, skriftstørrelse, afstande m.v., der er identisk i alle tabeller. Det betyder med andre ord, at regressionstabellen skal tilpasses andre tabeller, der måtte være i din besvarelse. Lad være med at bruge Times New Roman i den ene tabel, for derefter at bruge Calibri i den næste tabel.

5. Afsluttende bemærkning

Jeg har i nærværende introduktion til hvordan man eksporterer regressionstabeller fra Stata begrænset mig til et meget simpelt (og forhåbentligt pædagogisk) eksempel, men fremgangsmåden er akkurat den samme ved mere omfangsrige regressionstabeller (med flere modeller). For mere information omkring estout henvises der til estout: Making Regression Tables in Stata, samt hjælpefunktionen:

. h estout

Skulle noget af ovenstående forvolde problemer, er du velkommen til at skrive en kommentar til indlægget.

Referencer

Beck, N. 2010. “Making Regression and Related Output More Helpful to Users.” The Political Methodologist 18(1):4-9.

Jann, B. 2005. “Making regression tables from stored estimates.” The Stata Journal 5(3):288-308.

Jann, B. 2007 “Making regression tables simplified.” The Stata Journal 7(2):227-244.

Matthews, R. 2000. “Storks Deliver Babies (p = 0.008).” Teaching Statistics 22(2):36-38.

Sønderskov, K. M. 2011. Stata - en praktisk introduktion. København: Hans Reitzels Forlag.

Lommeregner i Stata

Bruger du R eller lignende, kan man nemt skrive hvad der skal regnes i ens kommandolinje og trykke enter. Det samme kan man ikke i Stata. Stata indeholder dog en kommandobaseret lommeregner, som kan bruges vha. kommandoen display, f.eks.

. display 5^2+sqrt(81)+10
44

Der er desuden en forkortelse for display, di:

. di 5^2+sqrt(81)+10
44

God fornøjelse.