In diesem Blogeintrag aus der „Gut in Form”-Reihe wird gezeigt, wie sich Datenreshapes in R, Stata und SPSS umsetzten lassen. Diese Datenreshapes dienen dazu, die vorliegenden Daten zu transformieren und so die optimale Darstellung zu erhalten, wenn pro Einheit mehrere Informationen zu einer Begebenheit vorliegen.

Was vielleicht etwas kompliziert klingt, soll anhand eines Beispiels erläutert werden: Es soll ein Datensatz erstellt werden, der Informationen zur Tagesdurchschnittstemperatur am 01.01.2018 in allen europäischen Hauptstädten enthält. Die Städte repräsentieren also die Einheiten, die am Anfang des Beitrags erwähnt werden, die Temperaturen entsprechen den Informationen. Hat man nur Informationen zu einem Tag, so gibt es nur einen vernünftigen Weg die Daten darzustellen. Es gibt zwei Variablen, Stadt und Temperatur, und jede Stadt steht in einer eigenen Zeile.

Hat man jedoch pro Stadt Informationen für zwei Tagezeiten (vormittags/nachmittags), so stellt sich die Frage nach der Darstellung. Man spricht hier von einem sogenannten Panel-Design. Generell gibt es zwei Formate, um dies darzustellen: das Long- und das Wide-Format. Die Transformation zwischen den Formaten wird auch Reshape genannt.

Beim Long-Format wird jede einzelne Information/Messung in einer eigenen Zeile dargestellt. Für unser kleines Beispiel heißt das, dass zusätzlich zur Stadt- und Temperatur-Variable eine neue hinzukommt, die Tageszeit, an dem die Temperatur gemessen wurde, angibt. Pro Stadt können im Datensatz so mehrere Fälle (Zeilen) bestehen. In der untenstehenden Darstellung ist dies für mögliche Temperatur in einem Ausschnitt dargestellt.

Beim Wide-Format existiert für jede Einheit nur eine Zeile. Das bedeutet jedoch auch, dass es nicht mehr nur eine, sondern mehrere Variablen zur Information gibt. Für das Beispiel heißt das konkret, dass für jede Tageszeit, zu der Informationen vorliegen, eine Variable angelegt werden muss. Im Gegensatz zum Long-Format geht die Struktur der Daten eher in die Breite, daher auch die Bezeichnung als „Wide“.

datenaufbereitung beispiel

Natürlich kann es auch vorkommen, dass nicht zu allen Begebenheiten/Messungen Informationen für alle Einheiten vorliegen. Im Long-Format fällt dies nicht eindeutig auf, im Wide-Format dagegen eher. Für die Datenaufbereitung ist dies unerheblich. Wie methodisch mit solch einem unbalanciertem Design umgegangen wird, ist nicht Bestandteil dieser Blogreihe.

Datensatz

Der Datensatz wurde bereits in den beiden vorherigen Beiträgen zu den Themen Datenimport und Datentypen vorgestellt. Darin ist für verschiedene STATWORX Mitarbeiter, deren realer Name durch den jeweiligen Lieblingsstatistiker ersetzt wurde, der Süßigkeitenkonsum an zehn aufeinander folgenden Arbeitstagen festgehalten. In der ursprünglichen Version sind neben Tag und Mitarbeiter Informationen zur Anzahl an gegessenen Obststücken, Gummibärchen und Snickers enthalten. Außerdem gibt die Faktor-Variable „Pick Up“ die Lieblingssorte des Schokoriegels jedes Mitarbeiters. Die Lieblingssorte ist (zumindest über die beobachteten zehn Tage) konstant und verändert sich somit nicht.

Um einen besseren Überblick über den Datensatz vor und nach der Umstrukturierung zu erhalten, werden die Angaben zu Gummibärchen und Snickers entfernt, so dass die Anzahl an gegessenen Obststücken die einzige Information ist, die über die Zeit variiert. In diesem Eintrag wird öfter erwähnt werden, dass eine Variable über die Zeit konstant ist oder variiert. Streng genommen ist der Ausdruck „Zeit“ falsch, denn eine Information kann auch über verschiedene Messhintergründe/Begebenheiten konstant sein oder variieren.

Die ersten fünf Zeilen im Datensatz sind folgend dargestellt:

datenaufbereitung head daten long

Aus der obigen Erklärung wissen wir, dass die Daten momentan noch im Long-Format vorliegen. Jeder Tag wird in einer eigenen Zeile dargestellt, somit kommt jeder Mitarbeiter öfter vor (hier zehn Mal, weil Beobachtungen zu zehn Tagen vorliegen).

Die Umstrukturierung soll also bewirken, dass pro Mitarbeiter nur noch eine Zeile im Datensatz besteht, dafür sollen zehn Informationen zum Obstkonsum vorhanden sein. Da die Pick Up-Vorliebe über die Zeit konstant ist, wird sie nur einmal dargestellt. Ein Nachteil des Long-Formats ist also, dass einige Informationen auch redundant vorhanden sind. Jetzt wird auch klar, warum wir in diesem Eintrag auf die Informationen zum Verzehr von Snickers und Gummibärchen verzichten: Der Datensatz würde sonst so „breit“, dass man ihn nicht mehr übersichtlich darstellen könnte.

So soll der Datensatz dann im Wide-Format aussehen:

datenaufbereitung head daten wide

Durchführung

Um einen Datensatz zu transformieren werden bestimmte Variablen benötigt:

Bei der Umwandlung vom Long- zum Wide-Format wird eine Variable benötigt, die die Messung (zu verschiedenen Zeitpunkten/Begebenheiten) enthält. Diese wird im Folgenden als Measurement (Messung) bezeichnet. Im Süßigkeiten Datensatz ist dies die Anzahl an gegessenen Obststücken. Außerdem muss selbstverständlich eine Variable bestehen, die die Begebenheit der Messung klassifiziert, in unserem Datensatz der Tag. Es kann aber auch einen bestimmten Umstand einer Messung bezeichnen, beim Beispiel aus der Einleitung könnten die Temperaturen beispielsweise auch zur gleichen Zeit aber mit Unterschiedlichen Geräten gemessen werden. Die Variable wird im Folgenden Condition (Bedingung) genannt. Wir werden bei der Anwendung in der Software sehen, das zuweilen auch eine Variable vorhanden sein muss, die die Einheit, in unserem Fall die Mitarbeiter, spezifiziert.

Soll ein Datensatz vom Wide- ins Long-Format transformiert werden, so müssen mindestens zwei Variablen mit dem gleichen Datentyp vorhanden sein. Je nach Software muss außerdem pro Einheit eine konstante Benennung oder die Bezeichnung für die neu zu erstellende Condition-Variable definiert werden.

Wie bereits festgestellt wurde, ist der Datensatz, der bisher verwendet wurde, im Long-Format dargestellt. Um Verwirrung zu vermeiden, wird der Datensatz deshalb als „sweets_long“ bezeichnet. Bei der Durchführung in R, Stata und SPSS wird zunächst gezeigt, wie sich der Datensatz ins Wide-Format umwandeln lässt. Zu Demonstrationszwecken wird er dann erneut ins Long-Format transformiert.

R

Die baseR-Methode zum Reshape von Daten ist die Funktion reshape(). Häufig verwendete Funktionen sind außerdem melt() und cast() aus dem reshape2-Paket sowie gather() und spread() aus dem tidyr-Paket: Der Funktionsaufruf wird hier nur bei den letztgenannten besprochen, da die Funktionen als am intuitivsten gelten.

