0 votes
ago in SoSci Survey (dt.) by s339463 (120 points)

Hallo zusammen,

ich habe eine Studie, die im wesentlichen aus vier Teilen besteht:
Einleitung-Experiment-Selbstbericht-Abschluss.

Ob zuerst das Experiment (MT) oder der Selbstbericht (SR) kommt, hatte ich ursprünglich mit setPageOrder randomisiert:

question('E005');  // Zettel aus dem Zufallsgenerator ziehen 

// Mögliche Reihenfolgen: 1 = MT 1, MT 2, SR 0, SR 1, SR 2, 2 = SR 0, SR 1, SR 2, MT 1, MT 2)

$pages = value('E005', 'label'); 
setPageOrder($pages, 'SR other');

Jetzt kommt dazu, dass ich im Selbstbericht für sehr viele Stimuli (einmal viele Wörter, einmal viele Bilder) je dieselben Fragen stelle (z.B. "wie findest du %stimulus%?, bewerte %stimulus%, usw.) und daher mit einer Multilevel-Struktur arbeite. So kann ich die Seite mit den Fragen wiederholen (loopPage) und den passenden Stimulus in den Platzhalter einfügen:

// Auslesen der gezogenen Werte
$stimuli = array_values(valueList('SA07'));

// Die Seite für jeden der gezogenen Werte anzeigen
$stimulusID = loopPage($stimuli);
 
// Den untergeordneten Fragebogen für den Stimulus aufrufen
multiLevelDown('Selfreport_A', $stimulusID);

Dann im untergeordneten Fragebogen:

// Information aus multiLevelDown() auslesen
$stimulusID = multiLevelData();
 
// ID im Datensatz speichern
put('SA08_01', $stimulusID);
 
// Text zum Code suchen
$stimulus = getItemtext('SA07', $stimulusID);
 
// Text in einen Platzhalter schreiben
replace('%stimulus%', $stimulus);

Und dasselbe noch einmal für die Bilder.

Da ich jetzt also loopPage() benutze, um dieselben Fragen für meine große Anzahl an Stimuli zu stellen, funktioniert setPageOrder nicht mehr (wie ja auch in der Dokumentation darauf hingewiesen).

Wie kann ich nun die Multilevelstruktur mit LoopPage (für den Selbstbericht) beibehalten, aber gleichzeitig die Seiten randomiseren, also ob Teilnehmende erst den Selbstbericht oder erst das Experiment absolvieren?

Über Ideen und Hilfestellungen freue ich mich -- vielen Dank!

1 Answer

0 votes
ago by SoSci Survey (354k points)

Der Trick besteht darin, dass Sie den Loop bereits in der Randomisierung vorsehen. Sie ersetzen also die Seite mit dem Loop durch ein Array, welches diesen Seitennamen 10-mal (oder wie oft Sie eben wiederholen möchten) enthält.

Dadurch haben sie den Loop. Jetzt brauchen Sie noch die Funktion loopIndex(), um die Position zu bekommen, die Sie bisher über loopPage() bekommen hatten. Die zählt jetzt aber nicht mehr ab 0, sondern gibt Ihnen die Position in der Seitenabfolge zurück.

Das heißt, sie müssen entweder beim setPageOrder() schon mittels register Variable notieren, wo der Loop beginnt oder Sie müssen das beim ersten Aufruf der Seite mit einer Kombination aus isset() und registerVariable() machen.

Nicht ganz trivial? Es gibt auch noch einen anderen Workaround. Sie können mittels multiLevelDown() erst in einen zusätzlichen Fragebogen springen, welcher dann loopPage() verwendet, und mittels eines weiteren multiLevelDown() nochmal witer springt.

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

...