SoSci Survey
Übersetzungen dieser Seite:
 

Randomisierung

Es gibt viele Situationen, in denen man im Fragebogen etwas Zufall benötigt. Dieses Kapitel stellt einige Möglichkeiten vor.

Möchte man einen Teilnehmer zufällig einer Experimentalgruppe zuweisen, dann benötigt man wahrscheinlich eine Randomisierung. Hier muss man sich eigentlich nur noch entscheiden, ob man ausreichend Teilnehmer hat, um dem Zufall zu vertrauen: Nämlich in Hinblick auf gleiche Gruppengrößen. Falls nicht, sollte man den Mehraufwand für Urnen in Kauf nehmen; diese garantieren bei korrekter Anwendung eine weitgehende Gleichverteilung.

Eine Rotation wird gerne verwendet, um Reihenstellungseffekten zu begegnen. Sehr bekannt sind der Primacy- und Recency-Effekt sowie Kontrast- und Konsistenzeffekte: Wann immer also die Reihenfolge von Fragen oder Items das Antwortverhalten beeinflussen könnte, wird die Reihenfolge gerne zufällig variiert (Rotation).

Sinn und Unsinn der Rotation

Aber Vorsicht: Nicht immer ist eine Rotation auch sinnvoll. Mit rotierten Items kann man sich ebenso problematische Messfehler einhandeln.

Sinnvoll ist eine Rotation eigentlich nur dann, wenn man das Aggregat auf die Grundgesamtheit hochrechnen möchte. Wenn man also z.B. vergleichen will, welches Item in einer Mehrfachauswahl die meisten Kreuzchen bekommt oder welches Item in einer Skala am höchsten bewertet wird. Dann gleichen sich Verzerrungen durch die Reihenstellungseffekte im Aggregat statistisch gesehen wahrscheinlich aus.

Nicht sinnvoll ist die Rotation, wenn man die Teilnehmer untereinander vergleichen möchte. Das ist bei nahezu allen Spielarten der Korrelation der Fall, also z.B. bei der Frage ob die Zufriedenheit mit einem Fernsehgenre (in einer Fragebatterie/Skala mit anderen Items zusammen erhoben) auf die Fernsehnutzungsdauer schließen lässt. Rotiert man hier die Items der Skala zufällig, so sind einige Teilnehmer nur aufgrund von Reihenstellungseffekten mit dem Fernsehprogramm scheinbar zufriedener. Man handelt sich also durch die Rotation einen Messfehler ein.

Der Messfehler durch Rotation sinkt mit der Anzahl an Items, mit denen man ein Konstrukt misst. In der BFI-S Persönlichkeitsskala mit 3 Items je Persönlichkeitsfaktor fällt der Messfehler geringer aus als im obigen Beispiel mit einem Item. Sofern man sowohl Korrelationen rechnen will als auch die Items untereinander vergleichen, muss man die Vor- und Nachteile abwägen. Vor Aktivierung der Rotation sollte man nur eben kurz inne halten und über sein Ziel nachdenken.

Rotation von Items in einer Frage

Die Randomisierung oder Rotation von Items in einer Frage wird wie folgt aktiviert: Die Frage im Fragenkatalog öffnen und und unter Einstellungen für die Items der Frage die Option Items der Frage zufällig mischen markieren. Die Randomisierung wird nach dem Speichern der Frage sofort in der Vorschau aktiviert.

Falls einzelne Items (z.B. ein „Sonstiges“ mit Texteingabe) vom der Rotation ausgenommen werden sollen, öffnen Sie dieses Item im Fragenkatalog oder mit dem Bearbeiten-Symbol und aktiviert die Option Dieses Item beim Mischen der Items ausnehmen.

Hinweis: Die Rotation betrifft natürlich nur die Anzeige. Die Antworten des Befragten auf ein Item werden immer unter derselben Kennung gespeichert.

Rotation von Items über mehrere Seiten

