0 votes
in SoSci Survey (dt.) by s076645 (120 points)
edited by s139847

Liebes SoSci-Support-Team,

ich plane eine mehrwellige Datenerhebung mit 3 Bedingungen, die im Abstand von 3 Wochen erhoben werden sollen. Dafür arbeite ich nach gründlicher Entscheidung mit einem Fragebogen und Unterbrecherseiten.

Die drei Bedingungen bestehen jeweils aus zwei Blocks. Es sollen sowohl die Reihenfolge der drei Bedingungen, als auch die zwei Blocks innerhalb jeder Bedingung randomisiert werden, um Reihenfolgeeffekte zu kontrollieren. Die Umsetzung mittels php-Code ist mit mithilfe des exzellent dokumentierten Fragenkataloges des SoSci-Supports gelungen.
Folgender Code realisiert die gewünschte Randomisierung mit feststehenden Unterbrecherseiten (SD, END, WLCME sind dabei die feststehenden (Unterbrecher-)Seiten im Projekt, die natürlich nicht rotiert werden dürfen, die arrays definieren die 3 Bedingungen, die aus jeweils 2 Blöcken RWA1 usw. bestehen):

if (!isset($blocks)) {
  // Liste der Seiten definieren
  $blocks = array(
    array('RWA1-BIG51', 'MAENV1-PRJDC1'),
    // Block 2
    array('RWA2-BIG52', 'MYOUTH1-PRJDC2'),
    // Block 3
    array('RWA3-BIG53','MNAT1-PRJDC3')
);
  // Liste mischen
for ($i=0; $i<count($blocks); $i++) {
    shuffle($blocks[$i]);
}
  shuffle($blocks);
  // Randomisierungssyntax festlegen
  $blocks = array(
  $blocks[0],
  'SD',
  'END1',
  'WLCME2',
  $blocks[1],
  'END2',
  'WLCME3',
  $blocks[2],
  'blank',
  'end'
);
  // Reihenfolge zwischenspeichern, um spätere Änderung zu vermeiden
  registerVariable($blocks);
}
setPageOrder($blocks);

Meine Frage diesbezüglich ist, wie ich in diesem Code mittels der put()-Funktion die Reihenfolge der Bedingungen und Blocks für die Versuchsperson speichern kann.

Vielen Dank im Voraus

1 Answer

0 votes
by s139847 (2.7k points)

Hallo,

ich würde Ihnen empfehlen, eine interne Variable anzulegen, in der Sie die Reihenfolge speichern können.
Sie müssen vorher noch Ihre Reihenfolge aus Ihrem zwei-dimensionalen Array raus bekommen, z.B.

$save = [];
for ($i=0; $i<count($blocks); $i++) {
array_push($save, $blocks[$i][0]);
array_push($save, $blocks[$i][1]);
}

$saveString = implode (',', $save);
put('IHRE_INTERNE_VARIABLE', $saveString);

Sie schreiben im ersten schritt mit der for-Schleife und array_push() aus Ihrem zwei-dimensional Array in ein eindimensionales $save Array um, und machen dann mit implode() einen mit Komma separierten String draus (das Komma können Sie auch durch etwa anderes ersetzen, wenn das bei der Datenauswertung relevant ist). Und dann wird zuletzt in die Variable geschrieben.

Viele Grüße

by s076645 (120 points)
Vielen Dank für die schnelle und hilfreiche Antwort! Es funktioniert super
Danke!

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

...