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

Hallo,

für meine Studie verwende ich einen Zufallsgenerator, damit die Teilnehmer verschiedene Fragen in randomisierter Reihenfolge präsentiert bekommen. Jetzt würde ich gerne eine bestimmte Frage, den Attention Check, an einer festen Position (am besten in der Mitte der Fragen) positionieren, damit bei allen Teilnehmern der Attention Check in der Mitte, also nach der Hälfte der Fragen präsentiert wird und nicht an einer zufälligen/randomisierten Position innerhalb der Fragen. Ist das implementierbar und wenn ja, wie?

Ich würde ungern die Fragen in zwei Blöcke aufteilen und dazwischen den Attention Check präsentieren, weil es dann keine vollständige Randomisierung der Reihenfolge mehr wäre, sondern nur noch innerhalb der zwei Blöcke.

Ich würde mich sehr über eine Antwort freuen!

Freundliche Grüße

// Teil 1: Liste der Fragen erstellen und mischen
if (!isset($fragen)) {
  // Liste der Frage-Kennungen definieren
  $fragen = [
'IT01',
'IT02',
'IT03',
'IT04',
'IT05',
'IT06',
'IT07',
'IT08',
'IT09',
'IT10',
'IT11',
'IT12',
'IT13',
'IT14',
'IT15',
'IT16',
'IT17',
'IT18',
'IT19',
'IT20',
'IT21',
'IT22',
'IT23',
'IT24',
'IT25',
'IT26',
'IT27',
'IT28',
'IT29',
'IT30',
'IT31',
'IT32',
'IT33',
'IT34',
'IT35',
'IT36',
'IT37',
'IT38',
'IT39',
'IT40',
'IT41',
'IT42',
'IT43',
'IT44',
'IT45',
'IT46',
'IT47',
'IT48',
'IT49',
'IT50',
'IT51',
'IT52',
'IT53',
'IT54',
'IT55',
'IT56',
'IT57',
'IT58',
'IT59',
'IT60',
'IT61',
'IT62'
  ];
  // Die Liste zufällig mischen
  shuffle($fragen);
  // Die Rotation für eine eventuelle Wiederholung der Seite zwischenspeichern
  registerVariable($fragen);
}

// Teil 2: Fragen getrennt auf seperaten Seiten anzeigen 
$i = loopPage(count($fragen));
question($fragen[$i]);

// Attention Check an fester Position in der Mitte plazieren
array_splice($fragen, 30, 0, ['IT63']);  // "IT63" attention check an Index 30 einfügen
in SoSci Survey (dt.) by s077420 (110 points)
edited by s077420
Für eine konstruktive Antwort muss ich Sie bitten, dass Sie den Anwendungsfall ein wenig genauer schildern. Insbesondere: Von welchem Fragetyp sprechen wir, werden Fragen oder Items randomisiert, und welchen PHP-Code genau verwenden Sie dafür?
Vielen Dank für die schnelle Antwort! Es handelt sich um die Vorstudie für meine Masterarbeit in Psychologie, bei der die Teilnehmer Texte zur Frauenquote bewerten sollen.
Es werden Items randomisiert, die jeweils aus einem Bild (selbsterstellte kurze Texte, die aussehen wie Social Media Posts) und einer Frage, Typ "Skala (Extrema beschriftet)" bestehen (Wortlaut: "Wie bewerten Sie bei diesem Text die Einstellung zur Frauenquote?", 9 Skalen-Punkte von "sehr stark dagegen" bis "sehr stark dafür").
Für die Randomisierung verwende ich aktuell keinen Code, sondern den Fragetyp "Zufallsgenerator", wo ich alle Items, inklusive Attention Check als Zettel eingetragen habe und bei der Ziehung habe ich eingestellt, dass alle Items gezogen werden und als Art der Ziehung "Gleichverteilung in abgeschlossenen Fragebögen (Ziehen ohne Zurücklegen)". Diesen Zufallsgenerator habe ich dann als eine Seite eingebaut bei "Fragebogen zusammenstellen".
Gut, der Zufallsgenerator sollte nun brav Zahlen in den Datensatz schreiben, wenn Sie ihn aufrufen. Mehr macht der Zufallsgenerator nicht. Wenn Sie auf Basis dieser Zahlen etwas anzeigen möchten, dann brauchen Sie dafür PHP-Code.