Der Datensatz, der ja bereits im Long-Format vorliegt, kann mit der spead()– Funktion ins Wide-Format umgewandelt werden. Zunächst muss selbstverständlich der Datensatz definiert werden. Spezifiziert werden müssen außerdem, wie bereits erwähnt, die Measurement- und Condition-Variable. Erstere, in unserem Fall „Obst“, wird an das Argument value übergeben. Die Condition-Variable, die von uns durch „Tag“ dargestellt wird, muss beim Argument key definiert werden.

Nach Ausführung des Befehls erhält man folgendes Resultat:

datenaufbereitung wide R

Wie gewünscht hat der Datensatz nur noch vier Beobachtungen, pro Mitarbeiter jedoch zehn Obst-Variablen, sowie eine PickUp-Variable, die über alle Tage konstant ist. Die neu erstellten Obst-Variablen sind alle mit der Bezeichnung der Tage benannt, es wird hier nicht direkt ersichtlich, dass es sich um die Beobachtungen des Obst-Verzehrs handelt. Optional können die Variablennamen deshalb noch angepasst werden. Der zugehörige Befehl ist in der untenstehenden Codebox zu finden. Dadurch sind die Variablen dann „obst_9“ für den 09.10.2017, „obst_10“ für den 10.10.2017 usw. benannt. Leider ist es mit der grundsätzlichen Funktionalität von spead() lediglich möglich eine zeitvariate Variable umzustrukturieren.

Mit gather() können die Informationen wieder ins Wide-Format gebracht werden. Dafür können dieselben Argumente verwendet werden wie beim Funktionsaufruf von spead(). Zusätzlich müssen hier noch zeitkonstante Variablen definiert werden. Dies sind in unserem Fall die Mitarbeiter und die PickUp-Variable. Die Ausführung des Befehls bringt folgendes Resultat:

datenaufbereitung long R

Da die Measurement-Variablen im Vorhinein umbenannt wurden, ist die Tag-Bezeichnung nun „obst_9“ usw. Um wieder mit einem Datum arbeiten zu können, müssten die Faktorstufen dieser Variable umbenannt und ggf. der Variablentyp angepasst werden (siehe für letztgenanntes auch den Blogeintrag zum Thema Datentypen). Ansonsten ist die Umstrukturierung gelungen und im Kern liegt der gleiche Datensatz vor wie zu Beginn.

## Reshape mittels tidyr: gather & spread 
# Long zu Wide: Spread  
sweets_wide1 <- spread(data = sweets_long, key = tag, value = obst) 

# Umbenennung der Variablen 
names(sweets_wide1)[3:12] <- paste0("obst_", c(9:13, 16:20)) 

# Wide zu Long: Gather 
sweets_long1 <- gather(data = sweets_wide1, key = tag, value = obst, -c(mitarbeiter, pickup)) 

Stata

Der Befehl reshape führt in Stata die gleichnamige Operation aus. Nach dem Schlagwort „reshape“ muss das Format spezifiziert werden, in das der Datentyp umgewandelt werden soll, also „wide“ oder „long“. In beiden Fällen muss die Measurement-Variable angegeben werden und im Gegensatz zu R auch eine Variable, die die Einheiten eindeutig kennzeichnet, als für den Süßigkeitendatensatz die Mitarbeiter-Variable, in anderen Fällen kann es jedoch auch eine ID sein. Der generelle Aufbau ist reshape format measurement, i(i) j(j), wobei „format“ durch „long“ oder „wide“ spezifiziert wird, measurement die entsprechende Variable, i die eben genannte Indexvariable darstellt und j die Condition angibt.

Dadurch ergibt sich für die Transformation von Long zu Wide der in der Codebox angegebene Befehl. Im Gegensatz zu R können auch mehrere Measurement-Variablen angegeben werden. Da Variablen mit Datumsformat in Stata intern nicht so abgespeichert wird wie es angezeigt wird, wird die Obstvariable für die verschiedenen Tage nicht anhand des angezeigten, sondern des intern gespeicherten Datums bezeichnet. Deshalb können auch hier die Variablennamen noch geändert werden. Führt man den unten dargestellten Befehl aus, so erhalten die Daten im Wide-Format folgendermaßen:

datenaufbereitung wide stata

Aus Platzgründen werden nur die ersten Obst-Variablen dargestellt.

Für den Reshape in die umgekehrte Richtung (Wide zu Long) muss eine Angabe für j nicht zwingend gegeben sein. Hierbei handelt es sich nur um eine Benennung für die zu erstellende Condition-Variable. Als Measurement können entweder mehrere Variable angegeben werden oder, wie bei Stata generell möglich, eine einheitliche Abkürzung aller entsprechenden Variablen. In unserem Fall ist dies der Wortstock „obst“. Der Ausschnitt des so resultierenden Datensatzes zeigt, dass der ursprüngliche Datensatz wiederhergestellt ist:

datenaufbereitung long stata

Benötigt man die Restrukturierung nur temporär und will danach wieder ins ursprüngliche Format zurück, so kann ganz einfach der Befehl reshape long um ins Long- oder reshape wide um ins Wide-Format zurückzukehren, verwendet werden.

*Long zu Wide: 
reshape wide obst, i(mitarbeiter) j(tag) 

*Wide zu Long: 
reshape long obst, i(mitarbeiter) j(tag) 

SPSS

In SPSS erfolgt die Transformation mit den Befehlen CASETOVARS bzw. VARSTOCASES, je nachdem, ob Fälle in Variablen umgewandelt werden sollen (Long- zu Wide-Format) oder vice versa.

Beim Reshape von Long zu Wide müssen zwei Variablen definiert werden: die ID-Variable und die Indexvariable. Erstere kennzeichnet die Einheiten, im Beispiel also die Mitarbeitervariable. Die Indexvariable kennzeichnet die unterschiedlichen Zeitpunkte/Messungen/Beobachtungen. Dies ist im Beispiel die Tagesvariable. Sobald diese Sonderzeichen oder beispielsweise Punkte enthält, ist eine logische Benennung der zu erstellenden Variablen nicht mehr möglich und es werden die Namen „v1“ usw. vergeben. Anhand des Labels kann der Ursprung jedoch trotzdem erkannt werden.

Bei der Transformation erkennt SPSS automatisch, welche Variablen zeitkonstant sind und welche über die Zeit variieren und somit umstrukturiert werden müssen. Im Wide-Format resultiert der folgende Datensatz. Es ist zu beachten, dass die Variablennamen hier noch nicht angepasst wurden.

datenaufbereitung wide SPSS

Die Syntax zum Reshape von Wide zu Long ist ebenfalls in der Codebox unten dargestellt. Diese gilt für unser Beispiel, in dem unsere Variablen nur ein Measurement darstellen. Für die Bezeichnung der Tag-Variable wird hier eine Indexierung gewählt, die später noch umgewandelt werden kann, alternativ könnten auch die Variablennamen verwendet werden. Die Indexoption muss dann /INDEX = Index1(obst) lauten.

Auch in SPSS ist es möglich mehrere Variablen umzustrukturieren. Bei der Transformation zum Long-Format können in der Syntax zusätzliche /MAKE-Optionen hinzugefügt werden.

