====== Block-Randomisierung ======
Für gewöhnlich werden alle Versuchspersonen zufällig auf alle Versuchungsbedingungen (Experimentalgruppen) verteilt ([[:de:create:randomization-einfaktoriell]]). Die zufällige Zuweisung zu den Versuchungsbedingungen bietet die beste Chance, dass die Experimentalgruppen hinsichtlich bekannter und unbekannter Prädispositionen gleich sind -- im Rahmen des statistischen Auswahlfehlers.
Der statistische Auswahlfehler kann jedoch dazu führen, dass die Experimentalgruppe nicht vollständig unabhängig von Merkmalen der Versuchspersonen sind. Es kann also beispielsweise passieren, dass in der Kontrollgruppe mehr Frauen sind als in der Experimentalgruppe. Dies ist dann problematisch, wenn ein Personenmerkmal als quasi-experimenteller Faktor in dem Experiment dient.
In solchen Fällen kann es nützlich sein, eine Block-Randomisierung durchzuführen. Dies bedeutet, dass die Personen zunächst anhand eines Merkmals in Gruppen unterteilt werden (Blöcke) und dass die Zuweisung zu Versuchsbedingungen dann innerhalb dieser Blöcke erfolgt.
**Hinweis:** Eine Block-Randomisierung ist nur dann relevant, wenn durch "Ziehen ohne Zurücklegen" sichergestellt wurde, dass alle Versuchsbedingungen gleich häufig gezogen werden. In SoSci Survey ist die "Gleichverteilung" die Voreinstellung für einen [[:de:create:questions:random|Zufallsgenerator]].
===== Umsetzung in SoSci Survey =====
In SoSci Survey verwenden Sie für jeden Block einen eigenen Zufallsgenerator. Dadurch wird sichergestellt, dass die Ziehungen in einem Block unabhängig von den Ziehungen in den anderen Blöcken erfolgt.
Das Vorgehen ist wie folgt:
- Erstellen Sie einen Zufallsgenerator ([[:de:create:randomization-einfaktoriell]]).
- Stellen Sie sicher, dass der Zufallsgenerator eine "gleichverteilte" Ziehung vornimmt -- entweder zum Zeitpunkt der Ziehung (Voreinstellung) oder eine Gleichverteilung in abgeschlossenen Fragebögen.
- Erstellen Sie Kopien des Zufallsgenerators, sodass Sie genauso viele Zufallsgeneratoren wie Blöcke haben ([[:de:create:question-management#fragen_kopieren|Fragen kopieren]]).
- Erstellen Sie einen [[:de:create:php-filters|PHP-Filter]], welcher abhängig von den Personenmerkmalen (Block-Zugehörigkeit) den passenden Zufallsgenerator einbindet (unten: [[#einbindung_des_zufallsgenerators|Einbindung des Zufallsgenerators]]).
- Falls Sie den Stimulus mittels PHP-Code zeigen ([[:de:create:randomization-php]]),
* kopieren Sie den oder die gezogenen Codes in interne Variablen (unten: [[#anzeige_des_stimulus_per_php-code|Anzeige des Stimulus per PHP-Code]]) und
* verwenden Sie diese interne Variable anstatt der bisherigen Zufallsvariable.
===== Einbindung des Zufallsgenerators =====
Wenn Sie den Anleitungen zur [[:de:create:randomization]] gefolgt sind, haben Sie den Zufallsgenerator immer per Drag&Drop auf eine Fragebogen-Seite gezogen. Diesen Schritt benötigen Sie bei der Blockrandomisierung nicht, denn hier muss der Zufallsgenerator mittels ''[[:de:create:functions:show|show()]]'' oder ''[[:de:create:functions:question|question()]]'' eingebunden werden.
**Wichtig:** Platzieren Sie keinen Ihrer Zufallsgeneratoren per Drag & Drop im Fragebogen. Falls Sie schon einen Zufallsgenerator auf eine Fragebogen-Seite gezogen haben, dann entfernen Sie diesen unter **Fragebogen zusammenstellen** bitte wieder von der entsprechenden Fragebogen-Seite. Der Zufallsgenerator muss im Fragenkatalog vorhanden sein, und er muss mit dem PHP-Code der Block-Randomisierung eingebunden werden.
Der PHP-Code zur Einbindung des richtigen Zufallsgenerators folgt denselben Grundlagen wie die im Kapitel [[:de:create:php-filters]] vorgestellten IF-Filter.
Im folgenden Beispiel wurde auf Seite 2 des Fragebogens das Geschlecht einer Person abgefragt (Variable "SD02") und Sie möchten in zwei Blöcken randomisieren: Männer (Code 2) und alle anderen (Antwortcodes 1 und 3). Dafür wurden zwei Zufallsgeneratoren RG01 für Männer und RG02 für alle anderen angelegt. Der folgende PHP-Code wird dort platziert, wo die Zuweisung zur Versuchsbedingung erfolgen soll, frühestens jedoch auf Seite 3.
if (value('SD01') == 2) {
// Zufallsgenerator RG01 einbinden (Männer)
show('RG01');
} else {
// Zufallsgenerator RG02 einbinden (alle anderen)
show('RG02');
}
**Hinweis:** Falls der HTML-Code für die Anzeige des Stimulus bereits in den Zufallsgeneratoren (einfaktorielles Design) hinterlegt ist, so brauchen Sie keinen weiteren PHP-Code und sie sind hiermit fertig. Falls Sie den Stimulus hingegen mittels PHP-Code anzeigen, folgenden Sie bitte weiter dieser Anleitung.
**Hinweis:** Prinzipiell können Sie die Befragten auch in mehrere Blöcke aufteilen, also z.B. nach Alter und Bildung, wenn diese Merkmale relevant für das Design sind. Beachten Sie aber bitte, dass mehr als 6 Blöcke nur bei großen Fallzahlen sinnvoll sind. Schätzen Sie vorab die Fallzahlen pro Block ab.
===== Anzeige des Stimulus per PHP-Code =====
Wenn Sie den Stimulus nicht per HTML-Code im Zufallsgenerator anzeigen sondern per PHP-Code, dann haben Sie dafür bisher ([[:de:create:randomization-php]]) jeweils die Variable des Zufallsgenerators verwendet, also z.B.
if (value('RG01') == 2) {
// Textstimulus A anzeigen
text('ST01');
} elseif (value('RG01') == 3) {
// Textstimulus B anzeigen
text('ST02');
}
Nun kommen aber je nach Block unterschiedliche Zufallsgeneratoren zum Einsatz. Legen Sie daher in Ihrem Fragenkatalog eine [[:de:create:questions:internal|interne Variable]] an.
**Hinweis:** Der Fragetyp "interne Variablen" sieht mehrere Variablen pro Frage vor. Deshalb trägt eine einzelne interne Variable eine längere Kennung (z.B. "RG04_01") als die Variable eines Zufallsgenerators ("RG01").
Das folgende Beispiel geht davon aus, dass die Frage vom Typ "interne Variablen" die Kennung "RG04" hat und ein Item besitzt ("RG04_01"). Der obige PHP-Code zur Einbindung des richtigen Zufallsgenerators wird nun um PHP-Code ergänzt, welcher die gezogene Zufallszahl mittels ''[[:de:create:functions:put]]'' in diese neue Variable kopiert.
if (value('SD01') == 2) {
// Zufallsgenerator RG01 einbinden (Männer)
show('RG01');
put('RG04_01', value('RG01'));
} else {
// Zufallsgenerator RG02 einbinden (alle anderen)
show('RG02');
put('RG04_01', value('RG02'));
}
Unabhängig davon, welcher Zufallsgenerator zum Einsatz kam, ist der gezogene Code nun (auch) in der Variable RG04_01 gespeichert. Diese Variable kann anschließend verwendet werden, um den passenden Stimulus zu präsentieren.
if (value('RG04_01') == 2) {
// Textstimulus A anzeigen
text('ST01');
} elseif (value('RG04_01') == 3) {
// Textstimulus B anzeigen
text('ST02');
}