Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
de:create:randomization_php [17.01.2021 15:40] – [Stimulus: Bild] sophia.schauerde:create:randomization_php [24.01.2021 14:53] sophia.schauer
Zeile 5: Zeile 5:
 **Hinweis:** Wenn Sie nur einen Stimulus (Bild oder andere Mediendateien) randomisieren möchten, sollte die einfache Vorgangsweise, die unter [[de:create:randomization-einfaktoriell|]] beschrieben wird, ausreichen. **Hinweis:** Wenn Sie nur einen Stimulus (Bild oder andere Mediendateien) randomisieren möchten, sollte die einfache Vorgangsweise, die unter [[de:create:randomization-einfaktoriell|]] beschrieben wird, ausreichen.
  
-**Hinweis:** Wenn Sie nur einen Teil der zufällig Stimuli anzeigen möchten lesen Sie bitte das Kapitel [[de:create:randomization-within|]].+**Hinweis:** Wenn Sie nur einen Teil der zufälligen Stimuli anzeigen möchtenlesen Sie bitte das Kapitel [[de:create:randomization-within|]].
  
  
Zeile 39: Zeile 39:
 Für die Definition, welcher Gruppe nun welcher Stimulus präsentiert wird, braucht man einen PHP-Code für einen [[de:create:php-filters|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: Für die Definition, welcher Gruppe nun welcher Stimulus präsentiert wird, braucht man einen PHP-Code für einen [[de:create:php-filters|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:
  
-{{ :de:create:scr.randomisierung_php.png?400 |}}+{{:de:create:scr.zufallsgenerator_php.png?300|Der Zufallsgernerator wird über dem PHP-Code platziert}}
  
-Zur Einbindung eines Stimulus oder Treatments via [[de:create:php|PHP-Code]] in den Fragebogen gibt es verschiedene Möglichkeiten und auch für die verschiedenen Stimuli sieht der Code jeweils etwas anders aus. Im Weiteren folgen nun einige Beispiele für verschiedene Stimuli.+**Hinweis:** Nach dem Platzieren des Zufallsgenerators __und__ des PHP-Codes müssen die Stimuli __nicht__ mehr explizit auf der Fragebogenseite eingebunden werden!
  
-**Hinweis:** Wenn Ihr Stimulus ein Bild, eine Audiodatei oder ein Video ist, schauen Sie sich zunächst die Erklärung unter [[de:create:randomization-einfaktoriell|]] 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.+Zur Einbindung eines Stimulus oder Treatments via [[de:create:php|PHP-Code]] in den Fragebogen gibt es verschiedene Möglichkeiten und auch für die verschiedenen Stimuli sieht der Code jeweils etwas anders ausHier geht es weiter zu den einzelnen Stimuli:
  
-==== StimulusFrage ==== +  - [[de:create:randomization-text|Stimulus: Text]]\\ Hier wird Ihnen erklärtwie Sie mit Hilfe eines PHP-Codes nach dem Erstellen des Zufallsgenerators verschiedene Texte randomisieren können. 
-Wenn der Stimulus eine Frage istbenötigt man die PHP-Funktion [[de:create:functions:question|question()]] und [[de:create:functions:value|value()]]. Erstere wird benötigt, um zu definierenwelche Frage (AB01 oder AB02) angezeigt werden sollvalue() wird benötigtum den Wert des Zufallsgenerators auszulesen (=1,2 oder3?). Der Code könnte folgendermaßen aussehen:+  - [[de:create:randomization-media|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 [[de:create:randomization-einfaktoriell|]] an, um zu überprüfenob dieses Format für Ihre Zielsetzung bereits ausreichend ist. Außerdem steht auf dieser Seite, wie Sie Mediendateien abspeichern müssen. 
 +  - [[de:create:randomization-question|Stimulus: Frage]]\\ In manchen Fällen ist es notwendig, ganze Fragen zu randomisierenWie das umzusetzen istlesen Sie hier. 
 +  - [[de:create:randomization-page|Stimulus: Seite]]\\ Mit Hilfe der Funktion setPageOrder() können ganze Seiten randomisiert werden.
  
-<code php> 
-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. 
-} 
-</code> 
- 
-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: Text==== 
-Wenn der Stimulus ein Text ist, muss bei der Einbindung via [[de:create:php|PHP-Code]] die Funktion [[de:create:functions:text|text()]] verwendet werden. Diese Funktion bindet den HTML-Code als Textbaustein in eine Seite ein.  
- 
-Dafür legt man als erstes im **Fragenkatalog** als **Text** die Stimulus-Texte an. 
- 
-Der folgende PHP-Code würde in der Gruppe „Positive Fallbeispiele“ (Zufallsgeneratorwert RG01=2) den Text mit der Kennung „ST01“ anzeigen, in der Gruppe „Negative Fallbeispiele“ (Zufallsgeneratorwert RG01=3) den Text mit der Kennung „ST02“ und in der Kontrollgruppe (Zufallsgeneratorwert RG01=1) wieder gar nichts. 
- 
-<code php> 
-if (value('RG01') == 2) { 
-  text('ST01'); 
-} elseif (value('RG01') == 3) { 
-  text('ST02'); 
-} 
-</code> 
- 
-====Stimulus: Bild==== 
-Bilder können ebenso wie Texte mittels [[de:create:php|PHP-Code]] angezeigt werden. Dazu benötigt man den selben Code, wie bei den Texten und bindet das Bild via HTML-Text ein. Dazu muss man, wie oben beschrieben das Bild bereits in **Bilder und Mediendateien** gespeichert haben (siehe auch [[de:create:images|]] und [[de:create:media|Mediendateien im Fragebogen]]). 
- 
-**Tipp:** Diese Möglichkeit bietet durch den HTML-Text viel Raum zur Gestaltung und Bearbeitung für komplexere Darstellungen (siehe unten: Beispiel umfangreiche HTML-Codes). Für die einfache Einbindung bietet sich die Möglichkeit, die unter //[[de:create:randomization-einfaktoriell|Randomisierung einfaktoriell]]// beschrieben wird, eher an.  
- 
-<code php> 
-if (value('RG01') == 2) { 
-  text('ST01'); 
-} elseif (value('RG01') == 3) { 
-  text('ST02'); 
-} 
-</code> 
- 
-===Beispiel: Randomisieren von 4 Bildern=== 
- 
-Vor allem in Experimenten muss man die Teilnehmer häufig zufällig auf Versuchs- und Kontrollgruppen verteilen oder anders ausgedrückt: Man muss zufällig auswählen, welcher von mehreren Stimuli angezeigt wird. 
- 
-Das folgende Beispiel zeigt, wie man mittels [[php|PHP-Code]] eines von 4 Bildern randomisiert. Voraussetzung ist, dass -- wie oben beschrieben -- eine Zufallszahl zwischen 1 und 4 gezogen und in einer Variable gespeichert wird. Außerdem müssen die 4 Bilder vorab unter **Bilder und Mediendateien** in das Befragungsprojekt hochgeladen werden. Das Beispiel zeigt zufällig die Grafik "stimulus1.png", "stimulus2.png", "stimulus3.png" oder "stimulus4.png". Darunter könnte beispielsweise eine Frage zur Bewertung des Bildes angezeigt werden. 
- 
-<code php> 
-$zahl = value('RG01');  // Auslesen der gezogenen Zufallszahl 
- 
-// Grafik in Abhängigkeit von der Zahl anzeigen 
-// (dafür wird HTML-Code verwendet) 
-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>'); 
-} 
-</code> 
-    
-Anstatt mit ''html()'' einen Text oder eine Grafik anzuzeigen, kann man natürlich auch mit ''[[:de:create:functions:text|text()]]'' einen längeren Text zeigen, ein Video einbinden oder mit ''[[:de:create:functions:question|question()]]'' eine Frage anzeigen. 
- 
- 
-===Beispiel: Randomisierung von 4 Bildern mittels Platzhalter== 
- 
-Der folgende PHP-Code zeigt genau dieselben Bilder wie der obige PHP-Code im Beispiel, arbeitet aber nicht mit kompletten HTML-Code-Stückchen, sondern mit einem Platzhalter ''%dateiname%'' und der Funktion ''[[:de:create:functions:replace]]''. 
- 
-<code php> 
-$code = value('RG01');  // Auslesen der gezogenen Zufallszahl 
- 
-// Grafikdatei in Abhängigkeit von der Zufallszahl in einen Platzhalter schreiben 
-if ($code == 1) { 
-  replace('%dateiname%', 'stimulus1.png'); 
-} elseif ($code == 2) { 
-  replace('%dateiname%', 'stimulus2.png'); 
-} elseif ($code == 3) { 
-  replace('%dateiname%', 'stimulus3.png'); 
-} elseif ($code == 4) { 
-  replace('%dateiname%', 'stimulus4.png'); 
-} 
-// Den HTML-Code kann man direkt einbinden oder (hier nicht gezeigt) als Textbaustein 
-html('<p><img src="%dateiname%"></p>'); 
-</code> 
- 
-**Tipp:** Platzhalter sind vor allem dann hilfreich, wenn für die Einbindung des Stimulus mehr HTML-Code erforderlich ist, als hier exemplarisch gezeigt. 
- 
-**Tipp:** Die Bezeichnung der PHP-Variable (in den Beispielen ''$zahl'' und ''$code'') ist willkürlich gewählt. Mehr dazu s. [[https://www.soscisurvey.de/help/doku.php/de:create:variables#php-variablen|PHP-Variablen]]. 
- 
-===Beispiel: Umfangreiche HTML-Codes=== 
- 
-Falls Stimuli umfangreichen HTML-Code erfordern (z.B. Videos), wenn sich der HTML-Code zwischen den einzelnen Experimentalgruppen stark unterscheidet oder wenn man mit einem [[:de:create:multilang|mehrsprachigen Fragebogen]] arbeitet, werden vier Texte im Fragenkatalog angelegt (z.B. "RG02" bis "RG05", //Darstellung// jeweils HTML-Code) und abhängig von der Zufallsziehung eingebunden: 
- 
-<code php> 
-$code = value('RG01');  // Auslesen der gezogenen Zufallszahl 
- 
-// Text bzw. HTML-Code als Text anzeigen 
-if ($code == 1) { 
-  text('RG02'); 
-} elseif ($code == 2) { 
-  text('RG03'); 
-} elseif ($code == 3) { 
-  text('RG04'); 
-} elseif ($code == 4) { 
-  text('RG05'); 
-} 
-</code> 
- 
- 
- 
-====Stimulus: Video==== 
-Auch Videos können mittels einer text()-Funktion eingebettet werden. Dazu benötigt man den selben Code, wie bei den Texten und bindet das Video via HTML-Text ein. Dazu muss man, wie oben beschrieben das Video bereits in **Bilder und Mediendateien** gespeichert haben und in einem ([[de:create:texts|Text]]) angelegt haben. 
- 
-<code php> 
-if (value('RG01') == 2) { 
-  text('ST01'); 
-} elseif (value('RG01') == 3) { 
-  text('ST02'); 
-} 
-</code> 
- 
-====Stimulus: Audio==== 
-Auch Audios können wiederum mittels einer text()-Funktion eingebettet werden. Dazu benötigt man den selben Code, wie bei den Texten und bindet das Audio via [[de:create:php|PHP-Code]] auf der entsprechenden Fragebogenseite ein. In dem HTML-Text ist bereits angeben, wie das Audio angezeigt und abgespielt werden soll. Lesen Sie für eine genauere Erklärung unbedingt die Kapitel [[de:create:media|Audio-Dateien einbinden]] und [[de:create:texts|]] und speichern Sie wiederum die Audiodateien bereits unter **Bilder und Mediendateien**. 
- 
-Der PHP-Code zur Einbindung der Audiodateien auf der Fragenbogenseite könnte wie folgt aussehen und muss unter dem Zufallsgenerator unter **Fragebogen zusammenstellen** eingefügt werden. 
- 
-<code php> 
-if (value('RG01') == 2) { 
-  text('ST01'); 
-} elseif (value('RG01') == 3) { 
-  text('ST02'); 
-} 
-</code> 
- 
- 
-==== 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. 
- 
-<code php> 
-$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'); 
-} 
-</code> 
- 
-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 Seite 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. 
- 
-<code php> 
-// 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'); 
-} 
-</code> 
- 
-<code php> 
-// 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'); 
-} 
-</code> 
- 
-**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 auf mehrere Seiten verteilt werden. 
- 
-==== Randomisierung von Fragen ==== 
-V.a. in Methodenexperimenten werden ganze Fragen randomisiert -- auch das ist mit Filtern recht einfach umzusetzen. Das Vorgehen ist im Prinzip dasselbe wie bei der Randomisierung eines Stimulus: 
- 
-<code php> 
-$zahl = value('RG01'); 
- 
-if ($zahl == 1) { 
-  question('AB01'); 
-} elseif ($zahl == 2) { 
-  question('AB02'); 
-} 
-</code> 
- 
-==== Fragen auf verschiedenen Seiten ==== 
-Wenn die Fragen auf unterschiedlichen Seiten im Fragebogen erscheinen sollen muss man an zwei Stellen filtern: 
- 
-<code php> 
-//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'); 
-} 
-</code> 
- 
-<code php> 
-//Auf der 2. Seite platzieren 
-$zahl = value('RG01'); 
-if ($zahl == 1) { 
-  question('AB02'); 
-} else { 
-  question('AB004'); 
-} 
-</code> 
- 
-Im Beispiel wird nun zufällig entweder zuerst Frage AB01 und dann später AB02 angezeigt -- oder erst AB03 und dann AB04. 
- 
-====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 ''[[:de:create:functions:setpageorder|setPageOrder()]]'' helfen. Mit dieser Funktion kann die Abfolge der Seiten im Fragebogen variiert werden. 
- 
-<code php> 
-$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'); 
-} 
-</code> 
- 
-Weitere Erklärungen und Beispiele finden Sie in der Referenz zur Funktion ''[[:de:create:functions:setpageorder|setPageOrder()]]''. 
  
 
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