Der Attention Check in der Mitte ist nicht weiter schlimm. Den können Sie mittels array_slice() an geeigneter Stelle einfügen. Aber erst einmal brauchen Sie einen hübschen PHP-Code mit loopPage() - falls Sie Items auf unterschiedlichen Seiten präsentiert werden sollen - auf dessen Basis wir die Ergänzung des Attention Check dann vornehmen können. Posten Sie Ihren Code gerne, wenn Sie ein wenig gebaut bzw. aus der Anleitung kopiert haben.
Verstehe ich es richtig, dass ich einen Zufallsgenerator brauche und zusätzlich PHP-Code, den ich bei "Fragebogen zusammenstellen" auf der Seite des Zufallsgenerators darunter einfüge?

Ich habe bisher nie mit PHP-Code gearbeitet, nur mit R, aber ich habe jetzt mit verschiedenen Anleitungen einen Code gebastelt, den ich oben an die Frage angehängt habe. Jedoch funktioniert der Code noch nicht, ich bekomme folgende Fehler- und Warnmeldungen, die ich aktuell noch nicht verstehe:


Fehler im Fragebogen (Seite 6)
Die Angabe label in der Funktion valueList() ist keine gültige Liste oder Angabe von Item-Kennungen.


Warnung (Seite 6)
In setPageOrder() wurde eine Seite "IT63" angegeben, die es im Fragebogen nicht gibt.

"IT63" ist der Attention Check, in einer Anleitung hieß es, dass das Element, das an eine feste Position soll, nicht in den Zufallsgenerator soll, muss ich das also einzeln auf eine Seite im Fragebogen einbauen?


Warnung (Seite 6)
In setPageOrder() wurde eine Seite "posttest" angegeben, die es im Fragebogen nicht gibt.


Warnung (Seite 6)
In der Funktion setPageOrder() wurde keine Seitenabfolge definiert. Die Funktion wird ignoriert.

1 Answer

0 votes

Verstehe ich es richtig, dass ich einen Zufallsgenerator brauche und zusätzlich PHP-Code, den ich bei "Fragebogen zusammenstellen" auf der Seite des Zufallsgenerators darunter einfüge?

Ja und nein. Sie haben vielleicht schon diese Anleitung gefunden:
Einzelne Seiten an fester Position

Hier das "nein" begründet: Im Prinzip haben Sie zum Mischen zwei Möglichkeiten. Entweder Sie verwenden einen Zufallsgenerator oder Sie verwenden ein Array und mischen dieses mittels shuffle(). Suchen Sie sich eine der beiden Lösungen aus und entfernen Sie die andere aus dem Code.

Jedoch funktioniert der Code noch nicht

Sie vermischen zusätzlich noch loopPage() und setPageOrder(). Bitte sehen Sie sich die Bedeutung beider Befehle mal in der Anleitung an. Aus meiner Sicht wäre die Variante mit loopPage() in Ihrem Fall die deutlich einfachere Variante.

by SoSci Survey (238k points)
Vielen Dank für die hilfreiche Antwort, ich habe im Code (siehe oben) jetzt das Array mit shuffle() und dann loopPage().
Jedoch wird jetzt ab dem Attention Check nur noch der Attention Check wiederholt präsentiert und nicht mehr die restlichen Items und ich verstehe nicht wieso.
Sie haben oben einen IF-Filter um die Definition und Mischung des Array - dieser Teil wird durch das registerVariable() und isset() nur einmalig im Interview ausgeführt.

Der Teil danach wird bei jeder wiederholung angezeigt. Und das betrofft auch diese Zeile:

array_splice($fragen, 30, 0, ['IT63']);

Diese Zeile fügt bei jeder Wiederholung der Seite Ihren Attention Check an Position 30 ein. Da kommen einige zusammen. Nehmen Sie diese Zeile einfach unter das shuffle() in den IF-Filter oben.
Vielen Dank, jetzt klappt es!
...