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

0 votes

Liebes SosciSurvey-Team,

In meinem Experiment würde ich gerne mehrere Textvignetten (untenT genannt) präsentieren, darauffolgend gibt es zu jedem Text eine Entscheidungsphase (unten D genannt) und darauffolgend 3 dazugehörige ratings (unten E, C, P genannt).

Wichtig wäre nun die Texte + dazugehörigen Entscheidungen und ratings pro Versuchsperson zufällig zu rotieren, wobei die einzelnen Kombinationen nicht getrennt werden sollen. Darüber hinaus soll jede Frage auf einer eigenen Seite präsentiert werden.

Ich habe mir dazu folgenden Code überlegt (Beispiel mit 4 Texten und dazugehörigen Entscheidungen und Ratings):

Hauptcode + Seite 1:

if (!isset($blocks)) {
  $blocks = array(  // Liste der Textvignetten T und zugehöriger Entscheidung D und Ratings A, C, P
    array('T001', 'D001’, 'E001’, 'C001’, 'P001’),
    array('T002', 'D002’, 'E002’, 'C002’, 'P002’),
    array('T003', 'D003’, 'E003’, 'C003’, 'P003’),
    array('T004', 'D004’, 'E004’, 'C004’, 'P004’)
  );
 
  // Die Liste mischen
  shuffle($blocks);
  // Die Listen auf allen Seiten verfügbar machen
  registerVariable('blocks');
}

  // Seite 1

question($blocks[0][0]); // erster Block, erstes Element (Text 1)

Seite 2
question($blocks[0][1]); // erster Block, zweites Element (Entscheidung 1)

Seite 3
question($blocks[0][2]); // erster Block, drittes Element (E-rating 1)

Seite 4
question($blocks[0][3]); // erster Block, viertes Element (C-rating 1)

Seite 5
question($blocks[0][4]); // erster Block, fünftes Element (P-rating 1)

Seite 6
question($blocks[1][5]); // zweiter Block, erstes Element (Text 2)

… und so weiter

Allerdings:
Eigentlich wäre es auch wichtig die Reihenfolge der ratings E, C und P innerhalb jedes Blocks zu randomisieren, dabei aber die Reihenfolge der Texte CH und der Entscheidung D gleich zu belassen, nämlich immer innerhalb eines rotierten Blocks auf erster und zweiter Stelle und danach die durchmischten ratings.

Leider bin ich da noch nicht drauf gekommen wie man das programmieren könnte, vermute aber dass es hier auch eine Möglichkeit gibt.

Wäre sehr dankbar für einen Lösungsvorschlag oder Hinweis.

Besten Gruß,

Stefan

in SoSci Survey (dt.) by s032185 (120 points)
edited by SoSci Survey

1 Answer

0 votes

Sie können Arrays auseinandernehmen und zusammensetzen. Letzteres mit array_merge().

Mischen Sie also zunächst die hinteren Teile:

if (!isset($blocks)) {
  $blocks = array(  // Liste der Textvignetten T und zugehöriger Entscheidung D und Ratings A, C, P
    array('E001', 'C001', 'P001'),
    array('E002', 'C002', 'P002'),
    array('E003', 'C003', 'P003'),
    array('E004', 'C004', 'P004')
  );
  for ($i=0; $i<count($blocks); $i++) {
    shuffle($blocks[$i]);
  }

Dann ergänzen Sie die beiden Seiten zu Beginn:

  $blocks[0] = array_merge(array('T001', 'D001'), $blocks[0]);
  $blocks[1] = array_merge(array('T001', 'D001'), $blocks[1]);
  $blocks[2] = array_merge(array('T001', 'D001'), $blocks[2]);
  $blocks[3] = array_merge(array('T001', 'D001'), $blocks[3]);

Und dann weiter wie gehabt.

  // Die Liste mischen
  shuffle($blocks);
  // Die Listen auf allen Seiten verfügbar machen
  registerVariable('blocks');
}

Wichtig noch, dass Sie gerade Anführungszeichen verwenden. Wenn Sie Ihren Code oben in der Frage ansehen, stehen hinter der Seitenkennung immer typografische Anführungszeichen, welche PHP nicht als Anführungszeichen erkennt. Das passiert mitunter, wenn man den Code in eine Textverarbeitung wie Word kopiert.

by SoSci Survey (78.9k points)
Vielen lieben Dank für die hilfreiche Lösung! Und auch für den Hinweis mit den Anführungszeichen. Da haben sich tatsächlich ein paar falsche eingeschlichen.
...