Datenbereinigung

Analyse
R
Chunk
Tidyverse
overviewR::overview_na
dplyr::select
missings
Author

Martin Burk

Published

August 31, 2022

Qualität der importierten Daten

Im vorherigen Schritt wurden unsere externen Daten (gezogen aus der Tumordatenbank) nach R importiert. Sie liegen jetzt in Form eines Tidyverse-Tibble als Tabelle vor.

Tippfehler und ähnliches

Naturgemäß ist die Eingabe einer großen Datenmenge niemals völlig ohne Fehler zu erreichen. Ein Teil der möglichen Eingabefehler können bereits bei der Dateneingabe in die Datenbank abgefangen werden. Die Patientenstammdaten (Name, Geburtsdatum, Adresse) werden im normalen Fall direkt aus dem Klinik-Informationssystem (KIS) in die Tumordatenbank importiert (zusammen mit anderen Daten wie Versicherungsnummer usw.).
Andere Eingaben wie Tumorstadium oder Therapie-Daten werden maskengestützt in die Datenbank eingetragen. In diesen Fällen werden die eingegebenen Daten unmittelbar bei Eingabe inhaltlich kontrolliert.

Immer muss klar sein: Bei erhobenen mehreren Hundert Daten je Tumor, und sagen wir Tausend neuer Diagnosen je Zentrum je Jahr ergeben sich je Jahr und je Zentrum die Chancen auf mehrere Hunderttausend Fehler. Eine Genauigkeit in der Datenerfassung von 99 % Richtigkeit (was ich als sehr gut einordnen möchte) führt zu immer noch mehreren Tausend Fehlern je Jahr - Fehler, die weder vom Dateneingabe-Prüf-Algorithmus noch von der eingebenden Person bemerkt worden sind, und die daher nur schwer entdeckt werden können.

Manche schätzen, dass bis zu 80 % des gesamten zeitlichen Bedarfs einer statistischen Analyse auf die Sicherstellung der Datenqualität aufgewendet werden muss!

In weiteren Posts sollen folgende Aspekte näher betrachtet werden.

Erste visuelle Kontrolle

Die entstandene Tabelle kann ausgedruckt, und dann auf grobe “Ungereimtheiten” beurteilt werden. Wir drucken selbstverständich nicht uf Papier, sondern nur virtuell! Außerdem ermitteln wir ein paar formale Parameter, um über die Größenkontrolle auf Vollzähligkeit der Datenübergabe usw. schließen zu können.

Fehlende Werte

Ein wesentliches Bestreben ist die Vollständigkeit der Datenerfassung. Nicht vorhandene Daten behindern die Aussagekraft aller Daten. Deswegen gehört zur Datenbereinigung und Qualitätssicherung der Datenerfassung, systematisch fehlende Daten (“missing values” oder “NA”) aufzusuchen. Bei der Aufdeckung und Korrektur von Fehlern können gerade bei Missings auch eventuelle Redundanzen in der Datenbank genutzt werden. Hierzu später bei Bedarf mehr.

Deskriptive Statistik

Zu diesem Punkt gehört auch die Festlegung von und die Überprüfung auf die Einhaltung von gültigen Datenwert-Bereichen für jeden Parameter. Beispiel: Erwachsene können nicht unter 18 Jahre alt sein. Negative Werte für das Alter dürften nicht vorkommen. Dies alles erfordert Korrekturen, bevor eigentliche Analysen zur Struktur des Tumorzentrums begonnen werden.

Einfache beschreibende statistische Verfahren (wie Mittelwert und Verteilungmaße) können sehr helfen, die Datenstruktur zu überprüfen. Z.B. können unerwartete Verteilungsmaße, oder auch das Vorkommen von Ausreißern schnell festgestellt werden.

flowchart LR
  A[R-Tabelle] --> B[Datenbereinigung]
  B --> E(Deskriptive Statistik)
  B --> D(Missing Values)
  B --> C(Visuelle Kontrolle)
  

R ist eine extrem mächtige, und für statistische Auswertungen besonders gut geeignete Programmiersprache. Zu den Charakteristika dieser freien 1 Sprache gehört die Verfügbarkeit vieler Funktionen für besondere Zwecke. Diese Funktionen werden im Rahmen von Bibliotheks-“Paketen” bei Bedarf in die Software eingebunden.

Das nachfolgende, beispielhafte, aber ganz einfache Code-Fragment bindet zusätzlich die Bibliothek “overviewR” 2 ein, die mehrere Funktionen für die einfache Darstellung von Daten zur Verfügung stellt.

library(tidyverse)
library(overviewR)

GTDS_NA <- overviewR::overview_na(GTDSroh)

Und schon haben wir eine grafische Darstellung des Anteils fehlender Werte je Parameter.

Tatsächlich wollen wir uns, für einen ersten Überblick, schrittweise einige Datenbank-Parameter anschauen. WIr wählen deshalb unter den Tabellen-Spalten der im vorherigen Beitrag erstellten Datei “GTDSroh” sinnvollerweise einige aus, bevor die Darstellung des Anteils von fehlenden Werten ausgelöst wird:. Hierbei ist die Namensgebung der einzelnen Variablen (Spalten) unerheblich, entspricht aber in diesem Fall der Konvention von exportierten GTDS-Daten:

library(tidyverse)
library(overviewR)

GTDS_select <- GTDSroh %>% dplyr::select(SEX,DIAALTER,DIA_DAT,DIAICD10,HIST_DAT,OP_DAT,STERBDAT)

GTDS_NA <- overviewR::overview_na(GTDS_select)

Das grafische Ergebnis dieser R-Sprachbefehle und deren erste Interpretation siehst Du im übernächsten Blog zu den Missings - etwas Geduld bis dahin!

— | This page brought to you by https://onkostats.de . . . . . — Made with R, RStudio, Quarto, Pandoc, Mermaid, Tidyverse and GTDS … Thank you! — The R logo is copyright © R foundation, licence CC-BY-SA 4.0

Footnotes

  1. R unterliegt GNU Lizenzen↩︎

  2. Informationen zum Paket in Github↩︎