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

Hallo zusammen :)

eine ähnliche Frage wurde bereits gestellt, allerdings hat die Antwort für meinen Fall nicht geholfen:

Per Zufallsgenerator werden meinen Teilnehmenden insgesamt 40 Text-Rating-Kombinationen gezeigt (aus einem Pool von über 200 Kombis).
Das funktioniert so, dass auf einer Seite ein Item steht (z. B. „Ich bin groß“) und direkt danach auf der nächsten Seite ein Rating zu diesem Item mit mehreren Fragen folgt.

Nun möchte ich gerne erreichen, dass z. B. immer auf der 30. Rating-Seite zusätzlich am Ende ein Attention-Check (Frage AT06) angezeigt wird – also zusätzlich zu den Ratingfragen auf dieser Seite, nicht als eigene Seite.

Mein aktueller PHP-Code für die zufällige Auswahl und Reihenfolge sieht so aus und funktioniert auch:


 if (!isset($pagesALL)) {
    question('RD01');  // Zettel in zufälliger Reihenfolge ziehen
    $pagesN = valueList('RD01', NULL, 'label');  // Gezogene Zettel auslesen
    question('RD02');  // Zettel in zufälliger Reihenfolge ziehen
    $pagesP = valueList('RD02', NULL, 'label');  // Gezogene Zettel auslesen
    $pagesALL = array_merge($pagesN, $pagesP);
    shuffle($pagesALL);
    registerVariable($pagesALL); // Reihenfolge zwischenspeichern, um spätere Änderung zu vermeiden
    }
    setPageOrder($pagesALL, 'AbFragI');  // Seiten als Seitenabfolge definieren

Meine Frage ist also:
Wie kann ich dafür sorgen, dass eine bestimmte Frage (AT06) innerhalb einer zufällig gezogenen Rating-Seite zusätzlich angezeigt wird?

Vielen Dank im Voraus!

1 Answer

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

Ihrem Code entnehme ich, dass Sie nicht willkürlich aus 200 Codes ziehen, sondern aus zwei Sets, und dass Sie diese Ziehungen anschließend mittels shuffle() mischen. Soweit korrekt?

In diese Liste können Sie im Prinzip recht einfach weitere Elemente einfügen:

$pagesALL = array_merge($pagesN, $pagesP);
array_splice($pagesALL, 29, 0, ['AT06']);

Das Element Nr. 30 hat den Index 29, an dieser Stellen würde der o.g. Code das Element 'AT06' einfügen.

Ob setPageOrder() in Ihrem Kontext wirklich Sinn ergibt, weiß ich nicht, weil Sie ja über "Fragen" schreiben, und für 200 Fragen hoffentlich nicht 400 Seiten angelegt haben... Mittels loopToPage() lässt sich das mit 2 Seiten lösen.

Ergänzung

Sie sollten außerden mittels array_values() die Schlüssel (=Variablennamen) entfernen, die valueList() liefert, also:

if (!isset($pagesALL)) {
    question('RD01');  // Zettel in zufälliger Reihenfolge ziehen
    $pagesN = array_values(valueList('RD01', NULL, 'label'));
    question('RD02');  // Zettel in zufälliger Reihenfolge ziehen
    $pagesP = array_values(valueList('RD02', NULL, 'label'));
    $pagesALL = array_merge($pagesN, $pagesP);
    shuffle($pagesALL);
    array_splice($pagesALL, 29, 0, ['AT06']);
    registerVariable($pagesALL);
}
setPageOrder($pagesALL, 'AbFragI');
by s296412 (110 points)
Vielen Dank für Ihre Rückmeldung und die hilfreiche Erklärung!

Auf den Seiten, auf denen jeweils ein Item präsentiert wird, befindet sich folgender HTML-Code (die Texte variieren natürlich je nach Item):

<br><br><br><br><br>
<p align="center"><font size="7"><b>"Ich bin groß."</b></font></p>
<br><br><br>

Auf den darauffolgenden Rating-Seiten wird aktuell folgender PHP-Code verwendet:

text('1001', 'spacing=default');
question('NV01');  // VA1001
question('NA01');  // PA1001
question('NR01');  // PR1001
question('NF01');  // PF1001
question('NE01');  // Emo1001
Die Fragenkennungen unterscheiden sich jeweils je nach Item – also bei Text 1002 werden z. B. NV02, NA02 usw. eingeblendet.

Ich verstehe, dass dieses Design mit den vielen einzelnen Seiten technisch nicht ideal ist.
Ggf. würde ich mir den Vorschlag mit loopPage() gerne genauer ansehen.
by SoSci Survey (360k points)
Verstehe ich es korrekt, dass Sie nicht nur 400 Seiten haben, sondern nochmal 5x400 =2000 Fragen, damit für jede Aussage ein eigenes Set an Fragen angezeigt werden kann?
by s296412 (110 points)
Fast richtig, aber nicht ganz :)
Es gibt insgesamt 234 unterschiedliche Items, die jeweils auf einer Seite per HTML-Code präsentiert werden.
Dazu gibt es 234 entsprechende Rating-Seiten, die mit dem oben erwähnten PHP-Code programmiert sind – also insgesamt 468 Seiten.

Für die Ratings wurden also insgesamt 1.170 Fragen angelegt.
by SoSci Survey (360k points)
Okay, das ist nicht ganz effizient ;)

Mein Vorschlag wäre, dass Sie sich einmal die Multi-Level-Struktion als technische Option ansehen: https://www.soscisurvey.de/help/doku.php/de:create:multilevel

Klingt gefährlich, bedeutet aber nur, dass Sie alles nur einmal anlegen und die Antworten für die unterschiedlichen Stimuli dann untereinander statt nebeneinander im Datensatz bekommen. Ich wage die Hypothese, dass das Ihre Auswertung auch vereinfacht.

In der Anleitung steht auch, wie man das mit dem Zufallsgenerator kombiniert.

Und wenn Sie die Trial-Nummer an den untergeordneten Fragebogen mitgeben, dann kann dieser auch per PHP-Filter den Attention-Check zuschalten bei Trial 20.
by s296412 (110 points)
Ja, das habe ich mir schon fast gedacht :)
Vielen Dank für den Tipp mit der Multi-Level-Struktur und den Link – ich schaue mir das mal genauer an!
Danke für die schnelle und hilfreiche Unterstützung!

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

...