Übersetzungen dieser Seite:
 

Dies ist eine alte Version des Dokuments!


Randomisierung mit PHP-Code

Für komplexere Randomisierungen wie zum Beispiel die Kombination von Fragen und Stimuli oder auch für komplexere HTML-Codierungen der Stimuli ist es sinnvoll, die Randomisierung durch einen PHP-Code in den Fragebogen zu integrieren. Wie dies gelingt wird in diesem Kapitel anhand einiger Beispiele erklärt.

Hinweis: Wenn Sie nur einen Stimulus (Bild oder andere Mediendateien) randomisieren möchten, sollte die einfache Vorgangsweise, die unter Einfaktorielles Design beschrieben wird, ausreichen.

Hinweis: Wenn Sie nur einen Teil der zufälligen Stimuli anzeigen möchten, lesen Sie bitte das Kapitel Randomisierung: within-subject (Messwiederholung).

Schritt 1: Zufallsgenerator - Einteilung in Experimentalgruppen

Als ersten Schritt für die folgenden Beispiele wird in jedem Fall zunächst ein Zufallsgenerator benötigt, um die Teilnehmer in verschiedene Experimentalgruppen einzuordnen. Dafür muss eine neue Frage vom Typ Zufallsgenerator angelegt werden (siehe Fragen erstellen).

Beispiel:
Zettel zeigt die Zahl „1“
Zahl „1“ ist die zugeordnete Zahl der „Gruppe 1“ und die Gruppe 1 soll einen bestimmten Stimulus erhalten

Durch das Anlegen dieses Fragentyps legen Sie die Unterteilung in verschiedene Gruppen fest. Jeder Teilnehmer wird einer dieser Gruppen zugeordnet, wobei im folgenden beschrieben wird, dass der Teilnehmer bildlich gesprochen einen „Zettel“ mit der Nummer der Gruppe zieht. In das Feld Zettel (Inhalte) schreiben Sie eine kurze Beschreibung Ihrer Experimentalgruppen, z.B.

Kontrollgruppe
Positive Fallbeispiele
Negative Fallbeispiele

Nach dem Speichern ergänzt SoSci Survey für jede Gruppe einen numerischen Code, z.B.

1 = Kontrollgruppe
2 = Positive Fallbeispiele
3 = Negative Fallbeispiele

Was welcher Gruppe später angezeigt wird, wird erst im nächsten Schritt – also beim Einbinden des entsprechenden PHP-Codes – festgelegt.

Schritt 2: Präsentation des Stimulus

Wie oben beschrieben, ist bisher nur festgelegt, zu welcher Gruppe der Teilnehmer gehört (definiert durch die Zufallszahl).

Für die Definition, welcher Gruppe nun welcher Stimulus präsentiert wird, braucht man einen PHP-Code für einen Filter. Dieser wird beim Zusammenstellen des Fragebogens unter dem Zufallsgenerator auf der Seite platziert, auf welcher der Stimulus angezeigt werden soll. Dies sieht dann etwa folgendermaßen aus:

Der Zufallsgernerator wird über dem PHP-Code platziert

Hinweis: Nach dem Platzieren des Zufallsgenerators und des PHP-Codes müssen die Stimuli nicht mehr explizit auf der Fragebogenseite eingebunden werden!

Zur Einbindung eines Stimulus oder Treatments via PHP-Code in den Fragebogen gibt es verschiedene Möglichkeiten und auch für die verschiedenen Stimuli sieht der Code jeweils etwas anders aus. Hier geht es weiter zu den einzelnen Stimuli:

  1. Stimulus: Text
    Hier wird Ihnen erklärt, wie Sie mit Hilfe eines PHP-Codes nach dem Erstellen des Zufallsgenerators verschiedene Texte randomisieren können.
  2. Stimulus: Bild, Video, Audio
    Mediendateien, wie Bilder, Videos und Audios werden via PHP-Code allgemein ähnlich randomisiert wie Texte. In diesem Kapitel finden Sie die Anleitungen für die einzelnen Mediendateien.
    Hinweis: Da Mediendateien auch ohne PHP-Code randomisierbar sind, schauen Sie sich bitte zunächst die Erklärung unter Einfaktorielles Design an, um zu überprüfen, ob dieses Format für Ihre Zielsetzung bereits ausreichend ist. Außerdem steht auf dieser Seite, wie Sie Mediendateien abspeichern müssen.
  3. Stimulus: Frage
    In manchen Fällen ist es notwendig, ganze Fragen zu randomisieren. Wie das umzusetzen ist, lesen Sie hier.
  4. Stimulus: Seite
    Mit Hilfe der Funktion setPageOrder() können ganze Seiten randomisiert werden.

Stimulus: Frage

Wenn der zu randomisierende Stimulus eine Frage ist, benötigt man die PHP-Funktionen question() und value(). Erstere wird benötigt, um zu definieren, welche Frage (AB01 oder AB02) angezeigt werden soll. value() wird benötigt, um den Wert des Zufallsgenerators auszulesen (=1,2 oder3?). Der Code könnte folgendermaßen aussehen:

if (value('RG01') == 2) {
  question('AB01');
} elseif (value('RG01') == 3) {
  question('AB02');
} else {
  // Den else-Teil könnte man in diesem Fall weglassen,
  // hier passiert rein gar nichts.
}

Der Wert 1 für den Zufallsgenerator (RG01) würde in diesem Fall keine Frage anzeigen, da der Teilnehmer der Kontrollgruppe zugeordnet wurde. Wenn der Wert RG01=2 gezogen wurde, wird die Frage AB01 angezeigt und bei dem Wert RG01=3 die Frage AB02. Die Fragekennungen für den Zufallsgenerator und die zu zeigenden Fragen müssen Sie ihrem Fragebogen individuell anpassen.

Stimulus und Frage zusammen

Man kann auch Fragen und Stimuli gemeinsam randomisieren. Dies ist der Fall, wenn man abhängig vom Stimulus auch unterschiedliche Fragen abfragen möchte.

$zahl = value('RG01');
 
if ($zahl == 1) {
  text('stimulusA');
  question('AB01');
} elseif ($zahl == 2) {
  text('stimulusB');
  question('AB01');
} elseif ($zahl == 3) {
  text('stimulusC');
  question('AB02');
} elseif ($zahl == 4) {
  text('stimulusD');
  question('AB02');
}

In dem Beispiel wird zum Stimulus A eine andere Frage (AB01) angezeigt, als zu den anderen Stimuli.

Hinweis: Wenn die Frage zu den Stimuli immer gleich ist, muss man diese nicht extra im Code angeben. In diesem Fall genügt es, wenn man die Frage einfach unter dem Stimulus oder auf der nächsten Fragebogenseite, unabhängig vom Filter platziert.

Stimulus und Frage auf unterschiedlichen Seiten

Falls der Stimulus und die (jeweils zugehörige) Frage auf unterschiedlichen Seiten gezeigt werden sollen, wird auf beiden Seiten ein Filter eingebaut. Wenn die Zufallszahl einmal gezogen wurde, steht sie (im Beispiel als Variable RG01) auf allen folgenden Seiten zur Verfügung. Man braucht den Zufallsgenerator (oder die Urnen-Ziehung) also nur ein einziges Mal im Fragebogen zu platzieren, i.d.R. direkt vor dem ersten Filter.

// PHP-Code auf der Seite mit dem Stimulus
$zahl = value('RG01');
 
if ($zahl == 1) {
  text('stimulusA');
} elseif ($zahl == 2) {
  text('stimulusB');
} elseif ($zahl == 3) {
  text('stimulusC');
} elseif ($zahl == 4) {
  text('stimulusD');
}
// PHP-Code auf der Seite mit der Frage
$zahl = value('RG01');
 
if ($zahl == 1) {
  question('AB01');
} elseif ($zahl == 2) {
  question('AB01');
} elseif ($zahl == 3) {
  question('AB02');
} elseif ($zahl == 4) {
  question('AB02');
}

Hinweis: Diese Lösung ist natürlich nicht erforderlich, wenn unabhängig vom Stimulus immer dieselbe Frage angezeigt wird.

Tipp: Mit dieser Variable können zusammengehörige Stimuli (z.B. Seite 1 bis 3 eines Zeitungsartikels) auf mehrere Seiten verteilt werden.

Fragen auf verschiedenen Seiten

Wenn die Fragen auf unterschiedlichen Seiten im Fragebogen erscheinen sollen muss man an zwei Stellen filtern:

//Auf der 1. Seite platzieren
$zahl = value('RG01');  // Auslesen der gezogenen Zufallszahl aus RG01
 
// Die eine oder die andere Frage zeigen
if ($zahl == 1) {
  question('AB01');
} else {
  question('AB03');
}
//Auf der 2. Seite platzieren
$zahl = value('RG01');
if ($zahl == 1) {
  question('AB02');
} else {
  question('AB004');
}

Im Beispiel wird nun zufällig entweder zuerst Frage AB01 und dann später AB02 angezeigt – oder erst AB03 und dann AB04.

Hinweis: Auf diese Weise kann man auch verschiedene Befragungsgruppen erstellen, denen die selben Fragen nur in unterschiedlichen, aber festgelegten Reihenfolgen dargeboten werden sollen.

Randomisierung von Seiten

Wenn die Reihenfolge von Fragen komplexer variiert werden soll, können Filter – wie im obigen Beispiel – schnell unübersichtlich werden. In diesem Fall kann die PHP-Funktion setPageOrder() helfen. Mit dieser Funktion kann die Abfolge der Seiten im Fragebogen variiert werden.

$zahl = value('RG01');  // Zufallzahl wurde von RG01 gezogen
if ($zahl == 1) {
  setPageOrder('q1','q2','mainStart-mainEnd','q3');
} elseif ($zahl == 2) {
  setPageOrder('q1','mainStart-mainEnd','q2','q3');
} else {
  setPageOrder('q2','q1','mainStart-mainEnd','q3');
}

Weitere Erklärungen und Beispiele finden Sie in der Referenz zur Funktion setPageOrder().

de/create/randomization_php.1611495633.txt.gz · Zuletzt geändert: 24.01.2021 14:40 von sophia.schauer
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 4.0 International
Driven by DokuWiki