library(tidyverse)
library(summarytools)
<- GTDSroh %>% dplyr::select(DIAALTER)
GTDSpart
::descr(GTDSpart, stats = "common") summarytools
Deskriptive Statistik zur Datenbereinigung
Der nächste Schritt in der Datenbereinigung ist eine erste Sichtung mit einfachen deskriptiven statistischen Methoden. Mich interessiert zuerst die Verteilung der Werte einzelner Variablen. In R sind für diese zentrale Funktion “Deskriptive Statistik” zahlreiche Programm-Pakete und enthaltene Funktionen verfügbar. R selbst bietet Basisfunktionen wie “mean()” oder “sd()” im Rahmen des Kern-Paketes “stats” an.
Für mich ist auch die Art der Ausgabe wichtig, und die Kompatibilität mit anderen Paketen.
Ich habe mich hier dazu entschieden, aus dem Paket “summarytools” die Funktion “descr” zu verwenden. Diese Funktion bietet einen üersichtlichen ersten Zugang zur “univariaten Statistik numerischer Daten”. Das Gesamtpaket führt mit sich eine Fülle an Optionen, die mittels der Funktion “st_options” auch global verwaltet werden können. Wir würden es aber zunächst mit den Standardoptionen versuchen, bzw. bei jedem Aufruf individuell formulierte Optionen nutzen…
Tatsächlich wollen wir uns, für einen ersten Überblick, einige ausgewählte Datenbank-Parameter der in einem früheren Beitrag erstellten Datei “GTDSroh” anschauen. Wir haben für diese Auswahl bereits in einem vorherigen Post die Funktion “select” aus der Bibliothek “dplyr” des “Tidyverse” verwendet, so dass ich diese Funktion nicht mehr vorstellen muss.
Uns interessieren zunächst einige häufig verwendete statistische Werte, die in der “descr”-Funktion mit der Option “stats=common” angewählt werden können.
DIAALTER | DIAALTERkorr | |
---|---|---|
Mean | 64.81 | 65.47 |
Std.Dev | 35.38 | 12.84 |
Min | -1747.00 | 8.79 |
Median | 67.00 | 67.00 |
Max | 103.00 | 103.00 |
N.Valid | 9931.00 | 9927.00 |
Pct.Valid | 98.50 | 98.46 |
Auf den ersten Blick fällt auf, dass in der Spalte des Alters bei Diagnosestellung DIAALTER als Minimum ein Alter “-1747” ausgewiesen wird. Andere Kenndaten entsprechen dagegen durchaus meiner Erwartung an die Altersverteilung einer Population (fast ausschließlich) erwachsener onkologischer Patienten.
Ein Blick in meine Rohdaten zeigt mir, dass das bereits in der Tumordatenbank errechnete Alter bei Diagnosestellung wegen Tippfehlern bei der Eingabe des Diagnosedatums falsch ermittelt wurde. Die Datenbank hat offensichtlich ein Datum mit der Jahreszahl (z.B.) “0200” zugelassen, obwohl “2000” gemeint war. Die Kontrolle der Eingabewerte der Tumordatenbank wurde in diesem Fall umgangen, da Jahre zuvor einige Datensätze aus einer anderen Dokumentationssoftware importiert wurden, und wohl fehlerbehaftet waren. So sind reale Daten …
Hier hilft tatsächlich die Redundanz der Tumordatenbank.
Man könnte z.B. so vorgehen: falls das Diagnosealter negativ wäre, würde das Diagnosealter ersatzweise neu berechnet, z.B: aus dem Geburtsdatum und dem Datum des histologischen Befundes, oder falls dieser fehlt, dem Datum des Therapiebeginns.
Die Tabelle hat deshalb eine zweite Spalte “DIAALTERkorr” bekommen, die ein korrigiertes Diagnosealter enthält. Während sich die anderen Kenngrößen praktisch nicht geändert haben, liegt das niedrigste Diagnosealter nun bei (glaubhaften) knapp 9 Jahren.
Im folgenden Post möchte ich einen kurzen Exkurs zum Arbeiten mit Datumswerten machen. Wir besprechen eine hierzu hilfreiche Bibliothek im Tidyverse-Universum. Danach werden wir unsere Erwartungen an die deskriptive Statistik unter Verwendung der Funktion dfSummary1 deutlich anheben - lass Dich überraschen!
— | 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