Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
de:create:rotation [06.03.2020 20:23] – admin | de:create:rotation [04.02.2021 10:19] – sophia.schauer | ||
---|---|---|---|
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 etwas anders aus: | ||
+ | * [[de: | ||
+ | * [[de: | ||
+ | * [[de: | ||
- | ===== Rotation der Items oder Optionen ===== | + | **Hinweis: |
- | ==== Rotation in einer Frage ==== | ||
- | |||
- | 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 Items in 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 von Fragen ===== | ||
- | |||
- | Im nachfolgenden wir erklärt, wie nicht nur die Items einer Frage rotiert werden, sondern wie die Reihenfolge ganzer Fragen rotiert wird. Dies erfordert ein wenig Programmierung mittels [[php|PHP-Code]]. | ||
- | |||
- | **Wichtig: | ||
- | |||
- | |||
- | ==== Mehrere Fragen auf einer Seite ==== | ||
- | |||
- | 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> | ||
- | // Teil 1: Liste der Fragen erstellen und mischen | ||
- | if (!isset($fragen)) { | ||
- | $fragen = array( | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ); | ||
- | // Die Liste zufällig mischen | ||
- | shuffle($fragen); | ||
- | // Die Rotation für eine eventuelle Wiederholung der Seite zwischenspeichern | ||
- | registerVariable($fragen); | ||
- | } | ||
- | |||
- | // Teil 2: Fragen anzeigen | ||
- | // Die Liste der Fragen Kennung für Kennung durchgehen | ||
- | // und jeweils die entsprechende Frage anzeigen | ||
- | foreach ($fragen as $kennung) { | ||
- | question($kennung); | ||
- | } | ||
- | </ | ||
- | |||
- | **Hinweis: | ||
- | |||
- | |||
- | ==== Eine Frage pro Seite ==== | ||
- | |||
- | Falls Sie die Fragen einzeln auf jeweils einer eigenen Seite anzeigen möchten, kann dies mittels '' | ||
- | |||
- | <code php> | ||
- | // Teil 1: Liste der Fragen erstellen und mischen | ||
- | // (s. oben) | ||
- | |||
- | // Teil 2: Fragen anzeigen | ||
- | $i = loopPage(count($fragen)); | ||
- | question($fragen[$i]); | ||
- | </ | ||
- | |||
- | |||
- | ==== 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 | ||
- | |||
- | // Teil 1: Erstellen und 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); | ||
- | } | ||
- | |||
- | // Teil 2a | ||
- | // Die ersten drei Kennungen der Liste anzeigen | ||
- | question($fragen[0]); | ||
- | question($fragen[1]); | ||
- | question($fragen[2]); | ||
- | </ | ||
- | |||
- | <code php> | ||
- | // PHP-Code auf Seite 2 | ||
- | // Hier ist Teil 1 nicht (!) erneut erforderlich | ||
- | |||
- | // Teil 2b | ||
- | // Die nächsten drei Kennungen der Liste anzeigen | ||
- | question($fragen[3]); | ||
- | question($fragen[4]); | ||
- | question($fragen[5]); | ||
- | </ | ||
- | |||
- | |||
- | |||
- | ===== 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); | ||
- | </ | ||
- | |||
- | |||
- | ===== Weitere Anwendungen ===== | ||
- | |||
- | Je nach Anwendungsfall können weitere Programmierungen erforderlich sein. Hier einige Beispiele: | ||
- | |||
- | * [[: |