Falls Sie in einer Frage sehr viele Items haben, möchten Sie diese vielleicht auf mehrere Seiten verteilen. Normalerweise würden Sie das erledigen, indem Sie die Frage beim Fragebogen zusammenstellen mehrfach einfügen und jeweils bei den Anzeige-Einstellungen (Anzeige-Einstellungen-Knopf) unterschiedliche Items angeben, z.B. „1-10“, „11-20“, etc.

Falls Sie die Verteilung der Items mit einer Randomisierung kombinieren möchten, benötigen Sie ein paar Zeilen PHP-Code. Es ist sinnvoll, die eigentliche Randomisierung (der erste PHP-Code) schon früh im Fragebogen durchzuführen. Wenn Sie die Randomisierung erst auf der Seite mit dem ersten Frageblock durchführen, kann der Teilnehmer durch Drücken der F5-Taste (Seite neu laden bzw. Aktualisieren) die Randomisierung sonst verändern.

// PHP-Code für die Randomsierung
 
// Alle Items der Frage AB01 auflisten
$items = getItems('AB01', 'all');
// Liste Mischen
shuffle($items);
// Die Liste in Teillisten à 20 Items teilen
$itemsAB01 = array_chunk($items, 20);
// Die Variable für andere Seiten verfügbar machen
registerVariable('itemsAB01');
// PHP-Code auf der ersten Seite mit Items
question('AB01', $itemsAB01[0]);
// PHP-Code auf der zweiten Seite mit Items
question('AB01', $itemsAB01[1]);

Beachten Sie bitte, dass sich auf den Seiten nur noch der Index in eckigen Klammern ändert. Der Index beginnt bei 0, nicht bei 1 (s. Beispiel oben).

Wichtig: Wenn man beim Fragebogen zusammenstellen direkt eine Seite mit Items startet, dann erhält man die Fehlermeldung, die Variable $itemsAB01 sei unbekannt. Man muss zum Testen jeweils ab der Seite mit der Randomisierung starten.

Rotation mehrerer Fragen

In seltenen Fällen sollen nicht nur die Items einer Frage rotiert werden, sondern gleich die Reihenfolge mehrere Fragen. Dies lässt sich nicht durch einen einfachen Mausklick erledigen, sondern erfordert ein wenig Programmierung.

Das folgende Beispiel zeigt, wie man 5 Fragen auf einer Seite im Fragebogen rotieren kann (zur Erklärung von Arrays s. Items in eine anderen Frage übernehmen):

$fragen = array(  // Liste der Frage-Kennungen
  'AB01',
  'AB02',
  'CC03',
  'DE01',
  'DE02'
);
// Die Liste zufällig mischen
shuffle($fragen);
// Die Liste der Fragen Kennung für Kennung durchgehen
// und jeweils die entsprechende Frage anzeigen
foreach ($fragen as $kennung) {
  question($kennung);
}

Fragen über mehrere Seiten rotieren

Die Rotation von Fragen über mehrere Seiten ist nochmals ein wenig anspruchsvoller. Das folgende Beispiel zeigt, wie 6 Fragen auf 2 Seiten verteilt werden können:

// PHP-Code auf Seite 1
$fragen = array(  // Liste der Frage-Kennungen
  'AB01', 'AB02',
  'CC02', 'CC03',
  'DE01', 'DE02'
);
// Die Liste zufällig mischen
shuffle($fragen);
// Die Listen auf allen Seiten verfügbar machen
registerVariable('fragen');
// Die ersten drei Kennungen der Liste anzeigen
question($fragen[0]);
question($fragen[1]);
question($fragen[2]);
// PHP-Code auf Seite 2
 
// Die nächsten drei Kennungen der Liste anzeigen
question($fragen[3]);
question($fragen[4]);
question($fragen[5]);

Tipp: Die gemischte Liste kann man auch schon früher im Fragebogen erstellen und mit set() abspeichern. Der kleine Vorteil ist, dass der Befragte die Reihenfolge dann nicht mit der Browser-Funktion „Aktualisieren“ verändern kann.