datenaufbereitung long SPSS

*Long zu Wide: 
SORT CASES BY mitarbeiter tag. 
CASESTOVARS 
  /ID=mitarbeiter 
  /INDEX=tag 
  /GROUPBY=VARIABLE. 

*Wide zu Long: 
VARSTOCASES 
  /ID=id 
  /MAKE obst FROM v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 
  /INDEX=tag(10) 
  /KEEP=mitarbeiter pickup 
  /NULL=KEEP. 

Zusammenfassung

Der Hintergedanke beim Reshape von Daten ist in R, Stata und SPSS gleich. Die Umsetzung unterscheidet sich jedoch besonders auch im Hinblick auf die Variablen/Informationen, die angegeben werden müssen.
Falls es mal mit der Datenaufbereitung nicht so klappt, helfen wir bei STATWORX gerne dabei, gut in Form zu kommen.

Ist der Datensatz in das gewünschte Statistikprogramm eingeladen, gibt es meist noch einige Stolperfallen, bevor man mit der Anwendung der Methode beginnen kann. Dies liegt oft daran, dass die Variablen nicht dem richtigen Typ zugewiesen sind. Wurden Werte, die eigentlich Zahlen sind, als Strings (Zeichenketten) abgespeichert, können beispielsweise keine Lagemaße der Verteilung berechnet werden. Nach dem Import der Daten sollte deshalb im nächsten Schritt der Datentyp der Variablen überprüft werden, der von der Statistiksoftware meist automatisch – und nicht immer richtig – zugewiesen wird.

Datensatz

Im vorherigen Beitrag wurden die verwendeten Daten bereits kurz vorgestellt. Es handelt sich dabei um die Aufzeichnung des Süßigkeitenkonsums von vier STATWORX-Mitarbeitern, deren realer Name durch den jeweiligen Lieblingsstatistiker ersetzt wurde. Der Kopf der Daten ist unten abgebildet.

Datenuebersicht

Datentypen

In der Informatik gibt es unzählige Datentypen, die vor allem durch ihren Speicherbedarf identifiziert werden. Die Aufzählung der Variablentypen wird hier stark vereinfacht vorgestellt. Generell können Variablen qualitativ als Strings (Zeichenketten) oder quantitativ in Zahlenform vorliegen. Zweitere lassen sich in Ganzzahlen und Dezimalzahlen unterscheiden.

Ein Spezialfall von Strings ist der Faktor. Dies ist eine ordinale Variable, die nur eine begrenzte Anzahl an Ausprägungen aufweist. Dabei wird jede Ausprägung als ein numerischer Wert dargestellt und mit Wertelabels versehen. Beispiel ist die Frage nach der Zufriedenheit mit einem Produkt, wobei mit den Zahlen 1 bis 5 die Zufriedenheit von „sehr unzufrieden“ bis „sehr zufrieden“ ausgedrückt werden kann.

Zu unterschieden ist außerdem das Messniveau von Daten. Daten können sowohl nominal sein, also ohne Reihenfolge, wie das Geschlecht oder ordinal, also geordnet und somit mit einer festen Reihenfolge, wie bei der Verwendung von Altersklassen. Weitere Messniveaus sind die Intervall- und die Verhältnisskala. Bei der Verhältnisskala bilden gleiche Intervalle auf der Skala gleiche Differenzen ab. Der Unterschied zwischen dem Wert 10 und 20 gibt also die gleiche Abweichung an wie die Differenz zwischen 30 und 40. Außerdem gibt es einen natürlichen Nullpunkt. Ein Beispiel hierfür ist das Längenmaß. Bei der Intervallskala gibt es zwar auch gleiche Abstände zwischen den einzelnen Ausprägungen, jedoch keinen absoluten Nullpunkt. Ein übliches Beispiel hierfür ist die Temperaturmessung in Grad Celsius.

Skala Anforderung Beispiel Ausprägungen
nominal Unterschiedlichkeit Geschlecht männlich, weiblich
ordinal Ordnung Süßigkeitenkonsum keiner, wenig, viel
Intervall Abstände gleich Grad Celsius 30, 43
Verhältnis natürlicher Nullpunkt Meterangabe 0, 1,00, 1,11, …

Bei Strings können innerhalb der Statistiksoftware interne Typen vorhanden sein, die die Zeichenkette näher klassifizieren, wie beispielsweise ein Datumsformat.

R

Die Struktur der Daten kann in R mit str() abgefragt werden. Für den Süßigkeiten-Datensatz erhalten wir folgendes Ergebnis:

Datensturktur in R - vorher

Der Typ einzelner Variablen (bzw. Vektoren) kann mit class() abgefragt werden. Es zeigt sich, dass die meisten Typen bereits richtig erkannt wurden. Generell können beliebige Datentypen mit den Funktionen as.<i>datentyp</i>() zugewiesen werden, beispielsweise as.numeric() oder as.character().

Die Mitarbeiter-Variable weist nur vier Ausprägungen auf. R hat dies erkannt und die Variable automatisch als Faktor mit den Werten 1 bis 4 kodiert und die Ausprägungen mit „Bayes“, „Gauss“, usw. benannt. So kann Speicherplatz gespart werden. Dass die Variable automatisch in einen Faktor umgewandelt wird liegt daran, dass bei data.frame die stringsAsFactors-Option automatisch auf TRUE gesetzt wird.

Die vier Variablen zum Süßigkeiten-Verzehr sind alle richtig als numerische Werte erkannt worden. Was jedoch auf den ersten Blick nicht klar wird, ist, dass die PickUp-Variable nicht angibt, wie viele Riegel am Tag verspeist wurden, sondern welche Sorte der Mitarbeiter am liebsten mag. Dabei soll der Wert 1 für die Sorte “Choco” stehen, 2 für “Choco & Caramel” und 3 für “Choco & Milch”. Ziel ist eine Faktorvariable, wie es auch bei den Mitarbeitern der Fall ist. Die Umsetzung ist in der Codebox unten zu finden. Je nachdem, ob der Faktor ordinale Werte aufweist oder nicht, kann die factor()– oder ordered()-Funktion verwendet werden. Die die Sorten keine Reihenfolge aufweisen, wird hier die factor()– Funktion verwendet.

Die Obst-Variable, soll auf ein Zehntel genau die Anzahl an gegessenen Obststücken darstellen. Leider wurde diese hier als String erkannt. Das liegt häufig am Dezimaltrennzeichen. Außerdem kann das Problem auftauchen, wenn in der Variable Strings, wie „keine Angabe“, enthalten sind.

Bleibt noch die Datumsvariable. Eine Option zur Umformung gängiger Datumsformate ist die as.Date()-Funktion. Mit dem format-Argument sollte die Struktur übergeben werden. In der Codebox unten ist die Umwandlung ins Datumsformat dargestellt. Allerdings gibt es in R noch viele andere, ausgefeiltere Wege, um mit Datumsformaten zu arbeiten, wie beispielsweise das lubridate-Paket.

# Erstellen eines (ungeordneten) Faktors aus der PickUp-Variable 
sweets$pickup <- factor(sweets$pickup, 
levels = c(1, 2, 3), 
labels = c("Choco", "Choco & Caramel", "Choco & Milch")) 

# Umwandlung der Obst-Variable ins Zahlenformat 
sweets$obst <- as.numeric(sweets$obst) 

