Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:create:questions:random [30.11.2016 15:41] leinerde:create:questions:random [12.12.2021 21:24] (aktuell) – alte Version wiederhergestellt (28.06.2021 18:39) admin
Zeile 1: Zeile 1:
 ====== Zufallsgenerator ====== ====== Zufallsgenerator ======
  
-Der Zufallsgenerator ist ein funktionaler Baustein für den Fragebogen. Das Element zieht aus einer vorgegebenen Liste von Elementen (Zetteleines und speichert dessen Wert in eine Variable. Der gezogene Wert kann mittels ''[[:de:create:functions:value]]'' ausgelesen und in einem [[:de:create:filters|Filter]] verwendet werden, um Inhalte des Fragebogens zufällig zu variieren. So lassen sich Teilnehmer etwa zufällig zu Experimentalgruppen zuordnen.+**Hinweis:** Diese Seite erklärt ausführlich, wie Sie einen Zufallsgenerator erstellen und wann ein solcher eingesetzt werden kann. Konkrete Beispiele finden Sie dann in den Anleitungen zu den einzelnen Anwendungen (siehe unten).
  
-Der Zufallsgenerator ist eine Weiterentwicklung der [[:de:create:random_urns|Urnen-Funktion]] und sorgt (wie die Urne) standardmäßig dafür, dass alle Zettel gleich häufig gezogen werden (Option //Art der Ziehung//). Das ist vor allem dann wichtigwenn die Experimentalgruppen gleich groß sein sollenBei einer uneingeschränkten Zufallsauswahl hingegen kann es (gerade bei überschaubaren Stichprobenpassieren, dass die Gruppengrößen massiv abweichen.+Der Zufallsgenerator ist ein funktionaler Baustein für den Fragebogen. Das Element zieht aus einer vorgegebenen Liste von Elementen (Zettel) eines und speichert dessen Wert in eine Variable. Der gezogene Wert kann mittels ''[[:de:create:functions:value]]'' ausgelesen und in einem [[:de:create:filters|Filter]] verwendet werden, um Inhalte des Fragebogens zufällig zu variierenSo lassen sich Teilnehmer etwa zufällig zu Experimentalgruppen zuordnen ([[de:create:randomization|]]).
  
-Die ausführlichen Beispiele zur Verwendung von Filtern im Rahmen experimenteller Stimuli im Kapitel [[:de:create:randomization]] sind auch auf den Zufallsgenerator übertragbar. Anstatt des Befehls ''[[:de:create:functions:urndraw]]'' ist das Zufallsgenerator-Element auf der Fragebogen-Seite zu platzierenDie gezogenen Zahl lässt sich dann (wie in der Anleitung zu Urnenüber ''[[:de:create:functions:value]]'' ausgelesen.+Der Zufallsgenerator sorgt standardmäßig dafür, dass alle Zettel gleich häufig gezogen werden (Option //Art der Ziehung//)Das ist vor allem dann wichtig, wenn die Experimentalgruppen gleich groß sein sollen. Bei einer uneingeschränkten Zufallsauswahl hingegen kann es (gerade bei überschaubaren Stichprobenpassieren, dass die Gruppengrößen massiv abweichen.
  
-**Tipp:** Sollte die zufällige Variation nicht wie gewünscht funktionieren, liefern die Debug-Informationen im Fragebogen in aller Regel schnell eine Antwort. Mehr dazu s. [[:de:create:filter-solving]].+**Tipp:** Sollte die zufällige Variation nicht wie gewünscht funktionieren, liefern die Debug-Informationen im Fragebogen in aller Regel schnell eine Antwort. Mehr dazu s. [[:de:create:filter-solving]] und im [[https://cast.itunes.uni-muenchen.de/clips/H2qJPn0rX8/vod/online.html|Erklärvideo Experimental Randomization (engl)]] am Ende.
  
- +Es gibt verschiedene Fälle, in denen ein Zufallsgenerator eingesetzt werden kannEinige Funktionen, die der Zufallsgenerator dabei ausführen kann: 
-===== Unterschiede ggü. der Urnen-Funktion ===== +  * Für den gezogenen Zettel sind zwei Werte verfügbar: Erstens der numerische Code und zweitens der eingetragene Text für den Zettel -- das kann z.B. der Dateiname eines Bildes sein (z.B. [[de:create:randomization-einfaktoriell|]]).
- +
-  * Für den gezogenen Zettel sind zwei Werte verfügbar: Erstens der numerische Code und zweitens der eingetragene Text für den Zettel -- das kann z.B. der Dateiname eines Bildes sein (sBeispiel unten).+
   * Der Zufallsgenerator kann innerhalb eines Interviews mehrere Zettel ziehen (Option //Anzahl Zettel pro Interview//) und dabei sicherstellen, dass derselbe Zettel nicht mehrfach gezogen wird.   * Der Zufallsgenerator kann innerhalb eines Interviews mehrere Zettel ziehen (Option //Anzahl Zettel pro Interview//) und dabei sicherstellen, dass derselbe Zettel nicht mehrfach gezogen wird.
-  * Der Zufallsgenerator liefert pro Zettel nur einen Wert (und dessen Beschriftung). Kombinationen bei bei der Urnen sind nur über einen Umweg möglich: Die Kombination wird als Beschriftung für den Zettel hinterlegt und nach der Ziehung mittels [[http://php.net/manual/de/function.explode.php|explode()]] in einzelne Werte getrennt (s. Beispiel unten).+  * Der Zufallsgenerator liefert pro Zettel nur einen Wert (und dessen Beschriftung). Aber auch Kombinationen können mittels Zufallsgenerator umgesetzt werden (siehe [[de:create:randomization-within|]]).
  
  
-===== Beispiel: Bildstimulus variieren =====+===== Erstellung eines Zufallsgenerators=====
  
-In diesem Beispiel wird die Verwendung in einem Experiment mit 3 Experimentalgruppen (jeweils ein Bildstimulus) und einer Kontrollgruppe (kein Bildstimulusbeschrieben.+Hier wird allgemein einmal erklärt, wie Sie einen Zufallsgenerator anlegen können. Wie dieser Zufallsgenerator dann im Speziellen eingesetzt werden muss, wird dann in den einzelnen Kapiteln (siehe Links untengenauer erklärt.
  
-==== Vorbereitungen ====+====Schritt 1: Zufallsgenerator anlegen====
  
-  * Laden Sie die 3 Bildstimuli unter **Bilder und Mediendateien** hoch und notieren Sie die Dateinamen. Vorsicht: Die Groß- und Kleinschreibung ist wichtig (''Datei.jpg'' ist etwas anderes als ''datei.JPG''). +Der Zufallsgenerator als funktionaler Baustein wird als eine neue Frage in einer Rubrik angelegt ([[de:create:basics|]]). Wählen Sie bei der Erstellung der Frage den Fragentyp //Zufallsgenerator//. Sie können hierfür einfach die ersten Buchstaben des Fragentyps eingeben, dann erscheint der Fragentyp in der AuswahllisteGeben Sie der Frage noch eine Beschreibung und eine Fragekennung und klicken Sie auf speichern ({{:button.save.png?nolink|Speichern}}).
-  * Legen Sie eine Frage vom Typ "Zufallsgenerator" an (im folgenden wird angenommen, dass sie die Kennung ZG01 hat). In der Frage tragen Sie als //Zettel (Inhalte)// folgendes einAls Dateinamen verwenden Sie selbstverständlich nicht "stimulusA.jpg" u.s.w., sondern die Dateinamen Ihrer Bilder.+
  
-<code> +{{:de:create:questions:scr.random.create.png?nolink|Zufallsgenerator anlegen}}
-1 = stimulusA.jpg +
-2 = stimulusB.jpg +
-3 = stimulusC.jpg +
-4 = Kontrollgruppe +
-</code>+
  
 +Die Fragekennung benötigen Sie später im PHP-Code.
  
-==== Anwendung ==== 
  
-Unter **Fragebogen zusammenstellen** ziehen Sie den Zufallsgenerator auf die Seite, wo das Bild erscheinen soll. Darunter (!) platzieren Sie folgenden PHP-Code (s. auch [[:de:create:php]]):+====Schritt 2Inhalte eintragen====
  
-<code php> +Im nächsten Schritt geben Sie die //Inhalte (Zettel)// ein, aus welchen Sie später ziehen möchten.
-// Auslesen der numerischen Codes (1 bis 4) +
-$code = value('ZG01'); +
-// Die Kontrollgruppe muss anders behandelt werden +
-if ($code == 4) { +
-  // Kontrollgruppe - nichts anzeigen +
-} else { +
-  // Die Beschriftung ist als Wertelabel hinterlegt - im Beispiel ist das der Bildname +
-  $bild = value('ZG01', 'label'); +
-  // Das HTML-Tag <img> zeigt ein Bild ander Dateiname wird mit src angegeben +
-  html(' +
-    <div style="margin: 3em; text-align: center"> +
-      <img src="'.$bild.'" alt="" /> +
-    </div> +
-  '); +
-+
-</code>+
  
 +Wenn Sie zum Beispiel die Teilnehmer zufällig in verschiedene Gruppen einteilen möchten (z.B. bei der [[de:create:randomization]]), geben Sie einfach die Gruppenbezeichnungen ein.
 +  Beispiel:
 +  Gruppe 1
 +  Gruppe 2
 +  Gruppe 3
 +Durch das Speichern der Frage teilt das System nun den einzelnen Bezeichnungen automatisch Werte (beginnend mit 1) zu:
 +  Beispiel:
 +  1= Gruppe 1
 +  2= Gruppe 2
 +  3= Kontrollgruppe
  
-==== Ergänzung 1 ====+Wenn nun der Zufallsgenerator im Fragebogen platziert wird, teilt dieser dem Teilnehmer einen zufälligen Wert (Zettel) zu. Diese Werte können später ausgelesen werden und in Filtern weiterverwendet werden.
  
-Nicht jede experimentelle Variation ist mit der Anzeige eines einzelnen Bildes erledigt. Der folgende PHP-Code zeigt, wie an anderer Stelle zusätzlich noch ein weiteres Bild variiert wird. Die Variation erfolgt parallel zum ersten Bild -- wer also oben Bild 1a zu sehen bekam, der sieht an dieser Stelle nun Bild 1b.+====Schritt 3: Weitere Einstellungen====
  
-Diesmal wird der Dateiname für das Bild nicht direkt im Zufallsgenerator hinterlegt (wie oben), sondern in einem Array ([[:de:create:array]]), welches jeder Experimentalgruppe (1 bis 4) mittels ''%%=>%%'' einen Dateinamen zuweist.+In manchen Fällen ist es notwendig, die Einstellungen im Zufallsgenerator noch anzupassen
  
-<code php> +  * //Anzahl Zettel pro Interview//\\ Wie viele Zettel müssen pro Interview gezogen werden ? In manchen Fällen ist es notwendig, mehrere Zettel zu ziehen, beispielsweise um 20 Bilder aus einem Pool von 300 Bildern zu präsentieren. Geben Sie den entsprechenden Wert unter //Anzahl Zettel pro Interview// ein. 
-// Auslesen der numerischen Codes (1 bis 4) +  //Art der Ziehung//\\ Machen Sie sich vorab Gedankenwelche Ziehung Sie benötigen. Standardmäßig ist eine Gleichverteilung vorgesehen. Dies ist für die meisten Fälle sinnvoll. 
-$code = value('ZG01'); +    * Die gleichverteilte Ziehung kann bei einer hohen Abbrecherquote zu ungleichen Gruppen im bereinigten Datensatz führenEs ist daher sinnvollden Zufallsgenerator weiter hinten im Fragebogen zu platzieren, z.B. dort, wo der Stimulus präsentiert wird. Zur Korrektur siehe [[#ziehungen_nachjustieren|Ziehung nachjustieren]]. 
-// Die Kontrollgruppe muss (auch hier) anders behandelt werden +    * **Wichtig:** Wählen Sie die Option "Gleichverteilung __in abgeschlossenen Fragebögen__" nur dann, wenn die Erhebung sich über einen längeren Erhebungszeitraum erstreckt und der Fragebogen in kurzer Zeit abgeschlossen werden kann (FINISHED=1)Wenn viele Teilnehmer:innen in kurzer Zeit (gemessen an der Zeit zwischen Zufallsziehung und Abschluss eines Interviews) teilnehmenkann dies sonst zu Ungleichverteilungen führen. Wählen Sie dann lieber die normale gleichverteilte Ziehung. 
-if ($code == 4) { +    * Bei der zufälligen Ziehung mit Zurücklegen müssen Sie vor allem in kleinen Stichproben (weniger als ca250 pro Untersuchunsgruppedamit rechnen, dass sich die Befragten im Rahmen des statistischen Auswahlfehlers ungleichmäßig auf die Untersuchungsgruppen verteilen. 
-  // Kontrollgruppe - nichts anzeigen +  //Inhalte anzeigen//\\ es ist auch möglich, bereits Dateinamen als Zettel anzugeben und mittels //Inhalte anzeigen// die zugehörigen Bilder ohne weiteren PHP-Code auf der Fragebogenseite einzubinden. Mehr dazu unter [[de:create:randomization-einfaktoriell]].
-} else { +
-  // Arraywelches für jede Gruppe ein Bild hinterlegt +
-  $bilder = array( +
-    1 => 'stimulusA2.jpg'+
-    => 'stimulusB2.jpg'+
-    3 => 'stimulusC2.jpg' +
-  ); +
-  // Mit eckigen Klammern wird ein Element aus dem Array gelesen +
-  $bild = $bilder[$code]; +
-  // Anzeige des Bildes wie oben +
-  html(' +
-    <div style="margin3em; text-align: center"> +
-      <img src="'.$bild.'" alt="" /> +
-    </div> +
-  '); +
-+
-</code>+
  
-**Hinweis:** Dieser PHP-Code funktioniert nur, wenn im selben Interview vorher schon die Seite mit der Zufallsgenerator-Frage aufgerufen wurdeFalls Sie das Interview zum Testen direkt auf der Seite mit dem PHP-Code (aber ohne Zufallsgenerator, der ja schon weiter vorne steht) startenerhalten Sie eine Fehlermeldung.+====Schritt 4: Platzieren des Zufallsgenerators==== 
 +Je nach Weiterverwendung der Werte des Zufallsgenerators muss dieser passend im Fragebogen platziert werden. Dazu muss die Frage beim **Fragebogen zusammenstellen** auf eine Seite gezogen werdenIn jedem Fall muss der Wert __vor__ einem PHP-Code platziert werdenbei dem der Wert ausgelesen werden soll. Wenn der Wert des Zufallsgenerators einmal gezogen wurdekann dieser Wert im Fragebogen jederzeit wieder ausgelesen werden.
  
 +=====Verwendung des Zufallsgenerators=====
  
-==== Ergänzung 2 ====+Der Zufallsgenerator wird als Grundlage für einige dynamische Inhalte in SoSci Survey benötigt. Dazu gehören: 
 +  * [[de:create:randomization|]] 
 +  * [[de:create:rotation|]] 
 +  * [[de:create:random_questionnaire]] 
 +  * [[de:create:vouchers]]
  
-Anstatt eines Bildes kann natürlich auch die angezeigte Frage variiert oder ein Textbaustein eingebunden werden. Der folgende PHP-Code zeigt einen individuellen Textbaustein an (anzulegen unter **Textbausteine u. Beschriftungen** -- und in den Gruppen 1 und 2 die Frage ''AB01'', in den anderen Gruppen die Frage ''BB01''. 
  
-<code php> +===== Ziehungen nachjustieren =====
-// Auslesen der numerischen Codes (1 bis 4) +
-$code value('ZG01'); +
-// Textbaustein variieren +
-if ($code == 1) { +
-  text('text EG1'); +
-} elseif ($code == 2) { +
-  text('text EG2'); +
-} elseif ($code == 3) { +
-  text('text EG3'); +
-} elseif ($code == 4) { +
-  text('text KG'); +
-+
-// Frage variieren +
-if (($code == 1) or ($code == 2)) { +
-  question('AB01'); +
-} else { +
-  question('BB01'); +
-+
-</code>+
  
-**Tipp:** Sehen Sie sich neben ''[[:de:create:functions:text]]'' und ''[[:de:create:functions:question]]'' auch die Befehle ''[[:de:create:functions:replace]]'' und ''[[:de:create:functions:setpageorder]]'' an.+Arbeitet man mit vielen Experimentalgruppen, kann es sein, dass die eigentlich erfolgreiche Gleichverteilung nach der Bereinigung verloren geht. Gerade wenn die Fallzahl pro Gruppe sehr klein ist, schlagen die Fälle zu Buche, die bei der Bereinigung (z.B. aufgrund des Manipulation Check) gelöscht werden müssen. Dann kann es sein, dass es nötig ist, den Zufallsgenerator während der Erhebung geringfügig anzupassen.
  
 +**Warnung:** Das Nachjustieren der Zufallsauswahl sollte __nur__ dann erfolgen, wenn die Teilnehmer kontinuierlich und aus derselben Grundgesamtheit rekrutiert werden. Sonst besteht die Gefahr einer Konfundierung: 
 +Man stelle sich ein Experiment mit 4 Gruppen vor, bei dem die Teilnehmer alle an einem bestimmten Tag eingeladen werden. Nachdem 2/3 der Teilnehmer den Fragebogen ausgefüllt haben, bemerkt man, dass in Gruppe 1 überdurchschnittlich viele Fälle bereinigt werden müssen. Also werden ab sofort mehr Teilnehmer der Gruppe 1 zugeteilt. Nun liegt eine Konfundierung vor, denn Teilnehmer, die auf eine Einladung später reagieren, können sich signifikant von Teilnehmern unterscheiden, die schnell reagieren. Also würden sich die Teilnehmer in Gruppe 1 nun a-priori von Teilnehmern in anderen Gruppen unterscheiden -- und damit wären Unterschiede in den abhängigen Variablen nicht mehr alleine auf den experimentellen Stimulus zurückzuführen.
  
-===== BeispielMehrere Bilder anzeigen =====+**Tipp:** In einer Situation, in der man die Zufallsziehung nicht nachträglich anpassen kann, kann man eine [[:de:create:random_urns|Urne]] verwenden und in ''urnDraw()'' ein manuelles Ablegen der Zettel konfigurieren. Das manuelle Ablegen mittels ''[[:de:create:functions:urnputaway]]'' erfolgt nur dann, wenn mit einem [[:de:create:filters|Filter]] überprüft wurde, dass der Fall auch brauchbar ist. Nachteile: Das ist vergleichsweise aufwändig und gerade zu Beginn der Erhebung kann es zu deutlich ungleichen Gruppengrößen kommen.
  
-In diesem Beispiel geht es um 300 Bilder, die von Teilnehmern bewertet werden sollen. Dabei soll jeder Teilnehmer 20 unterschiedliche Bilder bewerten -- jedes Bild auf einer eigenen Seite.+Sind die Bedingungen für das Nachjustieren (soben) erfüllt, so ist das Vorgehen wie folgt:
  
 +  - Der vorläufige Datensatz wird bereinigt (Abbrecher, fehlende Antworten, Manipulation Check, keine Zustimmung zur Verwendung der Angaben, ...).
 +  - Es wird eine Häufigkeitstabelle über die Variable des Zufallsgenerators erstellt.
 +  - Diese Häufigkeitstabelle wird in ein Format ''Code: Anzahl'' umgewandelt (s. unten).
 +  - Diese Liste wird im Zufallsgenerator in das Feld //Bisher gezogen// eingetragen -- dabei spielt die Reihenfolge der Werte keine Rolle, wichtig ist nur, dass jeweils Code und Anzahl enthalten sind.
 +  - Nach dem Speichern wird die Liste automatisch sortiert und weitere Zufallsziehungen erfolgen so, dass bisherige Ungleichheiten ausgeglichen werden.
  
-==== Vorbereitung ==== +Die Liste der Codes und verwertbaren Fälle kann z.B. wie folgt aussehen:
- +
-  * Laden Sie alle Bilder unter **Bilder und Mediendateien** hoch. +
-  * Legen Sie eine Frage vom Typ "Zufallsgenerator" an (im folgenden wird angenommen, dass sie die Kennung ZG03 hat). +
-    * In der Frage tragen Sie als //Zettel (Inhalte)// die Dateinamen aller Bilder ein. Ein Dateiname pro Zeile. Zahlen brauchen Sie nicht voranzustellen, diese werden nach dem Speichern automatisch ergänzt. +
-    * Für die Option //Anzahl Zettel pro Interview// tragen Sie die Anzahl der Bilder ein, die gezeigt werden sollen, also in diesem Beispiel 20. +
-  * Legen Sie für die Bewertungen 20 Fragen an, Kennungen ''AB01'' bis ''AB20'' -- die Funktion "Frage duplizieren" oben über einer zum Bearbeiten geöffneten Frage spart hier viel Zeit. Falls es nur eine Bewertung pro Bild ist, können Sie auch eine Frage mit 20 Items anlegen. +
- +
- +
-==== Anwendung ==== +
- +
-Legen Sie unter **Fragebogen zusammenstellen** eine (!) Seite für die Anzeige der Bilder und ggf. zugehöriger Fragen an. Auf dieser Seite platzieren Sie den Zufallsgenerator und darunter folgenden PHP-Code (s. auch [[:de:create:php]]). Der Befehl ''[[:de:create:functions:looppage]]'' sorgt dafür, dass dieselbe Seite mehrfach mit unterschiedlichem Inhalt angezeigt wird. Der Befehl ''[[http://php.net/manual/de/function.sprintf.php|sprintf()]]'' formatiert eine Zahl -- im PHP-Code wird eine zweistellige Zahl mit führender 0 erstellt (also z.B. wird 3 zu "03"). +
- +
-<code php> +
-// loopPage(20) liefert eine Zahl von 0 bis 19 (eins mehr bei jeder Wiederholung) +
-$i = loopPage(20);  // Hier die Zahl der zu zeigenden Bilder eintragen +
-// Das ausgewählte Bild anzeigen +
-$varID = 'ZG03x'.sprintf('%02d', $i + 1);  // Die Variablennamen lauten ZG03x01 bis ZG03x20 +
-$img = value($varID, 'label'); +
-// Das HTML-Tag <img> zeigt ein Bild an, der Dateiname wird mit src angegeben +
-html(' +
-  <div style="margin: 3em; text-align: center"> +
-    <img src="'.$img.'" alt="" /> +
-  </div> +
-'); +
-// Die passende Frage-Kennung erstellen und die Frage mittels question() anzeigen +
-question(id('AB', $i + 1)); // Frage-Kennungen AB01 bis AB20 +
-</code> +
- +
-Falls Sie nicht 20 Fragen (''AB01'' bis ''AB20''), sondern nur eine Frage AB01 mit 20 Items erstellt haben, ersetzen Sie die letzten 3 Zeilen wie folgt. Das +1 hinter der Variable ''$i'' ist erforderlich, weil ''loopPage()'' bei 0 zu zählen beginnt und nicht bei 1. +
- +
-<code php> +
-// Das passende Item aus der Frage mittels question() anzeigen +
-question('AB01', $i+1); +
-</code> +
- +
- +
-===== BeispielMehrere Parteien bewerten ===== +
- +
-Im folgenden Beispiel sollen die Teilnehmer unterschiedliche politische Parteien hinsichtlich einer Vielzahl von Kriterien beurteilen. Insgesamt sollten 6 Parteien bewertet werden -- allerdings soll jeder Teilnehmer nur 2 zufällig ausgewählte Parteien vorgelegt bekommen. +
- +
-==== Variante 1 ==== +
- +
-Diese Variante speichert die Antworten zur ersten gezogenen Partei immer in die gleichern Variablen. Wenn Sie pro Partei z.B. 20 Variablen verwenden, hat Ihr Datensatz also 40 Variablen für die Partei-Bewertungen. Das ist übersichtlich, macht die Auswertung aber ein wenig schwieriger, weil die Antworten zu den Grünen mal im Variablenset ''P1xx'' und mal im Set ''P2xx'' stehen. Verwenden Sie diese Variante, wenn Sie (a) viele Gegenstände zu bewerten haben und (b) mit Datensätzen in der Auswertung gut umgehen können. +
- +
-  * Legen Sie im Fragebogen eine Rubrik (z.B. ''P1'') mit allen Fragen an, welche zu einer Partei gestellt werden sollen. Anstatt des Parteinamens tragen Sie jeweils den [[:de:create:placeholders|Platzhalter]] ''%partei%'' ein. +
-  * Erstellen Sie eine Kopie der Rubrik, indem Sie die Rubrik erst als XML-Datei herunterladen (Pfeil-nach-unten Symbol oben in der Funktionsleiste über der Frage) und anschließend diese XML-Datei unter //Neue Rubrik// importieren. Im Beispiel wird angenommen, dass die Kopie die Kennung ''P2'' bekommt. +
-  * Erstellen Sie den Fragebogen unter **Fragebogen zusammenstellen** und platzieren Sie die Fragen aus ''P1'' und ''P2'' an den gewünschten Stellen. Im Beispiel wird angenommen, dass erst alle Fragen aus ''P1'' und dann alle Fragen aus ''P2'' gestellt werden. Wenn die Fragen gemischt werden sollen, müssten unterschiedliche Platzhalter (z.B. ''%partei1%'' und ''%partei2%'') in den Fragen und Items verwendet werden. +
-  * Legen Sie eine Frage vom Typ "Zufallsgenerator" an (im folgenden wird angenommen, dass sie die Kennung ZG04 hat). In der Frage tragen Sie folgende //Zettel (Inhalte)// ein und bei //Anzahl Zettel pro Interview// den Wert 2.+
  
 <code> <code>
-= CDU/CSU +111111: 2 
-= SPD +111211: 
-3 = Die Grünen +111311: 
-4 = Die Linke +111411: 2 
-5 = Piraten +112111: 1 
-6 = AfD+112211: 2 
 +112311: 2 
 +112411: 2 
 +u.s.w.
 </code> </code>
  
-Platzieren Sie den Zufallsgenerator unter **Fragebogen zusammenstellen** auf der ersten Seite mit einer ''P1''-Frage (oder vorher). Darunter platzieren Sie folgenden PHP-Code:+In Excel oder OpenOffice Calc erstellt man eine solche Liste, indem man die zuvor erstellte Häufigkeitstabelle (mit Codes, nicht Beschriftungen) mit folgendem Befehl zusammenfasst (wenn in Spalte A die Codes stehen und in Spalte B die Häufigkeiten):
  
-<code php+<code excel
-$name value('ZG04x01', 'label') // Name der Partei (CDU/CSU bis AfD) +=VERKETTEN(A1": "; B1)
-replace('%partei%', $name);+
 </code> </code>
 +    
 +In GNU R kann man Häufigkeitstabelle und Liste wie folgt ausgeben lassen (wenn die Variable des Zufallsgenerators z.B. RG01 heißt):
  
-Von dort an wird in jeder Frage der Platzhalter ''%partei%'' durch den gezogenen Namen ersetzt. Der numerische Code der gezogenen Partei kann ggf. über ''$code = value('ZG04x01');'' ausgelesen werden -- etwa um einen Textbaustein mit dem Partei-Logo einzubinden (s. weiter oben). +<code r
- +tmp table(data$RG01
-Auf der ersten Seite mit einer ''P2''-Frage platzieren Sie entsprechend folgenden PHP-Code: +cat(paste(paste(names(tmp)tmp, sep=": "), collapse="\n"))
- +
-<code php+
-$name value('ZG04x02', 'label'); +
-replace('%partei%'$name);+
 </code> </code>
  
-Falls Sie die Fragen zu den beiden Parteien mischen möchten und daher in den Fragen und Items die Platzhalter ''%partei1%'' und ''%partei2%'' verwendet haben, platzieren Sie unter dem Zufallsgenerator einfach folgenden PHP-Code: 
  
-<code php> 
-$name1 = value('ZG04x01', 'label'); 
-replace('%partei1%', $name1); 
-$name2 = value('ZG04x02', 'label'); 
-replace('%partei2%', $name1); 
-</code> 
  
  
-==== Variante 2 ==== 
- 
-Ebenfalls möglich ist, dass Sie für jede Partei eigene Fragen anlegen. Wenn Sie pro Partei 20 Variablen abfragen, macht das im Datensatz immerhin 120 Variablen -- dafür werden die Bewertungen einer Partei aber immer in denselben Variablen gespeichert. Das Anlegen so vieler Fragen ist natürlich aufwändiger (v.a. wenn im Pretest noch Änderungsbedarf auftaucht) -- aber die Auswertung ist deutlich einfacher. 
- 
-  * Legen Sie im Fragebogen eine Rubrik (z.B. ''P1'') mit allen Fragen an, welche zu Ihrer ersten Partei gestellt werden sollen. 
-    * In dieser Variante können Sie den Namen der Partei direkt in die Frage eintragen (und dann in jeder Kopie manuell ändern) oder 
-    * Sie können anstatt des Parteinamens auch den [[:de:create:placeholders|Platzhalter]] ''%partei%'' eintragen und zu Beginn des jeweiligen Frage-Blocks den Namen mittels ''[[:de:create:functions:replace]]'' einstellen. Das spart Arbeit. 
-  * Erstellen Sie 5 Kopien der Rubrik, indem Sie die Rubrik erst als XML-Datei herunterladen (Pfeil-nach-unten Symbol oben in der Funktionsleiste über der Frage) und anschließend diese XML-Datei unter //Neue Rubrik// mehrfach importieren. Im Beispiel wird angenommen, dass die Kopien die Kennungen ''P2'' bis ''P6'' bekommen. 
-  * Legen Sie eine Frage vom Typ "Zufallsgenerator" an (im folgenden wird angenommen, dass sie die Kennung ZG04 hat). In der Frage tragen Sie folgende //Zettel (Inhalte)// ein und bei //Anzahl Zettel pro Interview// den Wert 2. 
- 
-<code> 
-1 = CDU/CSU 
-2 = SPD 
-3 = Die Grünen 
-4 = Die Linke 
-5 = Piraten 
-6 = AfD 
-</code> 
- 
-Platzieren Sie den Zufallsgenerator unter **Fragebogen zusammenstellen** auf oder vor der Seite mit der ersten Partei-Frage.  
- 
-Falls Sie mit dem Platzhalter ''%partei%'' arbeiten, müssen Sie zu Beginn der beiden Blöcke folgenden PHP-Code platzieren: 
- 
-<code php> 
-$name = value('ZG04x01', 'label');  // Beim zweiten Block dann mit ZG04x02 
-replace('%partei%', $name); 
-</code> 
- 
-Die Fragen haben nun also die Kennungen ''P101'' für die erste Frage zur ersten Partei (CDU/CSU), ''P201'' für die erste Frage zur zweiten Partei (SPD) u.s.w. Nun gibt es zwei Möglichkeiten, die jeweils gewünschte Frage anzuzeigen: Sie können einen IF-Filter verwenden (s. auch [[:de:create:filters]]) oder die Kennung "zusammenbauen". Das Zusammenbauen ist deutlich kompakter. Falls die Frage-Kennungen nicht perfekt parallel sind (z.B. weil für eine Partei eine zusätzliche Frage gezeigt werden soll), funktioniert an dieser Stelle nur ein Filter. 
- 
-Den folgenden PHP-Code platzieren jeweils dort, wo die entsprechende Frage gestellt werden soll. Wenn Sie also 9 Fragen pro Partei haben, platzieren Sie den Code 9-mal im Block für die erste Partei und 9-mal im Block für die zweite Partei. Im zweiten Block muss ''ZU04x01'' natürlich gegegen ''ZU04x02'' ausgetauscht werden. Die Frage-Kennungen müssen in jedem PHP-Code angepasst werden. 
- 
-=== PHP-Code mit Zusammenbauen === 
- 
-<code php> 
-$code = value('ZG04x01'); 
-$kennung = 'P'.$code.'01';  // Der Punkt (.) verbindet Strings (Texte) 
-question($kennung); 
-</code> 
- 
-=== PHP-Code mit Filter === 
- 
-<code php> 
-$code = value('ZG04x01'); 
-if ($code == 1) { 
-  question('P101'); 
-} elseif ($code == 2) { 
-  question('P201'); 
-} elseif ($code == 3) { 
-  question('P301'); 
-} elseif ($code == 4) { 
-  question('P401'); 
-} elseif ($code == 5) { 
-  question('P501'); 
-} elseif ($code == 6) { 
-  question('P601'); 
-} 
-</code> 
- 
-==== Variante 3 ==== 
- 
-Prinzipiell besteht auch die Möglichkeit, dass Sie alle Fragen zu allen Parteien im Fragebogen platzieren, den Seiten Kennungen vergeben (s. unten, z.B. "P1Begin", "P1End", "P2Begin", "P2End" u.s.w.) und dann mit ''[[:de:create:functions:setpageorder]]'' arbeiten, um die passenden Seiten-Blöcke anzuzeigen. 
- 
-Diese Variante ist anfälliger gegen Fehler (z.B. dass man irgendwo im Fragebogen eine Frage vergisst) und macht den Fragebogen sehr unübersichtlich. Der Befehl ''[[:de:create:functions:setpageorder]]'' ist durchaus sinnvoll, um die Reihenfolge von Frageblöcken zu variieren -- nur für die Auswahl von Stimuli zur Anzeige bzw. für das Überspringen von Seiten gibt es i.d.R. bessere Lösungen. 
- 
-Aufgrund des begrenzten Nutzend von ''setPageOrder()'' für die vorliegende Problematik, wird hier nur knapp PHP-Code gezeigt. Dieser wird auf der letzten Seite eines allgemeinen Teils platziert. Der Code zeigt die beiden Partei-Blöcke getrennt von einem Zwischenteil ("middleBegin" bis "middleEnd") an und fährt danach auf der Seite mit der Kennung "demografie" fort. Vor dem PHP-Code ist wieder der oben beschriebene Zufallsgenerator zu platzieren. 
- 
-<code php> 
-$seiten = array(); 
-// Numerischer Code der ersten Partei 
-$code1 = value('ZG01x01'); 
-// Die passenden Seiten in das Array schreiben 
-if ($code1 == 1) { 
-  $seiten[] = 'P1Begin-P1End'; 
-} elseif ($code1 == 2) { 
-  $seiten[] = 'P2Begin-P2End'; 
-} elseif ($code1 == 3) { 
-  $seiten[] = 'P3Begin-P3End'; 
-} elseif ($code1 == 4) { 
-  $seiten[] = 'P4Begin-P4End'; 
-} elseif ($code1 == 5) { 
-  $seiten[] = 'P5Begin-P5End'; 
-} elseif ($code1 == 6) { 
-  $seiten[] = 'P6Begin-P6End'; 
-} 
-// Seiten für den Zwischenteil ergänzen 
-$seiten[] = 'middleBegin-middleEnd'; 
-// Numerischer Code der zweiten Partei 
-$code2 = value('ZG01x02'); 
-// Seiten für die zweite Partei in das Array schreiben 
-if ($code2 == 1) { 
-  $seiten[] = 'P1Begin-P1End'; 
-} elseif ($code2 == 2) { 
-  $seiten[] = 'P2Begin-P2End'; 
-} elseif ($code2 == 3) { 
-  $seiten[] = 'P3Begin-P3End'; 
-} elseif ($code2 == 4) { 
-  $seiten[] = 'P4Begin-P4End'; 
-} elseif ($code2 == 5) { 
-  $seiten[] = 'P5Begin-P5End'; 
-} elseif ($code2 == 6) { 
-  $seiten[] = 'P6Begin-P6End'; 
-} 
-// Festlegen, wo es dann weitergeht 
-$seiten[] = 'demografie'; 
-// Seitenabfolge festlegen 
-setPageOrder($seiten); 
-</code> 
- 
-Auch dieser PHP-Code lässt sich prinzipiell wieder kompakter schreiben, wenn man die Kennungen der Seiten "zusammenbaut": 
- 
-<code php> 
-$code1 = value('ZG01x01'); 
-$code2 = value('ZG01x02'); 
-setPageOrder( 
-  'P'.$code1.'Begin-P'.$code1-'End', 
-  'middleBegin-middleEnd', 
-  'P'.$code2.'Begin-P'.$code2-'End', 
-  'demografie' 
-); 
-</code> 
- 
- 
-===== Beispiel: Seiten-Abfolge variieren ===== 
- 
-Der Fragebogen in diesem Beispiel gehört zu einem Within-Subject Experimentaldesign. Im Fragebogen gibt es einen allgemeinen Teil, dann einige Seiten mit dem ersten Stimulus, dann einige Seiten Puffer und dann Seiten zum zweiten Stimulus. Die Abfolge der beiden Stimulus-Teile im Fragebogen soll zufällig variiert werden. 
- 
- 
-==== Vorbereitung ==== 
- 
-  * Legen Sie eine Frage vom Typ "Zufallsgenerator" an (im folgenden wird angenommen, dass sie die Kennung ZG02 hat). In der Frage tragen Sie als //Zettel (Inhalte)// folgendes ein. 
- 
-<code> 
-1 = Experimentalgruppe 1 
-2 = Experimentalgruppe 2 
-</code> 
- 
-  * Geben Sie den Seiten des Fragebogens unter **Fragebogen zusammenstellen** Kennungen ([[:de:glossary#seitenkennung|Seitenkennung]]). Prinzipiell können Sie die Kennungen frei wählen, für das Beispiel werden folgende Kennungen verwendet: 
-    * Die erste Seite, die zu Stimulus A gehört, bekommt die Kennung "beginA". 
-    * Die letzte Seite, die zu Stimulus A gehört, bekommt die Kennung "endA". 
-    * Die erste Seite vom Zwischenteil (Puffer) bekommt die Kennung "beginMiddle". 
-    * Die letzte Seite vom Zwischenteil bekommt die Kennung "endMiddle". 
-    * Die erste Seite, die zu Stimulus B gehört, bekommt die Kennung "beginB". 
-    * Die letzte Seite, die zu Stimulus B gehört, bekommt die Kennung "endB". 
-    * Die erste Seite des letzten Teils (also direkt nach "endB") bekommt die Kennung "final". 
- 
- 
-==== Anwendung ==== 
- 
-Unter **Fragebogen zusammenstellen** ziehen Sie den Zufallsgenerator auf die letzte Seite des allgemeinen Teils. Die darauf folgende Seite sollte entsprechend die Kennung "beginA" haben. 
- 
-Unter dem Zufallsgenerator fügen Sie folgenden PHP-Code ein (s. auch [[:de:create:php]]). Der Befehl ''[[:de:create:functions:setpageorder]]'' sorgt dafür, dass die Seiten in der gewünschten  
- 
-<code php> 
-$code = value('ZG02'); 
-if ($code == 1) { 
-  // Normale Reihenfolge beibehalten - man könnte den Befehl also auch einfach weglassen... 
-  setPageOrder('beginA-endA', 'beginMiddle-endMiddle', 'beginB-endB', 'final'); 
-} else { 
-  // Umgekehrte Reihenfolge der Teile A und B 
-  setPageOrder('beginB-endB', 'beginMiddle-endMiddle', 'beginA-endA', 'final'); 
-} 
-</code> 
de/create/questions/random.1480516879.txt.gz · Zuletzt geändert: 30.11.2016 15:41 von leiner
 
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