Fragen zusammen mit weiteren Inhalten rotieren

Nochmal einen Schritt weiter muss man gehen, um weitere Daten (z.B. ein Bild als Stimulus) mit den Fragen zusammen zu rotieren. Wenn also vor Frage 1 immer „bild1.png“ und vor Frage 2 immer „bild2.gif“ angezeigt werden soll. Aber vom Prinzip her ändert sich nichts. Im folgenden Beispiel zeigt jede Seite nur eine Kombination aus Bild und Frage – es können aber (wie im vorigen Beispiel) mehrere Fragen auf einer Seite gestellt werden.

// PHP-Code auf Seite 1
$fragen = array(  // Liste der Frage-Kennungen
  'AB01',
  'AB02',
  'AB03',
  'AB04'
);
$bilder = array(  // Zuordnung weiterer Informationen (z.B. Bilder) zu den Frage-Kennungen
  'AB01' => 'bild1.png',
  'AB02' => 'bild2.gif',
  'AB03' => 'bild3.jpg',
  'AB04' => 'bild1a.png'
);
// Die Liste der Fragen (und nur diese) zufällig mischen
shuffle($fragen);
// Beide Listen auf allen Seiten verfügbar machen
registerVariable('fragen');
registerVariable('bilder');
// PHP-Code auf Seite 2
// Die erste Kombination aus Bild und Frage anzeigen
$frage = $fragen[0];  // Die 0 ist das einzige, was sich für die weiteren Fragen ändert
$bild = $bilder[$frage];
html('<div style="text-align: center"><img src="'.$bild.'"></div>');
question($frage);
// PHP-Code auf Seite 3
// Die zweite Kombination aus Bild und Frage anzeigen
$frage = $fragen[1];
$bild = $bilder[$frage];
html('<div style="text-align: center"><img src="'.$bild.'"></div>');
question($frage);

Der letzte PHP-Code wird mit geändertem Array-Index für $fragen insgesamt so oft wiederholt, wie Fragen angezeigt werden sollen.

Randomisierung eines Stimulus

Vor allem in Experimenten muss man die Teilnehmer häufig zufällig auf Versuchs- und Kontrollgruppe(n) verteilen. Oder anders ausgedrückt: Man muss den zufällig auswählen, welcher von mehreren Stimuli angezeigt wird.

Dafür gibt es zwei Möglichkeiten:

Im einfachsten Fall hat man verschiedene Stimuli, die man experimentell variieren möchte. Dazu kann man zwei Möglichkeiten:

  1. Eine zufällige Variation durch Verwendung der Funktion random() oder
  2. eine Gleichverteilung durch Verwendung von Urnen.

Der Unterschied ist, dass die zufällige Variation nur wahrscheinlich ähnlich große Gruppen erzeugt. Verwendet man Urnen, sind die Gruppen durchweg annähernd gleich groß. In beiden Fällen muss man allerdings ein paar Zeilen PHP-Code programmieren (Einführung in PHP-Code).

Im Folgenden wird kurz beschrieben, wie man mit der Funktion random() zufällig eines von 4 Bildern im Fragebogen anzeigt. Das Vorgehen ist dabei prinzipiell genauso wie bei einer Filterfrage ( Filterfragen und Filter), nur erfolgt die Auswahl nicht anhand der Antwort des Befragten.

$zahl = random(1,4);  // Würfelt eine Zahl zwischen 1 und 4
put('ST03_01', $zahl);  // Speichert die Zahl in ST03_01
// Grafik in Abhängigkeit von der Zahl anzeigen
if ($zahl == 1) {
  html('<p><img src="stimulus1.png"></p>');
} elseif ($zahl == 2) {
  html('<p><img src="stimulus2.png"></p>');
} elseif ($zahl == 3) {
  html('<p><img src="stimulus3.png"></p>');
} elseif ($zahl == 4) {
  html('<p><img src="stimulus4.png"></p>');
}
question('ST02');  // Bewertung der Werbeanzeige

