Datavisualisatie is een essentiële vaardigheid voor data scientists. Het combineert statistiek en design op betekenisvolle en passende manieren. Enerzijds is datavisualisatie een vorm van grafische data-analyse, met de nadruk op nauwkeurige weergave en interpretatie van data. Anderzijds steunt datavisualisatie op goede ontwerpkeuzes om grafieken aantrekkelijk te maken en zowel het begrip als de communicatie van resultaten te verbeteren. Daarbovenop zit er een creatief element in, want datavisualisatie is in de kern een vorm van visuele communicatie.
Het is belangrijk om het onderscheid te begrijpen tussen exploratieve en verklarende visualisaties. Exploratieve visualisaties zijn snel te genereren, datarijk en bedoeld voor een kleine groep specialisten, zoals jij en je collega’s — hun primaire doel is grafische data-analyse. Verklarende visualisaties kosten veel tijd, zijn dataspecifiek en bedoeld voor een breder publiek, bijvoorbeeld in publicaties of presentaties — ze maken deel uit van het communicatieproces. Als data scientist is het essentieel dat je data snel kunt verkennen, maar je krijgt ook de taak om je resultaten aan stakeholders uit te leggen. Goed design begint bij nadenken over je publiek — en soms zijn wij dat zelf.
Spreidingsdiagram
Hieronder staat een dataset met de gemiddelde hersen- en lichaamsgewichten van 62 zoogdieren.
MASS::mammals
body brain
Arctic fox 3.385 44.50
Owl monkey 0.480 15.50
Mountain beaver 1.350 8.10
Cow 465.000 423.00
Grey wolf 36.330 119.50
Goat 27.660 115.00
Roe deer 14.830 98.20
...
Pig 192.000 180.00
Echidna 3.000 25.00
Brazilian tapir 160.000 169.00
Tenrec 0.900 2.60
Phalanger 1.620 11.40
Tree shrew 0.104 2.50
Red fox 4.235 50.40
Om de relatie te begrijpen, is de meest voor de hand liggende eerste stap een spreidingsdiagram maken, zoals hieronder:
ggplot(mammals, aes(x = body, y = brain)) +
geom_point()
Twee zoogdieren, de Afrikaanse en de Aziatische olifant, hebben zowel een zeer hoog hersen- als lichaamsgewicht, wat leidt tot een positieve scheefheid op beide assen.
Lineair model
Als we hier een lineair model op toepassen, is dat geen goede keuze, omdat enkele extreme waarden een grote invloed hebben.
ggplot(mammals, aes(x = body, y = brain)) +
geom_point(alpha = 0.6) +
stat_smooth(
method = "lm",
color = "red",
se = FALSE
)
Een logtransformatie van beide variabelen zorgt voor een betere fit.
Dus hoewel we begonnen met een ruwe, exploratieve plot, gaf die ons inzicht in de data en leidde tot een betekenisvol resultaat.
Diagrammen van Anscombe
Wanneer we aan een lineair model denken, zoals gepresenteerd op deze anonieme plot, stellen we ons voor dat we data beschrijven die er ongeveer zo uitziet.
Maar hetzelfde model kan een heel andere dataset beschrijven, zoals een parabolische relatie, die om een ander model vraagt.
Of data waarin een extreme waarde een groot effect heeft, wat duidelijk wordt zodra de uitschieter wordt verwijderd.
En soms beschrijft het model een relatie terwijl die er feitelijk niet is, omdat sommige extreme waarden onjuist kunnen zijn.
Als we ons alleen op de numerieke output hadden verlaten zonder onze data te plotten, hadden we duidelijke en interessante onderliggende patronen gemist.
We zien dat datavisualisatie geworteld is in statistiek en grafische data-analyse, maar het is ook een creatief proces met een zekere mate van trial-and-error.
Interactief voorbeeld
In het volgende voorbeeld laad je eerst het pakket ggplot2 met library(). Daarna gebruik je str() om de structuur van de dataset mtcars te verkennen.
Tot slot visualiseer je de ggplot en probeer je te begrijpen wat ggplot met de data doet.
Je gebruikt de dataset mtcars, met informatie over 32 auto’s uit een uitgave van Motor Trend uit 1973. Deze dataset is klein, intuïtief en bevat een mix van continue en categorische variabelen.
# Load the ggplot2 package
library(ggplot2)
# Explore the mtcars data frame with str()
str(mtcars)
# Execute the following command
p <- ggplot(mtcars, aes(cyl, mpg)) +
geom_point()
Wanneer we bovenstaande code uitvoeren, levert dat het volgende resultaat op: