0 votes
in SoSci Survey (dt.) by s024379 (110 points)

Hallo :D
Wir möchten gerne einen Fragebogen mit 2 Rubriken in Within-subject-Design erstellen. Eine Rubrik besteht aus 6 Seiten mit jeweils 2 Bildern, die die Probanden bewerten sollen. Wir wollen nun die Wiedergabe der Seiten in einer Rubrik randomisieren. Mit dem Befehl setPageOrder() kommen wir nicht so zu Recht.. Wäre eine Rotation in diesem Fall besser? Könnten Sie uns weiterhelfen?

Mit freundlichen Grüßen

Valentina und Nadja :D

by SoSci Survey (308k points)
Könnten Sie in Ihrer Frage vielleicht nochmal knapp das Ziel der Randomisierung/Rotation erklären? Geht es darum, eine Reihe von Seiten zu mischen (=Rotation) oder möchten Sie unterschiedlichen Teilnehmern/Versuchsgruppen unterschiedliche Inhalte anzeigen (=Randomisierung)? Wie sieht Ihr within-subject Design aus?
by s024379 (110 points)
Wir wollen eine Reihe von Seiten mischen. Das hier ist unser Code bist jetzt:

if (!isset($blocks)) {
  // Liste der Seiten definieren
  $blocks = array('AP01Start-AP06End','IP01Start-IP06End');
  // Liste mischen
  shuffle($blocks);
  // Die Seite ergänzen, wo es nachher weiter geht
  $blocks[] = 'SD';
  // Reihenfolge zwischenspeichern, um spätere Änderung zu vermeiden
  registerVariable($blocks);
}
setPageOrder($blocks);

if (!isset($blocks)) {
  // Liste der Seiten definieren
  $blocks = array(
    // Block 1
    array('AP01Start', 'AP02', 'AP03', 'AP04', 'AP05', 'AP06End'),
    // Block 2
    array('IP01Start', 'IP02', 'IP03', 'IP04', 'IP05', 'IP06End')
  );
  // Jeden einzelnen Block in sich mischen
  for ($i=0; $i<count($blocks); $i++) {
    shuffle($blocks[$i]);
  }
  // Liste der Blöcke mischen
  shuffle($blocks);
  // Die Seite ergänzen, wo es nachher weiter geht
  $blocks[] = 'SD';
  // Reihenfolge zwischenspeichern, um spätere Änderung zu vermeiden
  registerVariable($blocks);
}
setPageOrder($blocks);


Die zwei Blöcke kommen schon in unterschiedlicher Reihenfolge daher. Jetzt sollten sich nur noch die Seiten innerhalb eines Blockes auch noch mischen... Daran scheitere ich gerade!

1 Answer

0 votes
by SoSci Survey (308k points)
edited by SoSci Survey

Danke für die Ergänzung. Wenn ich Sie korrekt verstehe, haben Sie zwei Blöcke, die in sich gemischt werden sollen (Rotation) - und dann soll die Reihenfolge von Block A und Block B noch randomisiert werden.

Dafür müssen Sie erstmal ein Array erstellen, welches die komplette (!) Seitenabfolge enthält. Außerdem benötigen Sie einen Zufallsgenerator, der die Reihenfolge der beiden Blöcke festlegt. Wenn dieser z.B. die Kennung RG01 hat, könnte der PHP-Code wie folgt aussehen:

if (!isset($blocks)) {
  $blockA = array('AP01Start-AP06End','IP01Start-IP06End');
  $blockB = array('IP01Start', 'IP02', 'IP03', 'IP04', 'IP05', 'IP06End');
  // Jeden Block in sich mischen
  shuffle($blockA);
  shuffle($blockB);
  // Je nach gewünschte Abfolge zusammenbauen
  if (value('RG01') == 1) {
    $blocks = array_merge($blockA, $blockB);
  } else {
    $blocks = array_merge($blockB, $blockA);
  }
  // Noch die letzte Seite ergänzen
  $blocks[] = 'SD';
  // Reihenfolge zwischenspeichern, um spätere Änderung zu vermeiden
  registerVariable($blocks);
}
setPageOrder($blocks);

Bitte beachten Sie, dass in Ihrem vorigen PHP-Code der erste Block mit isset() dafür sorgte, dass der zweite überhaupt nicht mehr ausgeführt wurde. Denn wenn die Variable $blocks erstmal definiert ist, dann liefert !isset($blocks) das Ergebnis false zurück.

by s024379 (110 points)
Vielen Dank schon mal für die Antwort! Sie schreiben, dass ich ein Array mit der kompletten Seitenabfolge erstellen soll. In Ihrem Codebeispiel befindet sich ja momentan im $blockB array nur die Seitenabfolge eines Blockes, soll ich dort noch die Seitenabfolge des zweiten Blockes anhängen?
by SoSci Survey (308k points)
In dem PHP-Code gibt es einen $blockA und einen $blockB - diese werden dann zu einer Variable $block zusammengefasst, die beide Teile enthält (das Array der kompletten Seitenabfolge). Wenn es noch um andere Blöcke als in $blockA und $blockB geht, müssten Sie das bitte nochmal spezifizieren.
by s024379 (110 points)
Folgende Fehlermeldungen erscheinen:

Fehler im Fragebogen (Seite 3)
In der Funktion setPageOrder() wurde an Position 1 ein ungültiger Parameter vom Typ NULL angegeben. Als Parameter sind entweder Strings (Texte) erlaubt oder Arrays, die ausschließlich Strings enthalten.
Fehler im Fragebogen (Seite 3)
Im PHP-Code trat ein Fehler auf.
Fehler im Fragebogen: Die PHP-Variable $blocks wurde verwendet, in diesem PHP-Code aber noch nicht definiert (sie enthält noch keinen Wert).

PHP-Code

015   
016   registerVariable('blocks');
017 }
018 setPageOrder($blocks);
019 return 'ok';

Nein andere Blöcke gibt es nicht mehr, ich dachte nur ich muss die Seitenabfolge AP01Start, AP02, AP03, AP04, AP05, Ap06End auch irgendwo angeben...
by SoSci Survey (308k points)
Pardon, da fehlte in der ersten Zeile des PHP-Codes noch ein Ausrufezeichen (Verneinung) vor dem isset().
by s024379 (110 points)
Ok es scheint so als ob die Randomisierung des blockB (mit den Seiten IP01Start bis IP06End) funktioniert, aber sie werden zweimal abgefragt. Also zuerst ein Block, dann der andere und dann wiederum ersterer (mit den angegebenen Antworten).
by SoSci Survey (308k points)
Ach ja ... ich hatte Ihren PHP-Code falsch interpretiert und jetzt erst die Inhalte der beiden Arrays angesehen. Bitte tragen Sie bei $blockA alle Seiten von Block 1 ein (einzeln, nicht "von-bis") und bei $blockB alle Seiten von Block 2. Die Seite "SD" muss nach beiden Blöcken folgen.

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...