Das Beispiel zeigt zufällig die Grafik stimuls1.png, stimuls2.png, stimuls3.png oder stimuls4.png und darunter die Frage ST02.

Außerdem speichert der Code die gezogene Zahl mit put() in der internen Variable ST03_01 (Variablen in SoSci Survey). Damit das put() funktioniert, muss man eine Frage (im Beispiel ST03) vom Typ „Interne Variablen“ angelegt haben und darin mindestens ein Item.

Anstatt mit html() Text oder eine Grafik anzuzeigen, kann man natürlich auch mit text() einen längeren Text zeigen oder ein Video einbinden oder mit question() eine Frage anzeigen.

Randomisierung von Fragen

V.a. in Methodenexperimenten sollen ganze Fragen randomisiert werden - auch das ist mit Filtern recht einfach zu erledigen. Das Vorgehen ist im Prinzip dasselbe wie bei der Randomisierung eines Stimulus.

Etwas schwieriger wird es allerdings, wenn die Fragen auf unterschiedlichen Seiten im Fragebogen erscheinen sollen. In diesem Fall muss man die einmal gezogene Zufallszahl auf den folgenden Seiten erst wieder mit mit value() aus dem Datensatz auslesen.

// Code auf Seite 1
$order = random(1,2);  // Auswahl von Reihenfolge 1 oder 2
put('ST03_01', $order);  // Speichert die Zahl in ST03_01
// Hier die eine oder die andere Frage zeigen
if ($order == 1) {
  question('AB01');  // Bewertung des Politikers
} else {
  question('AB02');  // Bewertung der Partei
}
// Code auf Seite 2
$order = value('ST03_01');  // Zufallszahl auslesen
// Auf Seite 2 die jeweils andere Frage zeigen
if ($order == 1) {
  question('AB02');  // Bewertung der Partei
} else {
  question('AB01');  // Bewertung des Politikers
}

Im Beispiel wird nun zufällig entweder erst Frage AB01 (auf Seite 1) und dann AB02 (auf Seite 2) angezeigt oder genau andersherum: AB02 auf Seite 1 und AB01 auf Seite 2.

Zufällige Auswahl von Fragen

Sie möchten zufällig 3 von 10 Fragen anzeigen, um Ihren Stimulus auf mehrere Teilnehmer zu verteilen? Erstellen Sie eine Liste (Array) mit allen Frage-Kennungen, mischen Sie die Liste und zeigen Sie dann die Fragen zu den ersten drei Kennungen an.

Hinweis: Bei diesem Verfahren wird nicht sichergestellt, dass alle Fragen gleich häufig abgefragt werden. Um dies zu erreichen müssen Sie die Fragen-Kombinationen vorgeben und mit Urnen arbeiten.

// Liste der relevanten Fragen
$fragen = array(
  'AB01', 'AB02', 'AB03', 'AB04', 'AB05',
  'BB01', 'BB02', 'BB03', 'CC01', 'CC02'
);
// Die Liste mischen
shuffle($fragen);
// Die Frage anzeigen, die nach dem Mischen an erste Stelle steht
question($fragen[0]);
// Und die Fragen an zweiter und dritter Stelle
question($fragen[1]);
question($fragen[2]);

Tipp: Wenn die Fragen auf unterschiedlichen Seiten angezeigt werden sollen, mischen Sie die Liste auf Seite 1 im Fragebogen, speichern Sie die Variable $fragen mittels registerVariable('fragen') und rufen Sie die Zeilen mit question() einfach auf beliebigen Seiten im Fragebogen auf.

Randomisierung des gesamten Fragebogens

In ganz seltenen Fällen sind die verschiedenen Varianten des Fragebogens so unterschiedlich, dass Filter zu aufwändig werden.

Wie das funktioniert steht unter Zufallsauswahl für Fragebögen.

de/create/randomization.txt · Zuletzt geändert: 11.04.2013 22:40 von admin
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 3.0 Unported
Driven by DokuWiki