====== Zufallsauswahl für Fragebögen ======
In einem Befragungsprojekt kann man mehrere Fragebögen anlegen (**Fragebogen zusammenstellen** -> **Neuen Fragebogen erstellen** bzw. **Fragebögen verwalten**). Ruft der Teilnehmer den [[:de:survey:url|Link zum Fragebogen]] auf, kann man ihn zufällig einem der Fragebögen zuweisen.
**Warnung:** Wenn Sie eine Randomisierung über unterschiedliche Fragebögen realisieren, kann es durch systematische Abbrecher zu einer (mitunter deutlich) ungleichen Verteilung bei den abgeschlossenen Fragebögen kommen. Verwenden Sie nur einen Fragebogen mit [[:de:create:randomization]] des Stimulus, um die Experimentalgruppen zuverlässig gleichmäßig zu füllen (s. auch folgender Hinweis).
**Warnung:** Wenn die Experimentalgruppen in unterschiedliche Fragebögen bearbeiten, muss man besonders genau darauf achten, dass die Fragebögen vom Treatment abgesehen identisch sind. Wird z.B. nach dem Pretest eine Änderung nur in einem der Fragebögen vorgenommen, kann dies zu einer Konfundierung führen und dazu, dass man die Daten nicht mehr verwenden kann. Die "normale" [[:de:create:randomization]] ist hier weniger fehleranfällig.
**Hinweis:** Für Experimente ist es in aller Regel deutlich (!) einfacher, nur einen Fragebogen anzulegen und mit einem kleinen PHP-Code den Stimulus zu variieren ([[:de:create:randomization]]). Dieses Vorgehen hat u.a. auch den Vorteil, dass man eine Gleichverteilung in //abgeschlossenen// Fragebögen realisieren kann.
===== Vorgehen =====
Zunächst legen Sie unter **Fragebogen zusammenstellen** -> **Neuen Fragebogen erstellen** einen zusätzlichen Fragebogen an, welcher sich um die zufällige Verteilung kümmert. Die Kennung können Sie frei wählen, für die folgende Beschreibung verwenden wir die Kennung "random".
Legen Sie diesen Fragebogen "random" unter **Fragebogen zusammenstellen** -> **Fragebögen verwalten** als Standard-Fragebogen fest.
{{:de:create:scr.random-questionnaire.questionnaires.png|Fragebögen für die Zufallsauswahl}}
Um eine gleichmäßige Verteilung der Teinehmer auf die Fragebögen zu gewährleisten, benötigen Sie eine Frage vom Typ [[:de:create:questions:random]]. Sie können diese Frage in einer beliebigen Rubrik anlegen -- für die weitere Beschreibung wird angenommen, dass diese Frage die Kennung "RF01" hat.
{{:de:create:scr.random-questionnaire.random-create.png|Zufallsgenerator erstellen}}
Tragen Sie die Kennungen der Fragebögen (s. oben), zwischen denen Sie auswählen möchten, als //Zettel// in den Zufallsgenerator ein und speichern Sie die Frage ({{:button.save.png|Frage speichern}}).
Lassen Sie bei //Art der Ziehung// die Voreinstellung "Gleichverteile Ziehung" ausgewählt. Die Option "Gleichverteilung in abgeschlossenen Fragebögen" wird //nicht// funktionieren, weil der Fragebogen zur Zufallsverteilung nie abgeschlossen wird.
{{:de:create:scr.random-questionnaire.random-contents.png|Zufallsgenerator für die Auswahl des Fragebogens}}
Öffnen Sie den Fragebogen, welchen Sie für die zufällige Verteilung angelegt haben ("random") unter **Fragebogen zusammenstellen** zum Bearbeiten.
- Ziehen Sie den Zufallsgenerator (RF01) auf die erste (und einzige*) Seite des Fragebogens und
- platzieren Sie darunter folgenden [[:de:create:php|PHP-Code]].
$qnr = value('RF01', 'label');
goToQuestionnaire($qnr);
** *Tipp:** Als Variante zum o.g. Vorgehen können Sie im Fragebogen "random" auch zwei Seiten anlegen. Auf der ersten Seite platzieren Sie die Begrüßung. Der Zufallsgerenator und der PHP-Code folgen dann erst auf der zweiten Seite. Das hat den großen Vorteil, dass Abbrecher auf der Begrüßungsseite (dort wird der Fragebogen mit Abstand am häufigten geschlossen) die Ziehung nicht verzerren.
Die Funktion ''[[:de:create:functions:value]]'' ruft die Kennung des zufällig gezogenen Fragebogens aus dem Zufallsgerator ab. Die Funktion [[:de:create:functions:gotoquestionnaire]] springt direkt zu dem Fragebogen mit der entsprechenden Kennung.
{{:de:create:scr.random-questionnaire.questionnaire.png|Fragebogen zur zufälligen Auswahl anderer Fragebögen}}
Den Fragebogen "random" haben Sie unter **Fragebogen zusammenstellen** -> **Fragebögen verwalten** als Standard-Fragebogen für das Befragungsprojekt ausgewählt. Die Teilnehmer können den [[:de:survey:url]] also ohne weitere Parameter (''q=...'') aufrufen. Sie gelangen dann zunächst zum Fragebogen "random" und werden von dort zufällig auf einen der anderen beiden Fragebögen verteilt.
===== Gewichtete Auswahl =====
Falls einige Fragebögen häufiger ausgewählt werden sollen als andere (höhere Gewichtung in der Zufallsauswahl), tragen Sie deren Kennungen bitte einfach mehrfach im Zufallsgenerator ein.
Der folgende Zufallsgenerator würde z.B. den Fragebogen "control" doppelt so häufig aufrufen wie "order1", "order2" oder "order3".
1 control
2 control
3 order1
4 order2
5 order3
===== Zusammenspiel mit externen Panels =====
Wenn man die Teilnehmerinnen und Teilnehmer über ein externes Panel rekrutiert, muss man in aller Regel einen Teilnahmecode im Redirect übermitteln: [[:de:survey:panels]]
Sobald ''[[:de:create:functions:gotoquestionnaire]]'' zum Einsatz kommt, wird ein neuer Fall im Datensatz erzeugt. In diesem (neuen) Interview hat man keinen Zugriff mehr auf die Daten, die im ursprünglichen Fragebogen (hier z.B. "random") erhoben wurden. Das gilt auch für einen Teilnahmecode, der eventuell via URL vom Panel-Anbieter übergeben wurde.
Damit es dennoch funktioniert, muss man den Teilnahmecode explizit an das untergeordnete Interview durchreichen. Dafür kommt die Funktion ''[[:de:create:functions:multileveldown]]'' zum Einsatz. Wenn der Teilnahmecode als Referenz (REF) übergeben wurde, würden Sie die Zeilen (s. oben)
$qnr = value('RF01', 'label');
goToQuestionnaire($qnr);
__ersetzen__ durch
$qnr = value('RF01', 'label');
multiLevelDown($qnr, reference());
Im untergeordneten Fragebogen kann man dann mittels ''[[:de:create:functions:multileveldata]]'' auf den übergebenen Code zugreifen. Im Redirect auf der vorletzen Seite des Fragebogens würde dann __nicht mehr__ direkt die Referenz verwendet ...
redirect('https://www.panelanbieter.de/complete?xyz=ABCDEF&uid=%reference%');
// bzw. gleichbedeutend
redirect('https://www.panelanbieter.de/complete?xyz=ABCDEF&uid='.reference());
... sondern stattdessen die Daten, die von ''multiLevelDown()'' übergeben wurde, also
redirect('https://www.panelanbieter.de/complete?xyz=ABCDEF&uid='.multiLevelData());
==== Mehrere Variablen übergeben ====
Fall neben der Panel-ID noch weitere Variablen übergeben werden sollen, können diese gemeinsam als [[:de:create:array|Array]] in ''multiLevelDown()'' an den nachgelagerten Fragebogen übergeben werden.
Der nachfolgende Code verwendet String-Schlüssel für die Variablen (''%%'panelID'%%'', ''%%'userID'%%'' u.s.w.) -- das dient vor allem der besseren Verständlichkeit.
// Zufallsauswahl für einen Fragebogen
$qnr = value('RF01', 'label');
// Daten zusammenfassen
$data = [
'panelID' => reference(),
'userID' => value('RV01x01'),
'AB01_01' => value('AB01_01'),
'AB01_02' => value('AB01_02')
];
// Daten übergeben
multiLevelDown($qnr, $data);
Um untergeordneten Fragebogen können die Daten wieder auf einzelne Variablen verteilt werden.
$data = multiLevelData();
put('IV01_01', $data['panelID']);
put('IV01_02', $data['userID']);
// Die Filtervariablen werden hier direkt in die Filterfragen gespeichert
put('AB01_01', $data['AB01_01'], true);
put('AB01_02', $data['AB01_02'], true);
Die Weiterleitung kann auf die in ''%%'IV01_01'%%'' abgelegte Panel-ID zugreifen.
redirect('https://www.panelanbieter.de/complete?xyz=ABCDEF&uid='.value('IV01_01'));