Omgaan met missing data: drie methoden om de dataset compleet te maken

Publicatiedatum

29 juni 2017

Business Unit

DPA IT

Vol enthousiasme open je de dataset en… ontdek je dat niet alle cellen gevuld zijn. In sommige kolommen ontbreken enkele waarden, maar andere zijn voor een groot deel incompleet. Bovendien bevatten maar weinig records voor elke kolom een getal of waarde. Wat nu?

In mijn eerdere blog besprak ik de vormen van missing data. Dit onderscheid is van belang bij het bepalen welke oplossing je toepast. In dit blog beschrijf ik drie oplossingsrichtingen die allen leiden tot een complete dataset en zal ik op simulatie-achtige wijze het effect van de verschillende methoden tonen. Herinner je je het klantenbestand uit mijn vorige blog? We beginnen met een complete versie van die dataset en focussen op de variabele ‘inkomen’. Het gemiddelde en de variantie van deze variabele is als volgt:

> mean(data$inkomen)
[1] -0.0007308566

> var(data$inkomen)
[1] 1.001264

Vervolgens gebruik ik R-functie ampute om de dataset incompleet te maken. Ik genereer de missende waarde met een MAR-vorm van missing data. Hierbij ontbreken sommige records op inkomen, en andere records op zowel bundel als leeftijd. Hieronder zie je de eerste zes records van het klantenbestand:

Listwise deletion ofwel: niets doen

Doen alsof er geen missende data zijn. Dat is de meest eenvoudige oplossing. Als je in Excel de formule =GEMIDDELDE(A1:A100000) toepast om het gemiddelde van de variable inkomen te berekenen, is het antwoord -0.1091. Het blijkt dat Excel de missende waarden negeert en het gemiddelde berekent over alle records met een ingevulde waarde. De methode die Excel hier toepast heet listwise deletion. Andere toepassingen zoals SPSS gebruiken deze missing data-methode eveneens als default-instelling.

Listwise deletion heeft drie grote nadelen. Als de missende waarden verschillen van de geobserveerde waarden, zal de uitkomst van een analyse niet juist zijn. Zo zie je dat Excel hier niet het ware gemiddelde van -0.0 als antwoord geeft. Bovendien neemt met gebruik van meerdere variabelen de hoeveelheid gebruikte data snel af. Als ik bijvoorbeeld de correlatie van de variabelen inkomen en leeftijd wil berekenen, dan heb ik slechts 19.969 van de 100.000 records tot mijn beschikking. Dit leidt tot het derde nadeel: er wordt veel geobserveerde data weggegooid die wellicht nog nuttig is.

Single imputation: eenmalige schatting

In plaats van geobserveerde data weg te gooien, kunnen we deze data gebruiken om een schatting van de missende waarden te maken. Deze techniek noemen we imputeren. Single imputation is de methode waarin iedere missende waarde één keer geschat en ingevuld wordt. Hiervoor kunnen verschillende modellen toegepast worden. Ik zal hier ingaan op mean imputation en regression imputation: de meest intuïtieve modellen.

Bij mean imputation worden de lege cellen gevuld met het gemiddelde van de kolom. Alle missende waarden van inkomen worden dus gevuld met het gemiddelde van deze variabele. Bij regression imputation maken we gebruik van de geobserveerde waarden om een goede schatting te maken. We voorspellen de missende waarden voor inkomen aan de hand van bijvoorbeeld de waarden van leeftijd. Het resultaat van de twee methoden is te zien in de plot hieronder.

Met mean imputation komen de schattingen voor het gemiddelde en de variantie van de variabele inkomen op -0.11 en 0.53. Met regression imputation komt het gemiddelde met 0.06 dichter bij de waarheid. Omdat de geïmputeerde waarden zo netjes op een lijn liggen, wordt de variantie in de data hevig onderschat. In plaats van de ware 1.0 is de variantie in de geïmputeerde dataset 0.79.

Single imputation met error component

Door wat random error toe te voegen aan de predicties kunnen we recht doen aan de structuur van de data en een meer correcte schatting van de variantie krijgen. We doen dit door elk blauw puntje uit de bovenstaande figuur willekeurig iets omhoog of omlaag te schuiven. Deze methode noemen we stochastische regressie-imputatie. In de plot is duidelijk te zien dat deze vorm van imputeren meer recht doet aan de data. Het gemiddelde van de variabele inkomen in deze geïmputeerde dataset is nog steeds 0.06, maar de variantie is gestegen naar 0.88.

“Als je meer recht wilt doen aan de onzekerheden vanwege de ontbrekende data, is het eerlijker om multiple imputation te gebruiken.”

Multiple imputation

Hoewel single imputation voor goede schattingen kan zorgen, is het niet juist om te zeggen dat de geïmputeerde waarden een correcte vervanging van de missende waarden zijn. Dit zijn waarschijnlijke waarden, maar je bent er nooit zeker van. Als je meer recht wilt doen aan de onzekerheden vanwege de ontbrekende data, kun je multiple imputation gebruiken. Hierbij imputeren we elke missende waarde niet één maar m keer. Zo ontstaan m datasets waarbij de geobserveerde data in elke dataset hetzelfde is en de missende waarden met een andere waarde geïmputeerd worden. De gewenste analyse moet op elke dataset worden uitgevoerd. De uitkomsten worden met statistische regels samengevoegd tot één analyseresultaat. Nu is het gemiddelde van de variabele inkomen -0.03 en de variantie 0.98. Deze uitkomst komt het dichtst in de buurt van de oorspronkelijke, complete dataset.

Over Rianne Schouten

Rianne Schouten behaalde een Master of Science in de studierichting Methodologie en Statistiek voor Gedrags-, Sociale en Biomedische Wetenschappen. Daarna volgde ze het Data Science Excellence Program van DPA. Sinds mei 2017 werkt ze bij DPA als missing data specialist. In het kader van haar onderzoek aan de Universiteit van Utrecht heeft ze een methode ontwikkeld die op een effectieve wijze elke vorm van missing data genereert. Dit maakt het mogelijk om betrouwbare simulatiestudies over het effect van missing data op statistische analyses en modellen uit te voeren. De methode is geïmplementeerd in een R-package dat beschikbaar is via de MICE-imputatiesoftware van prof. dr. Stef van Buuren. Met hem en dr. Gerko Vink werkt Rianne verder in dit onderzoeksgebied.

Delen

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

  • *