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,

mir ist leider erst während der Datenerhebung aufgefallen, dass es praktisch sein könnte die Reihenfolge der zufällig angezeigten Fragebogenseiten pro teilnehmender Person zu haben.

Bisher habe ich folgenden funktionierenden PHP-Code zur Rotation der Fragebogenseiten verwendet:

if (!isset($seiten)) {
$seiten = array('TR01', 'TR02', 'TR03', 'TR04', 'TR05', 'TR06', 'IN01', 'IN02', 'IN03', 'IN04', 'TV01', 'TV02', 'TV03', 'TV04', 'CD01', 'CD02', 'CD03', 'CD04', 'PE01', 'PE02');
shuffle($seiten);
$seiten[] = 'TYPINT';
 registerVariable($seiten);
}
setPageOrder($seiten);

Da die Datenerhebung wie gesagt schon läuft, möchte ich nicht groß rumprobieren müssen, deswegen meine Frage: fällt jemand ein Fehler in meinem umgeschriebenen Code nach der Anleitung unter https://www.soscisurvey.de/help/doku.php/de:create:functions:put#beispielrandomisierung_i
auf, oder sollte das so funktionieren?

if (!isset($seiten)) {
$seiten = array('TR01', 'TR02', 'TR03', 'TR04', 'TR05', 'TR06', 'IN01', 'IN02', 'IN03', 'IN04', 'TV01', 'TV02', 'TV03', 'TV04', 'CD01', 'CD02', 'CD03', 'CD04', 'PE01', 'PE02');
$indices = array_keys($seiten);
shuffle($indices);
$random = array();
for ($i=0; $i<count($indices); $i++) {
 $id = id('IV01', $indices[$i] + 1);
  put($id, $i + 1);
  $random[$i] = $pages[$indices[$i]];
 registerVariable($seiten);
}
setPageOrder($random, 'TYPINT');

Außerdem:
Muss ich die Variable IV01 irgendwo erstellen bzw. was genau bedeutet "interne Variable aus Frage-Kennung"? Wo finde ich diese bzw. wie erstelle ich diese?
Und (wenn es dann funktioniert) wie genau wird die Rangfolge im Datensatz gespeichert?

in SoSci Survey (dt.) by s115627 (460 points)

1 Answer

+1 vote
 
Best answer

Muss ich die Variable IV01 irgendwo erstellen

Fange wir mal damit an: Ja. Und zwar brauchen Sie eine Frage vom Typ "interne Variablen". Darin müssen Sie so viele Variablen (Items) anlegen wie Sie Seiten in der Rotation haben.

Apropos "könnte ganz praktisch sein": Überlegen Sie sich gut, ob es das wert ist, die laufende Erhebung zu gefährden. Ein Restrisiko bleibt immer - und wenn Sie die Daten ohnehin nur für die Hälfte der Datensätze haben, ist der Nutzwert in der Auswertung beschränkt.

Und (wenn es dann funktioniert) wie genau wird die Rangfolge im Datensatz gespeichert?

Sie haben den Code für die Ränge verwendet. Wenn die Variable IV01_01 für die erste Seite (TR01) steht und diese an Position 5 kommt, dann wird in IV01_01 der Code 5 abgespeichert.

Ich sehe im PHP-Code keine groben Fehler. Das muss aber nicht heißen, dass es auf Anhieb klappt. Einen kleinen technischen Test sollten Sie auf jeden Fall machen.

Tipp: Legen Sie innerhalb des Befragungsprojekt eine Kopie des Fragebogens an, nehmen Sie die Änderungen an der Kopie vor, testen sie, und ändern Sie dann den Standard-Fragebogen.

by SoSci Survey (223k points)
selected by s115627
Wenn ich im Code noch 'pages' durch 'seiten' ersetze, funktioniert es in der Kopie des Fragebogens ohne Fehlermeldung. Ist es dann sicher, den Code in den tatsächlichen Fragebogen zu übernehmen, oder sind noch andere Vortests notwendig?
Machen Sie einen gründlichen Test des neuen Fragebogens. Und dann ändern Sie unter "Fragebögen verwalten" den Standard-Fragebogen. Dadurch werden neue Teilnehmer auf den neuen Fragebogen geleitet und Sie können im Datensatz nachvollziehen, wer welchenm Fragebogen ausgefüllt hat.
Vielen Dank für die schnelle Antwort.
Mit gründlichem Test meinen Sie, den Fragebogen im Testmodus komplett durchzuklicken? Oder noch irgendwelche weiteren Tests?
(Einen Testdatensatz habe ich dann nicht, oder?)
Wenn Sie sonst nichts geändert haben, werden Sie keinen kompletten technischen Funktionstest benötigen. Aber zumindest den Teil mit der rotierten Abfolge und ob die im Datensatz gespeicherten Daten korrekt sind, sollten Sie schon nochmal testen.

> Einen Testdatensatz habe ich dann nicht, oder?

Natürlich :) Im Datensatz klar an der Variable MODE erkennbar.
Vielen Dank für die Hilfe bei der Lösung des Problems.
Ich habe den Code nun im Originalfragebogen ersetzt (natürlich die Zeit und genaue Änderung dokumentiert) und dort auch nochmal getestet, es hat funktioniert, sodass bei der internen Variablen die Werte von 1-20 gespeichert sind. Im kopierten hat mit dem Code auch alles funktioniert, allerdings tauchte dort ein anderer kleiner Bug auf (For the placeholder %BCr% neither an input field by prepare_input() has been created nor any content by using replace().) von dem ich mir nicht erklären konnte, woher er kommt, da ich keinen solchen placeholder verwendet habe.
...