# Umwandlung der Tag-Variable ins Datumsformat 
sweets$tag <- as.Date(sweets$tag, format ="%Y-%m-%d")

Nach der Anpassung der Datentypen zeigt ein erneuter Blick auf die Daten, dass nun alle Variablen den gewünschten Typ aufweisen.

Datensturktur in R - nachher

Stata

Generell wird in Stata nach Speichertyp und Anzeigeformat unterschieden. Ersterer zeigt an, wie viel Platz die Variable im Speicher belegt. Hierbei kann auch erkannt werden, ob es sich um eine Zeichenkette (= „str“ ; Zahl am Ende gibt die Länge an) oder um numerische Werte (= „byte“, „float“, „long“, „double“) handelt. Mit dem describe-Befehl kann die Struktur der Variablen angesehen werden.

Datensturktur in Stata - vorher

Kommen wir zunächst zur PickUp-Variable, die auch hier als numerisch eingelesen wurde, aber als Faktor definiert werden soll. Dafür muss als erstes, unabhängig von der Variable, eine Benennung definiert werden. Diese kann dann auf eine oder auch mehrere Variablen angewendet werden. In der Codebox unten wird zunächst mit dem label define-Befehl ein Label definiert, dass dann mit dem label values-Befehl auf die Variable angewandt wird.

Zunächst erscheint es vielleicht etwas umständlich, dass Label separat zu definieren und zuzuweisen, es gibt jedoch häufig Labels, die öfter verwendet werden, wie beispielsweise die Benennung der Werte 0 und 1 als „nein“ und „ja“ oder die Benennung einer Zufriedenheitsskala. Übrigens: Die numerischen Werte bei einer bereits gelabelten Variable können mit der Option nolabel beim tabulate-Befehl angesehen werden.

Als nächstes soll nun die Obst-Variable von einer Zeichenkette ins Zahlenformat umgewandelt werden. Dies wird in Stata mit dem destring-Befehl bewerkstelligt. Mit dem tostring-Befehl geht es in die umgekehrte Richtung, also vom Zahlenformat zum String. Bei beiden Befehlen muss mit der generate-Option ein neue Variable definiert werden. Der Grund dafür, dass der Variablentyp falsch erkannt wurde, ist das Komma als Dezimaltrenner (statt einem Punkt). Deshalb muss die dpcomma-Option angegeben werden, welche das Komma als Dezimaltrennzeichen definiert.

Das Datum sollte in den entsprechenden Typ umgewandelt werden, falls dieses für die Analyse wichtig ist, beispielsweise im Rahmen der Zeitreihenanalyse. Auch hier muss eine neue Variable erstellt werden, die den Tag im Datumsformat anzeigt. Wie auch bei R muss nach dem Variablennamen das Format, in der das Datum vorliegt, spezifiziert werden. Die so entstandene Variable wird nun im Stata-eigenen Format definiert. Mit dem Format-Befehl muss dann noch die Struktur ausgewählt werden, mit der das Datum dargestellt werden soll. Bei „%td“ handelt es sich beispielsweise um die Anzeige des Datums ohne Zeitangabe.

Die Mitarbeiter-Variable wird in Stata, im Gegensatz zu R, nicht automatisch als Faktor gespeichert. Sie ist als String gespeichert, was nicht zwingend verändert werden muss. Die Transformation ist dennoch unten dargestellt und kann hilfreich sein, wenn man die Variable aus Speicherplatzgründen umwandeln möchte.

Hierfür kann der encode-Befehl benutzt werden. Mit der label()-Option wird der neuerstellten numerischen Variable gleich das Label übergeben.

* Definition der PickUp-Variable als Faktor 
label define chocolabel 1 "Choco" 2 "Choco & Caramel" 3 "Choco & Milch" 
label values pickup chocolabel 

* Umwandlung der Obst-Variable ins Zahlenformat 
destring obst, generate(obst_destring) 

* Umwandlung der Tag-Variable ins Datumsformat 
gen tag_date = date(tag, "YMD") 
format tag_date %td 

* Definition der Mitarbeiter-Variable als Faktor 
encode mitarbeiter, gen(mitarbeiter_faktor) label()

Nach Ausführung der Befehle wagen wir erneut einen Blick auf die Struktur der Daten. Im Vergleich zum Resultat in R, wurden in Stata viele neue Variable generiert. Selbstverständlich können die ursprünglichen Variablen auch entfernt werden. In R und auch SPSS ist es generell leichter bestehende Variablen zu überschreiben als in Stata. Das ermöglicht einen besseren Überblick über die Daten, kann jedoch auch gefährlich werden, wenn Variablen unabsichtlich überschrieben werden.

Datensturktur in Stata - nachher

SPSS

Als nächstes wird die Anpassung des Datentyps in SPSS vorgestellt. Die Variablenansicht ist gut geeignet, um sich grundlegende Eigenschaften der Daten anzusehen. Für uns ist hier die Spalte „Typ“ von Interesse. Diese gibt an, ob es sich beispielsweise um einen String, numerische Werte oder ein Datum handelt. In einer separaten Spalte wird das Messniveau dargestellt.

Über die Variablenansicht können auch händisch Änderungen vorgenommen werden. Dies kann jedoch leichter zu Fehlern führen, außerdem wollen wir hier die Syntax von SPSS vorstellen. So können die Änderungen auch für mehrere Variablen gleichzeitig ausgeführt werden. Zunächst, wie bisher auch, der Blick auf die Struktur der eingelesenen Daten:

Datensturktur in SPSS - vorher

Wieder wird die Datumsvariable nicht im vorgesehenen Typ erkannt. Außerdem soll die Pickup-Variable als gelabelter Faktor definiert werden. Die Obst-Variable mit den Dezimalwerten stellt in der Regel kein Problem dar, weil SPSS sowohl Punkt als auch Komma als Dezimaltrenner anerkennt. Aus diesem Grund wird der Variable auch automatisch eine Dezimalstelle zugeordnet.

Beginnen wir mit der Anpassung der PickUp-Variable. Mit dem VALUES LABELS-Befehl wird den numerischen Werte eine Bezeichnung übergeben. In der Datenansicht von SPSS kann über den Button „Wertelabels“ zwischen Anzeige der numerischen und gelabelten Werte umgeschaltet werden. Weitere Anpassungen müssen für die Variable nicht getroffen werden.

Um die Datumsvariable in das entsprechende Format umzuwandeln muss als erstes mit dem NUMBER-Befehl eine neue Variable erstellt werden. Nach der zu transformierenden Variable wird als zweites Argument die Reihenfolge des Datums erwartet. Eine direkte Umwandlung ist jedoch auch mit dem ALTER TYPE-Befehl möglich. Nähere Informationen zum Datumstyp sind hier zu finden.

Außerdem wird dargestellt, wie sich die String-Variable „Mitarbeiter“ in einen Faktor transformieren lässt. In diesem Beispiel hat der Anwender dadurch, außer geringerem Speicherplatz, keinen Vorteil, handelt es sich jedoch um eine Variable mit ordinalem Messniveau, muss diese Umwandlung erfolgen. Mit dem AUTORECODE-Befehl wird die String-Variable bequem in einen gelabelten, numerischen Faktor umgewandelt. Die Nummerierung erfolgt alphabetisch. Dies stellt hier kein Problem dar, bei einem Faktor mit ordinalem Messniveau kann dies jedoch zur Falle werden, wenn die Nummerierung automatisch erfolgt. Die (leider) einfachste Möglichkeit damit umzugehen ist, alle Werte einzeln mit dem RECODE-Befehl in numerische Größen umzustrukturieren und mit dem bereits bekannten Befehl zu labeln. Aus diesem Grund ist in der Codebox zusätzlich noch dargestellt, wie sich die Strings in Faktoren mit beliebigen Ausprägungen/beliebiger Reihenfolge umwandeln lassen.

