Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:create:rotation [05.10.2019 23:05] – [Rotation der Items oder Optionen einer Frage] admin | de:create:rotation [08.06.2021 08:14] (aktuell) – [Rotationen erstellen] admin | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== Rotation ====== | ====== Rotation ====== | ||
| - | Von Rotation spricht man, wenn die Items oder Optionen einer Frage jedem Teilnehmer in eine anderen (i.d.R. zufälligen) Reihenfolge dargeboten werden -- oder wenn gar die Reihenfolge von Fragen zufällig variiert wird. | + | Von Rotation spricht man, wenn die Items oder Optionen einer Frage jedem Teilnehmer in einer anderen (i.d.R. zufälligen) Reihenfolge dargeboten werden -- oder wenn gar die Reihenfolge von Fragen zufällig variiert wird. |
| Eine Rotation wird gerne verwendet, um Reihenstellungseffekten zu begegnen. Sehr bekannt sind der Primacy- und Recency-Effekt sowie Kontrast- und Konsistenzeffekte: | Eine Rotation wird gerne verwendet, um Reihenstellungseffekten zu begegnen. Sehr bekannt sind der Primacy- und Recency-Effekt sowie Kontrast- und Konsistenzeffekte: | ||
| - | In Abgrenzung zur Rotation gibt es die [[randomization|Randomisierung]], | + | In Abgrenzung zur Rotation gibt es die [[randomization|Randomisierung]], |
| **Tipp:** Lesen Sie zum Verständnis der komplexeren Code-Beispiele (unten) die Kapitel [[php|Einführung in PHP-Code]] und [[array|Einführung in Arrays]]. | **Tipp:** Lesen Sie zum Verständnis der komplexeren Code-Beispiele (unten) die Kapitel [[php|Einführung in PHP-Code]] und [[array|Einführung in Arrays]]. | ||
| Zeile 20: | Zeile 20: | ||
| Der Messfehler durch Rotation sinkt mit der Anzahl an Items, mit denen man ein Konstrukt misst. In der BFI-S Persönlichkeitsskala mit 3 Items je Persönlichkeitsfaktor fällt der Messfehler geringer aus als im obigen Beispiel mit einem Item. Sofern man sowohl Korrelationen rechnen will als auch die Items untereinander vergleichen, | Der Messfehler durch Rotation sinkt mit der Anzahl an Items, mit denen man ein Konstrukt misst. In der BFI-S Persönlichkeitsskala mit 3 Items je Persönlichkeitsfaktor fällt der Messfehler geringer aus als im obigen Beispiel mit einem Item. Sofern man sowohl Korrelationen rechnen will als auch die Items untereinander vergleichen, | ||
| + | =====Rotationen erstellen===== | ||
| + | Je nachdem was man rotieren möchte, sieht die Vorgehensweise, | ||
| + | * [[de: | ||
| + | * [[de: | ||
| + | * [[de: | ||
| + | * [[de: | ||
| - | ===== Rotation der Items oder Optionen | + | **Hinweis: |
| - | Die Randomisierung oder Rotation von Items in einer Frage wird wie folgt aktiviert: | ||
| - | |||
| - | * Öffnen Sie die Frage im **Fragenkatalog** | ||
| - | * Im Abschnitt // | ||
| - | * Bei der Einstellung // | ||
| - | * Speichern Sie die Frage, in der Vorschau können Sie anschließend die Randomisierung prüfen. | ||
| - | |||
| - | Falls einzelne Items (z.B. ein " | ||
| - | |||
| - | **Hinweis: | ||
| - | |||
| - | **Hinweis: | ||
| - | |||
| - | |||
| - | ===== Manuelle Rotation von Items oder Optionen ===== | ||
| - | |||
| - | Sie können die Items bzw. Optionen einer Frage auch mittels PHP-Code rotieren. Dazu wird zunächst mittels '' | ||
| - | |||
| - | <code php> | ||
| - | $items = getItems(' | ||
| - | shuffle($items); | ||
| - | question(' | ||
| - | </ | ||
| - | |||
| - | Dieses Vorgehen bietet die Möglichkeit, | ||
| - | |||
| - | Beachten Sie allerdings, dass sich hier (anders als bei der Rotation per Knopfdruck) die Reihenfolge ändert, sobald der Teilnehmer die Seite neu lädt oder den Zurück-Knopf im Fragebogen verwendet. Verwenden Sie '' | ||
| - | |||
| - | <code php> | ||
| - | if (!isset($itemsAB)) { | ||
| - | $itemsAB = getItems(' | ||
| - | shuffle($itemsAB); | ||
| - | registerVariable($itemsAB); | ||
| - | } | ||
| - | question(' | ||
| - | </ | ||
| - | |||
| - | **Hinweis: | ||
| - | |||
| - | |||
| - | ===== Parallele Rotation von zwei Fragen ===== | ||
| - | |||
| - | Mit der manuellen Rotation (s. oben) können Sie in zwei oder mehr Fragen dieselbe rotierte Item-Abfolge verwenden. Falls die Fragen auf unterschiedlichen Seiten stehen, verwenden Sie auch hierfür '' | ||
| - | |||
| - | <code php> | ||
| - | if (!isset($itemsAB)) { | ||
| - | $itemsAB = getItems(' | ||
| - | shuffle($itemsAB); | ||
| - | registerVariable($itemsAB); | ||
| - | } | ||
| - | question(' | ||
| - | </ | ||
| - | |||
| - | Auf derselben oder späteren Seiten kann die Reihenfolge, | ||
| - | |||
| - | <code php> | ||
| - | question(' | ||
| - | </ | ||
| - | |||
| - | |||
| - | ===== Rotation von Items über mehrere Seiten ===== | ||
| - | |||
| - | Falls Sie in einer Frage sehr viele Items haben, möchten Sie diese vielleicht auf mehrere Seiten verteilen. Normalerweise würden Sie das erledigen, indem Sie die Frage beim **Fragebogen zusammenstellen** mehrfach einfügen und jeweils bei den Anzeige-Einstellungen ({{: | ||
| - | |||
| - | Falls Sie die Verteilung der Items mit einer Randomisierung kombinieren möchten, benötigen Sie ein paar Zeilen [[php|PHP-Code]]. | ||
| - | |||
| - | <code php> | ||
| - | // Das isset() vermeidet, dass die Rotation etwa wg. fehlenden Antworten verändert wird | ||
| - | if (!isset($itemsAB01)) { | ||
| - | // Alle Items der Frage AB01 auflisten | ||
| - | $itemsAB01 = getItems(' | ||
| - | // Liste Mischen | ||
| - | shuffle($itemsAB01); | ||
| - | // Die Liste in Teillisten à 20 Items teilen | ||
| - | $itemsAB01 = array_chunk($itemsAB01, | ||
| - | // Die Variable für andere Seiten verfügbar machen | ||
| - | registerVariable($itemsAB01); | ||
| - | } | ||
| - | |||
| - | // Die Items über mehrere Seiten verteilt anzeigen | ||
| - | $i = loopPage(count($itemsAB01)); | ||
| - | question(' | ||
| - | </ | ||
| - | |||
| - | Mit der Funktion '' | ||
| - | |||
| - | <code php> | ||
| - | // Erste Seite | ||
| - | question(' | ||
| - | |||
| - | // Zweite Seite | ||
| - | question(' | ||
| - | |||
| - | // Dritte Seite | ||
| - | question(' | ||
| - | </ | ||
| - | |||
| - | Beachten Sie bitte, dass sich auf den Seiten nur noch der Index in eckigen Klammern ändert. Der Index beginnt bei 0, nicht bei 1 (s. Beispiel oben). | ||
| - | |||
| - | **Wichtig: | ||
| - | |||
| - | |||
| - | ===== Rotation mehrerer Fragen ===== | ||
| - | |||
| - | In seltenen Fällen sollen nicht nur die Items einer Frage rotiert werden, sondern gleich die Fragen. Dies erfordert ein wenig Programmierung mittels [[php|PHP-Code]]. | ||
| - | |||
| - | Das folgende Beispiel zeigt, wie man die Reihenfolge von 5 Fragen auf einer Seite im Fragebogen rotieren kann (zur Erklärung von Arrays s. [[filter-items# | ||
| - | |||
| - | <code php> | ||
| - | if (!isset($fragen)) { | ||
| - | $fragen = array( | ||
| - | ' | ||
| - | ' | ||
| - | ' | ||
| - | ' | ||
| - | ' | ||
| - | ); | ||
| - | // Die Liste zufällig mischen | ||
| - | shuffle($fragen); | ||
| - | // Die Rotation für eine eventuelle Wiederholung der Seite zwischenspeichern | ||
| - | registerVariable($fragen); | ||
| - | } | ||
| - | // Die Liste der Fragen Kennung für Kennung durchgehen | ||
| - | // und jeweils die entsprechende Frage anzeigen | ||
| - | foreach ($fragen as $kennung) { | ||
| - | question($kennung); | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | **Hinweis: | ||
| - | |||
| - | |||
| - | ===== Fragen über mehrere Seiten rotieren ===== | ||
| - | |||
| - | Die Rotation von Fragen über mehrere Seiten ist nur geringfügig anspruchsvoller. Das folgende Beispiel zeigt, wie 6 Fragen auf 2 Seiten verteilt werden können: | ||
| - | |||
| - | <code php> | ||
| - | // PHP-Code auf Seite 1 | ||
| - | |||
| - | // Das Mischen der Liste nur einmalig ausführen | ||
| - | if (!isset($fragen)) { | ||
| - | // Liste der Frage-Kennungen erstellen | ||
| - | $fragen = array( | ||
| - | ' | ||
| - | ' | ||
| - | ' | ||
| - | ); | ||
| - | // Die Liste zufällig mischen | ||
| - | shuffle($fragen); | ||
| - | // Die Listen auf allen Seiten verfügbar machen | ||
| - | registerVariable($fragen); | ||
| - | } | ||
| - | |||
| - | // Die ersten drei Kennungen der Liste anzeigen | ||
| - | question($fragen[0]); | ||
| - | question($fragen[1]); | ||
| - | question($fragen[2]); | ||
| - | </ | ||
| - | |||
| - | <code php> | ||
| - | // PHP-Code auf Seite 2 | ||
| - | |||
| - | // Die nächsten drei Kennungen der Liste anzeigen | ||
| - | question($fragen[3]); | ||
| - | question($fragen[4]); | ||
| - | question($fragen[5]); | ||
| - | </ | ||
| - | |||
| - | Falls Sie die Fragen einzeln auf jeweils einer eigenen Seite anzeigen möchten, kann dies mittels '' | ||
| - | |||
| - | <code php> | ||
| - | $i = loopPage(count($fragen)); | ||
| - | question($fragen[$i]); | ||
| - | </ | ||
| - | |||
| - | |||
| - | ===== Fragen zusammen mit weiterem Inhalt rotieren ===== | ||
| - | |||
| - | Noch einen Schritt weiter muss man gehen, um weitere Daten (z.B. ein Bild als Stimulus) mit den Fragen zusammen zu rotieren. Wenn also vor Frage 1 immer " | ||
| - | |||
| - | <code php> | ||
| - | if (!isset($blocks)) { | ||
| - | $blocks = array( | ||
| - | array(' | ||
| - | array(' | ||
| - | array(' | ||
| - | array(' | ||
| - | ); | ||
| - | |||
| - | // Die Liste mischen | ||
| - | shuffle($blocks); | ||
| - | // Die Listen auf allen Seiten verfügbar machen | ||
| - | registerVariable($blocks); | ||
| - | } | ||
| - | |||
| - | // Anzeige der Blöcke | ||
| - | $i = loopPage(count($blocks)); | ||
| - | // Bild anzeigen | ||
| - | html('< | ||
| - | // Frage anzeigen | ||
| - | question($blocks[$i][0]); | ||
| - | </ | ||
| - | |||
| - | Alternativ können mehrere Seiten im Fragebogen eingefügt und jeweils ein Block angezeigt werden. Dies kann z.B. hilfreich sein, wenn die Blöcke nicht direkt hintereinander angezeigt werden sollen. | ||
| - | |||
| - | <code php> | ||
| - | html('< | ||
| - | question($blocks[0][0]); | ||
| - | </ | ||
| - | |||
| - | <code php> | ||
| - | html('< | ||
| - | question($blocks[1][0]); | ||
| - | </ | ||
| - | |||
| - | |||
| - | ===== Seiten rotieren ===== | ||
| - | |||
| - | Es sind natürlich auch mehrere Fragen pro Block denkbar -- allerdings lässt sich so etwas in aller Regel einfacher mittels '' | ||
| - | |||
| - | Die Seitenabfolge muss auf der Seite __vor__ der ersten zu rotierenden Seite erfolgen. Außerdem muss beim **Fragebogen zusammenstellen** jeder Seite eine eindeutige Kennung zugeteilt werden. Im folgenden Beispiel wäre das " | ||
| - | |||
| - | <code php> | ||
| - | if (!isset($seiten)) { | ||
| - | // Liste der Seiten definieren | ||
| - | $seiten = array(' | ||
| - | // Liste mischen | ||
| - | shuffle($seiten); | ||
| - | // Die Seite ergänzen, wo es nachher weiter geht | ||
| - | $seiten[] = ' | ||
| - | // Reihenfolge zwischenspeichern, | ||
| - | registerVariable($seiten); | ||
| - | } | ||
| - | setPageOrder($seiten); | ||
| - | </ | ||
| - | |||
| - | **Hinweis: | ||
| - | |||
| - | |||
| - | ===== Rotation von Frageblöcken ===== | ||
| - | |||
| - | Ebenso wie einzelne Seiten können auch Blöcke mehrere Seiten rotiert werden. Der einzige Unterschied ist, dass jedem dieser Blöcke unter **Fragebogen zusammenstellen** eine Kennung für die jeweils erste und letzte Seite zugeordnet werden (z.B. " | ||
| - | |||
| - | |||
| - | ==== Zufällige Rotation ==== | ||
| - | |||
| - | **Wichtig: | ||
| - | |||
| - | <code php> | ||
| - | if (!isset($blocks)) { | ||
| - | // Liste der Seiten definieren | ||
| - | $blocks = array(' | ||
| - | // Liste mischen | ||
| - | shuffle($blocks); | ||
| - | // Die Seite ergänzen, wo es nachher weiter geht | ||
| - | $blocks[] = ' | ||
| - | // Reihenfolge zwischenspeichern, | ||
| - | registerVariable($blocks); | ||
| - | } | ||
| - | setPageOrder($blocks); | ||
| - | </ | ||
| - | |||
| - | |||
| - | ==== Systematische Rotation ==== | ||
| - | |||
| - | Mitunter ist es nicht nur erforderlich, | ||
| - | |||
| - | Bei 3 Blöcken (siehe obigens Beispiel) wären das 6 mögliche Varianten der Reihenfolge. Im Zufallsgenerator würde man also 6 Zettel/ | ||
| - | |||
| - | < | ||
| - | 1 = B1Start-B1End, | ||
| - | 2 = B1Start-B1End, | ||
| - | 3 = B2Start-B2End, | ||
| - | 4 = B2Start-B2End, | ||
| - | 5 = B3Start-B3End, | ||
| - | 6 = B3Start-B3End, | ||
| - | </ | ||
| - | |||
| - | Bei **Fragebogen zusammenstellen** auf der Fragebogen-Seite unmittelbar vor " | ||
| - | |||
| - | <code php> | ||
| - | $order = value(' | ||
| - | setPageOrder($order, | ||
| - | </ | ||
| - | |||
| - | " | ||
| - | |||
| - | |||
| - | ===== Rotation und Mischen von Blöcken ====== | ||
| - | |||
| - | Sollen zusätzlich zu den Blöcken (jeweils bestehend aus mehreren Seiten) auch noch deren Seiten gemischt werden? Dann benötigt man verschachtelte Arrays und muss '' | ||
| - | |||
| - | Die Seiten innerhalb der Blöcke müssen in diesem Fall in einem Array einzeln angegeben werden (''' | ||
| - | |||
| - | <code php> | ||
| - | if (!isset($blocks)) { | ||
| - | // Liste der Seiten definieren | ||
| - | $blocks = array( | ||
| - | // Block 1 | ||
| - | array(' | ||
| - | // Block 2 | ||
| - | array(' | ||
| - | // Block 3 | ||
| - | array(' | ||
| - | ); | ||
| - | // Jeden einzelnen Block in sich mischen | ||
| - | for ($i=0; $i< | ||
| - | shuffle($blocks[$i]); | ||
| - | } | ||
| - | // Liste der Blöcke mischen | ||
| - | shuffle($blocks); | ||
| - | // Die Seite ergänzen, wo es nachher weiter geht | ||
| - | $blocks[] = ' | ||
| - | // Reihenfolge zwischenspeichern, | ||
| - | registerVariable($blocks); | ||
| - | } | ||
| - | setPageOrder($blocks); | ||
| - | </ | ||