Generell lässt sich der Variablentyp mit dem ALTER TYPE-Befehl verändern. Nach den Anpassungen blicken wir wieder auf die Variablentypen in der Variablenansicht.

Datensturktur in SPSS - nachher

Sowohl die neu erstellte Variable „tage_date“ als auch die transformierte Tag-Variable liegen nun im Datumsformat vor. Aus der String-Mitarbeiter-Variable wurden zwei Faktoren erstellt. Eine der beiden lässt sich sehr einfach generieren (mit AUTORECODE), die Erstellung der zweiten ist eher aufwändiger. Das Resultat der beiden ist jedoch sehr ähnlich: Beide weisen einen numerischen Typ als auch Wertelabels auf. Auch bei der PickUp-Variable werden jetzt Labels angezeigt.

* Definition der PickUp-Variable als Faktor 
VALUE LABELS pickup 1 "Choco" 2 "Choco & Caramel" 3 "Choco & Milch". 
EXECUTE. 

* Umwandlung der Obst-Variable ins Zahlenformat nicht notwendig, Komma automatisch als Dezimaltrenner erkannt. 

* Umwandlung der Tag-Variable ins Datumsformat 
COMPUTE tag_date=NUMBER(tag, SDATE10). 
FORMATS tag_date (SDATE10). 
EXECUTE. 

* Oder direkte Transformation des Datums:  
ALTER TYPE tag (SDATE10). 

* Definition der Mitarbeiter-Variable als Faktor 
AUTORECODE mitarbeiter /INTO mitarbeiter_faktor. 

* Mit beliebiger Nummerierung der Mitarbeiter-Variable 
RECODE mitarbeiter (CONVERT) ("Bayes" = 1) ("Pearson" = 2) ("Laplace" = 3) ("Gauss" = 4) INTO mitarbeiter_haendisch. 
VALUE LABELS mitarbeiter_haendisch 1 "Bayes" 2 "Pearson" 3 "Laplace" 4 "Gauss". 
EXECUTE.

Zusammenfassung

Dieser Blogbeitrag versucht die häufigsten Probleme im Zusammenhang mit Datentypen in R, Stata und SPSS aufzuzeigen. Es zeigt sich, dass der gleiche Schritt zur Datenaufbereitung, nämlich die Anpassung des Variablentyps, in den verschiedenen Softwareprogrammen völlig unterschiedlich umgesetzt wird. Auch die Transformation zwischen Typen innerhalb eines Statistikprogramms ist leider oft nicht intuitiv verständlich.

In der “Gut in Form”-Serie werden in den nächsten Wochen verschiedene Möglichkeiten gezeigt, um die Daten optimal für die Analyse vorzubereiten. Die Durchführung wird dabei jeweils in R, Stata und SPSS vorgestellt. So werden auch Vor- oder Nachteile der verschiedenen Programme sichtbar.

Datenimport und -export

Egal wie gut die Methodenkenntnisse sind, haben die Daten nicht die gewünschte Form, lässt sich das einfachste statistische Verfahren nicht anwenden. Noch schlimmer ist es, wenn durch die Form der Daten der falsche Test durchgeführt wird. Dies kann beispielsweise beim Unterschied zwischen verbundenen und unabhängigen Stichproben zum Problem werden, wie es in dem Beitrag über den t-Test gezeigt wurde. Dadurch kann sich das Ergebnis sowie die Interpretation drastisch verändern, was dem Anwender mitunter gar nicht auffällt.

In diesem Eintrag geht es zunächst um Möglichkeiten die Daten in das entsprechende Statistikprogramm einzulesen und (nach der Bearbeitung) wieder zu exportieren. Dies gehört zwar nicht zur klassischen Datenaufbereitung, bildet jedoch den ersten Schritt vor bzw. den letzten nach der Datenaufbereitung. In den folgenden Einträgen werden beispielsweise Datentypen, -restrukturierungen und –verschmelzungen sowie der Umgang mit Strings und Datumsformaten besprochen.

Datensatz

Der Datensatz, an dessen Beispiel die Aufbereitung dargestellt wird, soll natürlich zum Thema “Gut in Form” passen. Deshalb haben wir unseren Süßigkeitenkonsum in zwei Wochen notiert. Um niemanden bloßzustellen, werden keinen echten Namen genannt, sondern nur die des jeweiligen Lieblingsstatistikers. Mehr Informationen zu unserem Zuckerkonsum gibt es übrigens hier. Untenstehend sind die ersten Zeilen des Datensatzes “Sweets”, geordnet nach Tagen, dargestellt.

Abbildung der Daten

Die Struktur und Variablentypen werden in späteren Beiträgen besprochen. Zunächst gehen wir der Frage nach, wie man zu diesen eingelesenen Daten gelangt.

Datenimport

Um überhaupt mit der Datenaufbereitung beginnen zu können, muss der Datensatz zuerst in das entsprechende Programm importiert werden. Unabhängig von der verwendeten Software muss auf das Datenformat geachtet werden. Hier gibt es unzählige Möglichkeiten und Wege. In der Praxis ist die häufigste Problemstellung wohl der Import vom xls(x)-, csv-Format sowie dem Dateiformat der verwendeten Software. Das Einlesen der jeweils drei Formate wird nun für R, Stata und SPSS vorgestellt. Hierbei wird angenommen, dass die Datei, unabhängig vom Format, als “sweets” benannt ist.

Nach jedem Import sollte unbedingt überprüft werden, ob dieser geglückt ist. Die Variablen- sowie Fallzahl muss mit der des Originals übereinstimmen. Für jede Software wird deshalb die Datenansicht nach dem Einlesen dargestellt.

R

Am einfachsten gestaltet sich hier der Import eines RData-Files. Außer dem Dateinamen und –pfad muss hier meist kein Argument spezifiziert werden.

Das Einlesen einer csv-Datei gelingt am schnellsten mit der read.csv2()-Funktion, eine Spezialform von read.table(). Dabei sollte auf das Trennzeichen und den Dezimaltrenner geachtet werden, welche bei Bedarf mit den Argumenten sep und dec angepasst werden können. Außerdem sollte das Argument header auf TRUE gesetzt werden, falls in der ersten Zeile die Variablennamen stehen.

Für den Import einer Excel-Datei (vom Typ xlsx) kann die read.xlsx2()-Funktion verwendet werden. Hier muss das Tabellenblatt und optional ein bestimmter Bereich spezifiziert werden.

Die genannten Funktionen sind nur jeweils eine von vielen Möglichkeiten zum Import des entsprechenden Dateityps.

# Import RData-File 
load(file = "dateipfad/sweets.RData")   
# Import csv-File 
read.csv2(file = "dateipfad/sweets.csv") 
#Import xlsx-File, sofern Daten im 1. Tabellenblatt 
library(xlsx) 
read.xlsx2(file = "dateipfad/sweets.xlsx“, sheetIndex = 1)

Abbildung der Daten in R

Die oben stehende Abbildung zeigt die eingelesenen Daten. Die Anzahl an Variablen sowie Fällen (hier nicht ersichtlich) stimmt mit dem Original überein. Ob die Variablen jedoch den für die Auswertungen richtigen Datentyp aufweisen, wird erst im späteren geklärt.

Stata

In Stata kann jeweils nur ein Datensatz geöffnet sein. Will man neue Daten laden, müssen die aktuellen geschlossen werden. Beim Einlesen der Daten in Stata sollte deshalb beachtet werden, dass eine Fehlermeldung ausgegeben wird, wenn bereits ein Datensatz geöffnet und ein weiterer geladen werden soll. Ist man sich also sicher, dass man den aktuellen Datensatz nicht mehr braucht, so kann man die clear-Option angeben.

Das Datenformat bei Stata heißt “dta” und kann mit dem use-Befehl geladen werden. Hierbei muss nur der Dateipfad angegeben werden.

Andere Datentypen können mit import eingelesen werden. Mit import delimited können csv- (und txt-) Files geladen werden. Der Trenner kann bei Bedarf mit der delimiters-Option angepasst werden.

Der Import einer Excel-Datei erfolgt mit import excel, wobei der Tabellenname mit sheet und der Zellbereich mit cellrange definiert werden kann. Variablennamen in der ersten Zeile müssen auch hier mit firstrow definiert werden.

* Import dta-File 
use "dateipfad/sweets.dta”, clear  
* Import csv-File 
import delimited "dateipfad/sweets.csv”, firstrow clear  
* Import xlsx-File, sofern Daten in 1. Tabellenblatt 
import excel "dateipfad/sweets.xlsx", sheet("Tabelle1") firstrow clear

Abbildung der Daten in Stata

In Stata kann anhand der farbigen Darstellung der Variablen grob der Datentyp abgelesen werden. Bei einer roten Schrift handelt es sich um Strings, in schwarz werden Zahlen aller Art dargestellt und in blau Faktoren. Zwar wird der Datentyp an dieser Stelle noch nicht behandelt, beim Import sollte jedoch darauf geachtet werden, dass die (Dezimal-)Zahlen richtig erkannt werden. Für den konkreten Fall bedeutet das, dass die Variable “obst” in schwarz und nicht rot dargestellt wird.

SPSS

Der Umgang mit SPSS wird in dieser Blog-Serie lediglich über die Verwendung von Syntax beschrieben, nicht über die Dialogfelder. Das SPSS-eigene Datenformat nennt sich “sav”. Wie bei den vorherigen Programmen muss zum Einlesen des eigenen Formates nur der Dateipfad spezifiziert werden.

Die Syntax zum Import eines CSV-Files ist etwas komplizierter, besonders bei einer großen Anzahl an Variablen im Datensatz. Hier muss das Trennzeichen verpflichtend angegeben werden. Muss nur eine Datei eingelesen werden, empfiehlt es sich die Syntax über die Dialogfelder zu erzeugen.

Auch der Befehl zum Einlesen von xlsx-Files ist um einiges länger als bei den bisherigen Statistikprogrammen, weshalb auch hier die Arbeit mit den Dialogfeldern den Import erleichtern kann.

* Import sav-File. 
GET 
  FILE='dateipfad/sweets.sav'. 
* Import csv-File. 
GET DATA  
  /TYPE=TXT 
  /FILE'dateipfad/sweets.csv’ 
  /ENCODING='Locale' 
  /DELCASE=LINE 
  /DELIMITERS="," 
  /ARRANGEMENT=DELIMITED 
  /FIRSTCASE=2 
  /IMPORTCASE=ALL 
  /VARIABLES= 
  Tag 
  Mitarbeiter 
  Obst 
  Gummibärchen 
  Snickers 
  PickUp 
CACHE. 

EXECUTE. 

* Import xlsx-File (unter der Annahme, dass die Daten im Blatt „Tabelle 1“ liegen. 
GET DATA /TYPE=XLSX 
  /FILE='dateipfad/sweets.xlsx' 
  /SHEET=name 'Tabelle1' 
  /CELLRANGE=full 
  /READNAMES=on 
  /ASSUMEDSTRWIDTH=32767. 
EXECUTE.

Abbildung der Daten in SPSS

Die resultierenden Daten entsprechen (vom Aussehen) den Originaldaten. Es zeigt sich, dass SPSS den Dezimaltrenner, sofern die Grundeinstellungen vorhanden sind, automatisch umwandelt.

Übersicht

Format R Stata SPSS
Eigenes Format load use get file
CSV read.csv(2) import delimited get data /type =txt
XLSX read.xlsx(2) import excel get data /type =xlsx

Datenexport

Nach der Datenaufbereitung müssen die Daten wieder in das gewünschte Format exportiert werden, um die Datenaufbereitung nicht jedes Mal wiederholen zu müssen. Zur besseren Unterscheidung empfiehlt es sich den Datensatz nach der Aufbereitung entsprechend zu benennen. Hier wird nun die Bezeichnung “sweets_final” verwendet.

R

Objekte in R können mit dem save()-Befehl gespeichert werden. Dabei muss das zu speichernde Objekt, sowie der Dateipfad angegeben werden. Als csv-File können die Daten (komplementär zur read.csv2()-Funktion) mittels write.csv2() abgespeichert werden. Alternativ kann auch write.table() verwendet werden.

Auch für den Export nach Excel gibt es die komplementäre write.xlsx2()-Funktion. Bestimmte Ergebnisse oder Plots können auch einzeln mit den workbook-Funktionen nach Excel exportiert werden.

Zusätzlich erlauben die Funktionen write.foreign() und write.dta() den Export in das Datenformat anderer Statistikprogramme.

Achtung: Bei den zuletzt beschrieben Funktionen wird die Zeilennummerierung automatisch als erste Variable (ohne Namen) abgespeichert. Um das zu verhindern, kann das Argument row.names auf FALSE gesetzt werden.

Stata

Auch der Export in das “dta”-Format erfolgt über den Befehl save. Es muss nur der Dateipfad spezifiziert werden. Das Ausspeichern in andere Dateiformat erfolgt über den export-Befehl. Wie beim Import können für csv- und xlsx-Formate entsprechend export delimited und export excel verwendet werden.

Ähnlich zu workbook in R, können bei Stata mittels putexcel-Befehl einzelne Ergebnisse inklusive Formatierung in eine Excel-Arbeitsmappe gespeichert werden. Eine Einführung in diesen Befehl gibt es hier.

SPSS

Daten können ins sav-Format mit dem Befehl save outfile gespeichert werden. Hierbei können beispielsweise noch Variablen spezifiziert werden, die bleiben oder entfernt werden sollen.

Der Export als csv- oder xlsx-Format kann mit dem save translate outfileBefehl durchgeführt werden, hierbei muss der Type als Argument angegeben werden.

Übersicht

Format R Stata SPSS
Eigenes Format save save save
CSV write.csv(2) export delimited save translate /type =txt
XLSX write.xlsx(2) export excel save translate /type =xls

Zusammenfassung

Die richtige Struktur der Daten ist unerlässlich für die richtige Anwendung statistischer Methoden. Bevor die Datenstruktur an die Anforderungen der Methodik angepasst werden kann, müssen die Daten korrekt eingelesen werden. Auch der Export in beliebige Formate ist wichtig, um einfach mit Daten weiterarbeiten zu können. Die Vorgehensweise unterscheidet sich dabei zwischen den Statistikprogrammen R, Stata und SPSS. Am einfachsten gestaltet sich das Einlesen des Programm-eigenen Datenformats (RData, dta bzw. sav). Bei Fragen zum Thema Datenaufbereitung, stehen unsere Experten unter info@statworx.com gerne zur Verfügung.

Die Forschungsfrage ist formuliert, die Thesen sind aufgestellt und die zu messenden Variablen sind klar definiert. Jetzt nur noch schnell den Fragebogen runterschreiben, bevor es endlich mit der Auswertung losgehen kann! Oder? In der Praxis steckt mehr dahinter.

Fehlerquellen in Fragebogen

Ganz so trivial wie man oft glaubt ist das Aufsetzen des Fragebogens leider nicht. Wer noch keine Erfahrung damit hat, sollte sich an dieser Stelle lieber etwas Zeit nehmen, um sich bewusst zu werden, welche Fehlerquellen dabei lauern und wie diese nach Möglichkeit umgangen werden können. Du wirst merken, diese Zeit ist gut investiert, denn Fehler in der Datenerhebung lassen sich später in der statistischen Analyse nur noch schwer oder schlimmstenfalls nicht mehr bereinigen.

Grundsätzlich können drei Typen von Fehlerquellen unterschieden werden:

  1. Merkmale der Frage als Fehlerquelle
  2. Merkmale des Befragten als Fehlerquelle
  3. Merkmale der Antwort als Fehlerquelle

Hier geht es vor allem um zwei Dinge: die Formulierung und die Reihenfolge der Fragen. Sogenannte Reihenfolgeeffekte können einen starken Einfluss auf die erhobenen Daten haben, wie das folgende Beispiel verdeutlichen soll. In einer US-amerikanischen Studie aus dem Jahre 1950 von Hyman und Sheatsley wurden die Teilnehmer nach ihrer Zustimmung zu folgenden Aussagen befragt:

Frage (A): Freie Berichterstattung für US-Reporter in kommunistischen Ländern
Frage (B): Freie Berichterstattung für kommunistische Reporter in den USA
Zustimmung bei Reihenfolge A, B: (A): 89,8%, (B): 73,1%
Zustimmung bei Reihenfolge B, A: (A): 65,6%, (B): 36,5%

Das Urteil der Befragten kann also durch die Position im Fragebogen deutlich verzerrt werden. Der einfachste Weg dem entgegenzuwirken ist bei der Erstellung des Fragebogens eine Rotation der Fragen festzulegen. Damit ist die Position zufällig und unterscheidet sich von Teilnehmer zu Teilnehmer. Alternativ können Füllfragen verwendet werden und den direkten Bezug der Fragen entzerren.

Fragen als Fehlerquelle

Bei der Formulierung deiner Fragen gilt: Vermeide relativierende Füllwörter, wie „eigentlich“ oder „ganz gut“. Denn durch ihre abmildernde Wirkung auf die gemachte Aussage wird die Zustimmung zu selbiger künstlich gesteigert und damit verfälscht. Treffe stattdessen klare Formulierungen.

Sei außerdem vorsichtig bei der Verwendung von Antonymen. Willst Du zum Beispiel herausfinden, wie groß die Zustimmung in der Bevölkerung für Paketdrohnen ist, könntest du sowohl fragen, ob diese erlaubt oder aber ob sie verboten werden sollen. Weil die Menschen generell zur Beibehaltung des Status Quo tendieren, würdest du vermutlich feststellen, dass mehr Leute ein Verbot ablehnen, als eine Erlaubnis zu befürworten. Versuche deshalb auch solche Formulierungen zu vermeiden. Außerdem: Stelle deine Fragen kurz, präzise und neutral. Vermeide Negationen. Verwende eine klare Sprache und vermeide unnötige Fachbegriffe.

Befragte als Fehlerquelle

Messfehler entstehen regelmäßig auch dadurch, dass es dem Befragten schlicht an Wissen oder Erfahrungen fehlt, er trotzdem aber eine Antwort abgeben muss. Überlege deshalb genau wann du auf eine Antwort nicht verzichten und wann du eine Outside-Option einfügen kannst (z.B. „Ich weiß nicht“). Wenn du persönliche Angaben abfragst, wie das Alter oder den aktuellen Erwerbsstatus, lasse den Befragten immer die Möglichkeit nicht zu antworten.

Zu einem weiteren Problem kann die häufig zu beobachtende Tendenz der Befragten führen, ihre Antworten der sozialen Erwünschtheit anzupassen. Besonders stark tritt dies in persönlichen Interview-Situationen auf, sollte aber auch in anonymen Fragebögen nicht vernachlässigt werden. Ein Hinweis zu Beginn der Studie, der Anonymität garantiert und um ehrliche Antworten bittet, sollte deshalb nicht fehlen. Zusätzlich können auch „Lügen-Skalen“ verwendet werden, welche unehrliche Teilnehmer aufdecken sollen (Beispiel: „Manchmal bin ich neidisch, wenn andere Glück haben.“).

Antworten als Fehlerquelle

Welches Antwortformat gebe ich den Befragten vor? Ja/nein? Eine abstufende Skala von 1 bis 10? Von -3 bis 3? Es gibt unzählige Möglichkeiten und welche die richtige ist hängt ganz von deinen Fragen ab. Gemeinhin ist man der Auffassung, dass eine 7er-Skala bei Abstufungen oftmals die beste Lösung sei. Manchmal ist es jedoch sinnvoll die neutrale Mitte auszuschließen, um eine Tendenz zu erzwingen – dann wäre also eine 6er-Skala besser geeignet. Unter statistischen Gesichtspunkten kann man 5er, 6er oder 7er-Skalen als quasimetrisch ansehen und viele verschiedene Analysen damit durchführen. Bei 3er oder 2er-Skalen liegt ein nominales oder ordinales Skalenniveau vor, was die Auswertung manchmal erschweren kann.

Natürlich solltest du deine Skalenendpunkte benennen. Sei dabei aber nicht zu extrem, um die Tendenz zur Mitte nicht zu verstärken. Eine Skala von „Absolut schrecklich!“ bis „Besser geht es nicht!“ wird aufgrund ihrer Breite ein wesentlich undifferenzierteres Ergebnis generieren als eine enger gesteckte Skala, die von den Befragten vollständig ausgeschöpft wird. Wenn du alle Skalenpunkte beziffern willst, überlege dir, ob die vorliegende Skala ein- oder zweidimensional ist und spiegele dies in den Skalenwerten wider. Für eine zweidimensionale 7er-Skala beispielsweise erweist es sich als sinnvoll, diese nicht von eins bis sieben durchzuzählen, sondern die neutrale Mitte mit einer Null zu versehen und in beide Richtungen hoch zu zählen.

Zusammenfassung

In diesem Beitrag haben wir dir einen kurzen Überblick über mögliche Fehlerquellen in Fragebogen gegeben. Wie du sicher gemerkt hast, ist die Konstruktion von Fragebögen eine komplexe Aufgabe. Je besser dein Fragebogen konstruiert und erhoben ist, desto aussagekräftiger wird die statistische Auswertung. Falls du Hilfe bei der Konstruktion deines Fragebogens haben solltest, steht dir unser Statistik Team gerne zur Verfügung.

Literaturhinweise

Strack, F. (1994): Zur Psychologie der standardisierten Befragung, Berlin/Heidelberg/New York

Die Forschungsfrage ist formuliert, die Thesen sind aufgestellt und die zu messenden Variablen sind klar definiert. Jetzt nur noch schnell den Fragebogen runterschreiben, bevor es endlich mit der Auswertung losgehen kann! Oder? In der Praxis steckt mehr dahinter.

Fehlerquellen in Fragebogen

Ganz so trivial wie man oft glaubt ist das Aufsetzen des Fragebogens leider nicht. Wer noch keine Erfahrung damit hat, sollte sich an dieser Stelle lieber etwas Zeit nehmen, um sich bewusst zu werden, welche Fehlerquellen dabei lauern und wie diese nach Möglichkeit umgangen werden können. Du wirst merken, diese Zeit ist gut investiert, denn Fehler in der Datenerhebung lassen sich später in der statistischen Analyse nur noch schwer oder schlimmstenfalls nicht mehr bereinigen.

Grundsätzlich können drei Typen von Fehlerquellen unterschieden werden:

  1. Merkmale der Frage als Fehlerquelle
  2. Merkmale des Befragten als Fehlerquelle
  3. Merkmale der Antwort als Fehlerquelle

Hier geht es vor allem um zwei Dinge: die Formulierung und die Reihenfolge der Fragen. Sogenannte Reihenfolgeeffekte können einen starken Einfluss auf die erhobenen Daten haben, wie das folgende Beispiel verdeutlichen soll. In einer US-amerikanischen Studie aus dem Jahre 1950 von Hyman und Sheatsley wurden die Teilnehmer nach ihrer Zustimmung zu folgenden Aussagen befragt:

Frage (A): Freie Berichterstattung für US-Reporter in kommunistischen Ländern
Frage (B): Freie Berichterstattung für kommunistische Reporter in den USA
Zustimmung bei Reihenfolge A, B: (A): 89,8%, (B): 73,1%
Zustimmung bei Reihenfolge B, A: (A): 65,6%, (B): 36,5%

Das Urteil der Befragten kann also durch die Position im Fragebogen deutlich verzerrt werden. Der einfachste Weg dem entgegenzuwirken ist bei der Erstellung des Fragebogens eine Rotation der Fragen festzulegen. Damit ist die Position zufällig und unterscheidet sich von Teilnehmer zu Teilnehmer. Alternativ können Füllfragen verwendet werden und den direkten Bezug der Fragen entzerren.

Fragen als Fehlerquelle

Bei der Formulierung deiner Fragen gilt: Vermeide relativierende Füllwörter, wie „eigentlich“ oder „ganz gut“. Denn durch ihre abmildernde Wirkung auf die gemachte Aussage wird die Zustimmung zu selbiger künstlich gesteigert und damit verfälscht. Treffe stattdessen klare Formulierungen.

Sei außerdem vorsichtig bei der Verwendung von Antonymen. Willst Du zum Beispiel herausfinden, wie groß die Zustimmung in der Bevölkerung für Paketdrohnen ist, könntest du sowohl fragen, ob diese erlaubt oder aber ob sie verboten werden sollen. Weil die Menschen generell zur Beibehaltung des Status Quo tendieren, würdest du vermutlich feststellen, dass mehr Leute ein Verbot ablehnen, als eine Erlaubnis zu befürworten. Versuche deshalb auch solche Formulierungen zu vermeiden. Außerdem: Stelle deine Fragen kurz, präzise und neutral. Vermeide Negationen. Verwende eine klare Sprache und vermeide unnötige Fachbegriffe.

Befragte als Fehlerquelle

Messfehler entstehen regelmäßig auch dadurch, dass es dem Befragten schlicht an Wissen oder Erfahrungen fehlt, er trotzdem aber eine Antwort abgeben muss. Überlege deshalb genau wann du auf eine Antwort nicht verzichten und wann du eine Outside-Option einfügen kannst (z.B. „Ich weiß nicht“). Wenn du persönliche Angaben abfragst, wie das Alter oder den aktuellen Erwerbsstatus, lasse den Befragten immer die Möglichkeit nicht zu antworten.

Zu einem weiteren Problem kann die häufig zu beobachtende Tendenz der Befragten führen, ihre Antworten der sozialen Erwünschtheit anzupassen. Besonders stark tritt dies in persönlichen Interview-Situationen auf, sollte aber auch in anonymen Fragebögen nicht vernachlässigt werden. Ein Hinweis zu Beginn der Studie, der Anonymität garantiert und um ehrliche Antworten bittet, sollte deshalb nicht fehlen. Zusätzlich können auch „Lügen-Skalen“ verwendet werden, welche unehrliche Teilnehmer aufdecken sollen (Beispiel: „Manchmal bin ich neidisch, wenn andere Glück haben.“).

Antworten als Fehlerquelle

Welches Antwortformat gebe ich den Befragten vor? Ja/nein? Eine abstufende Skala von 1 bis 10? Von -3 bis 3? Es gibt unzählige Möglichkeiten und welche die richtige ist hängt ganz von deinen Fragen ab. Gemeinhin ist man der Auffassung, dass eine 7er-Skala bei Abstufungen oftmals die beste Lösung sei. Manchmal ist es jedoch sinnvoll die neutrale Mitte auszuschließen, um eine Tendenz zu erzwingen – dann wäre also eine 6er-Skala besser geeignet. Unter statistischen Gesichtspunkten kann man 5er, 6er oder 7er-Skalen als quasimetrisch ansehen und viele verschiedene Analysen damit durchführen. Bei 3er oder 2er-Skalen liegt ein nominales oder ordinales Skalenniveau vor, was die Auswertung manchmal erschweren kann.

Natürlich solltest du deine Skalenendpunkte benennen. Sei dabei aber nicht zu extrem, um die Tendenz zur Mitte nicht zu verstärken. Eine Skala von „Absolut schrecklich!“ bis „Besser geht es nicht!“ wird aufgrund ihrer Breite ein wesentlich undifferenzierteres Ergebnis generieren als eine enger gesteckte Skala, die von den Befragten vollständig ausgeschöpft wird. Wenn du alle Skalenpunkte beziffern willst, überlege dir, ob die vorliegende Skala ein- oder zweidimensional ist und spiegele dies in den Skalenwerten wider. Für eine zweidimensionale 7er-Skala beispielsweise erweist es sich als sinnvoll, diese nicht von eins bis sieben durchzuzählen, sondern die neutrale Mitte mit einer Null zu versehen und in beide Richtungen hoch zu zählen.

Zusammenfassung

In diesem Beitrag haben wir dir einen kurzen Überblick über mögliche Fehlerquellen in Fragebogen gegeben. Wie du sicher gemerkt hast, ist die Konstruktion von Fragebögen eine komplexe Aufgabe. Je besser dein Fragebogen konstruiert und erhoben ist, desto aussagekräftiger wird die statistische Auswertung. Falls du Hilfe bei der Konstruktion deines Fragebogens haben solltest, steht dir unser Statistik Team gerne zur Verfügung.

Literaturhinweise

Strack, F. (1994): Zur Psychologie der standardisierten Befragung, Berlin/Heidelberg/New York