0 votes
in SoSci Survey (dt.) by s064032 (135 points)
closed by SoSci Survey

Ich habe einen Fragebogen mit 97 Items, wobei Versuchspersonen gezeigtes Bildmaterial in drei Kategorien einteilen müssen (24 x Kategorie FTI, 24 x Kategorie RTI, 49 x Kategorie neutral). Um die Auswirkungen eines Items auf das nächste zu kontrollieren, habe ich fünf verschiedene Reihenfolgen, auf welche die Versuchspersonen randomisiert werden. Der PHP-Code dazu sieht folgendermassen aus:

if (!isset($questions)) {

$F = array('AI01', 'AI02', 'AI03', 'AI04', 'AI05', 
'AI06', 'AI07', 'AI08', 'AI09', 'AI10',
'AI11', 'AI12', 'AI13', 'AI14', 'AI15',
'AI16', 'AI17', 'AI18', 'AI19', 'AI20',
'AI21', 'AI22', 'AI23', 'AI24');

$R = array('AI25', 'AI26', 'AI27', 'AI28', 'AI29', 
'AI30', 'AI31', 'AI32', 'AI33', 'AI34',
'AI35', 'AI36', 'AI37', 'AI38', 'AI39',
'AI40', 'AI41', 'AI42', 'AI43', 'AI44',
'AI45', 'AI46', 'AI47', 'AI48');

$N = array('AI49', 'AI50', 'AI51', 'AI52', 'AI53', 
'AI54', 'AI55', 'AI56', 'AI57', 'AI58',
'AI59', 'AI60', 'AI61', 'AI62', 'AI63',
'AI64', 'AI65', 'AI66', 'AI67', 'AI68',
'AI69', 'AI70', 'AI71', 'AI72', 'AI73',
'AI74', 'AI75', 'AI76', 'AI77', 'AI78', 
'AI79', 'AI80', 'AI81', 'AI82', 'AI83',
'AI84', 'AI85', 'AI86', 'AI87', 'AI88',
'AI89', 'AI90', 'AI91', 'AI92', 'AI93',
'AI94', 'AI95', 'AI96', 'AI97');

shuffle($F);

shuffle($R);

shuffle($N);

$order = array(
  array('N', 0),
  array('N', 1),
  array('N', 2),
  array('R', 0),
  array('N', 3),
  array('N', 4),
  array('N', 5),
  array('N', 6),
  array('N', 7),
  array('F', 0),
  array('N', 8),
  array('N', 9),
  array('N', 10),
  array('R', 1),
  array('N', 11),
  array('R', 2),
  array('R', 3),
  array('F', 1),
  array('F', 2),
  array('F', 3),
  array('N', 12),
  array('F', 4),
  array('R', 4),
  array('R', 5),
  array('N', 13),
  array('N', 14),
  array('N', 15),
  array('N', 16),
  array('N', 17),
  array('N', 18),
  array('N', 19),
  array('N', 20),
  array('N', 21),
  array('N', 22),
  array('F', 5),
  array('F', 6),
  array('R', 6),
  array('R', 7),
  array('N', 23),
  array('N', 24),
  array('N', 25),
  array('R', 8),
  array('F', 7),
  array('F', 8),
  array('R', 9),
  array('N', 26),
  array('N', 27),
  array('N', 28),
  array('F', 9),
  array('F', 10),
  array('N', 29),
  array('R', 10),
  array('N', 30),
  array('N', 31),
  array('N', 32),
  array('N', 33),
  array('F', 11),
  array('R', 11),
  array('R', 12),
  array('F', 12),
  array('N', 34),
  array('N', 35),
  array('R', 13),
  array('R', 14),
  array('F', 13),
  array('N', 36),
  array('F', 14),
  array('F', 15),
  array('F', 16),
  array('R', 15),
  array('N', 37),
  array('F', 17),
  array('R', 16),
  array('F', 18),
  array('R', 17),
  array('F', 19),
  array('N', 38),
  array('N', 39),
  array('N', 40),
  array('R', 18),
  array('F', 20),
  array('F', 21),
  array('R', 19),
  array('R', 20),
  array('R', 21),
  array('F', 22),
  array('N', 41),
  array('N', 42),
  array('N', 43),
  array('R', 22),
  array('R', 23), 
  array('N', 44),
  array('N', 45),
  array('N', 46),
  array('F', 23),
  array('N', 47),
  array('N', 48),

);

$questions = array();
  foreach ($order as $entry) {
    $index = $entry[1]; 
    if ($entry[0] == 'F') {
      $questionID = $F[$index];
    } elseif ($entry[0] == 'R') {
      $questionID = $R[$index];
    } elseif ($entry[0] == 'N') {
      $questionID = $N[$index];
    } else {
      html('<p>Fehlerhafter Code: '.$entry[0].'</p>');
    }
    $questions[] = $questionID;
  }
  registerVariable($question);
dbSet(caseNumber(), implode("|", $questions));
}

$i = loopPage(count($questions));
question($questions[$i]);

Nun habe ich das Problem, dass einige Items (Typ Auswahl-Abfolge) automatisch übersprungen werden, wodurch bei den erhobenen Daten bei jedem Fragebogen eine zufällige Anzahl an "nicht abgefragt oder für MISSING nicht relevant" angezeigt wird.

Können Sie mir bei diesem Problem weiterhelfen?

closed with the note: Es liegen keine neuen Informationen zur Frage vor.
by SoSci Survey (327k points)
Tipp: Verwenden Sie den Knopf {}, damit Code auch als solcher angezeigt wird.
by SoSci Survey (327k points)
Könnten Sie kurz spezifizieren, was "automatisch übersprungen" hier bedeutet? Werden die Fragen einfach gar nicht angezeigt oder werden sie kurz angezeigt - aber eben nur kurz? Folgen die fehlenden Daten irgend einem Muster (z.B. immer dieselben Variablen oder immer an derselben Position)? Wenn Sie beim Ausfüllen "live" in der Debug-Information und anhand des Eintrags in der "Datenbank für Inhalte" mitlesen ... sehen Sie dann in der Debug-Infomation irgendwelche Angaben zu den Variablen, die am Schluss fehlen?
by s064032 (135 points)
Die übersprungene Frage wird ganz kurz angezeigt, teilweise kaum sichtbar. Die fehlenden Daten folgen keinem Muster. Bei den Debug-Informationen werden keine Angaben zu den übersprungenen Items gemacht. In der "Datenbank für Inhalte" werden hingegen jeweils alle Items aufgeführt, auch die nur ganz kurz gezeigten, die nicht ausgefüllt werden können.
Was vielleicht noch einen Einfluss haben kann: Es sind alles Auswahl-Abfolge Items mit nur einer Teilfrage. Obwohl die Zeiten verzerrt sind, war das die einzige Möglichkeit, die ich gesehen habe, um die Reaktionszeiten für die einzelnen Items innerhalb der vorgegebenen Reihenfolge zu erfassen...
by SoSci Survey (327k points)
> Die übersprungene Frage wird ganz kurz angezeigt, teilweise kaum sichtbar.

Dann wird vermutlich eine Fragen erneut angezeigt, die bereits vorher beantwortet wurde (auch wenn ich auf den ersten Blick keinen offensichtichen Fehler im PHP-Code sehe, der dafür verantwortlich sein könnte). Könnten Sie das in der Debug-Information einmal verfolgen?

Was wird denn in den übersprungenen Fragen als Antwort-Code gespeichert? Auch das sollte in der Debug-Information ersichtlich sein.
by s064032 (135 points)
Vielen Dank für das rasche Antworten!
Die übersprungenen Fragen sind nicht solche, die schon gezeigt wurden. Im Antwort-Code wird nichts gespeichert, sie gelten als unbeantwortet. Obwohl die Debug-Information angibt, dass 100% der Fragen beantwortet wurden...
Ich habe auch noch versucht, den PHP-Code anders zu formulieren, sodass ich mögliche Fehler eliminieren könnte.

{ $order = array('N', 'N', 'N', 'N', 'N', 'N', 'F', 'N', 'R',
'F', 'F', 'F', 'R', 'F', 'F', 'R', 'F', 'F', 'F', 'R', 'N',
'N', 'N', 'N', 'N', 'N', 'N', 'N', 'R', 'F', 'R', 'R', 'R',
'R', 'N', 'F', 'N', 'R', 'R', 'N', 'N', 'N', 'N', 'N', 'R',
'F', 'N', 'F', 'F', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'F',
'N', 'F', 'R', 'R', 'N', 'N', 'N', 'N', 'R', 'R', 'F', 'N'.
'F', 'R', 'N', 'N', 'N', 'R', 'N', 'R', 'N', 'N', 'N', 'F',
'N', 'N', 'R', 'F', 'R', 'R', 'R', 'N', 'F', 'F', 'R', 'F',
'F', 'N', 'N', 'N');
}

Das führte aber zum selben Resultat...
by SoSci Survey (327k points)
Wie gesagt: Für eine weitergehende Analyse benötige ich die Debug-Information (https://www.soscisurvey.de/help/doku.php/de:create:debugging) und im Idealfall noch einen Pretest-Link direkt (!) zur betroffenen Seite, der die Debug-Information anzeigt.
by s064032 (135 points)
edited by s064032
Ich habe die Lösung gefunden. Mir fehlte ein registerVariable im PHP... Aber vielen Dank für die Unterstützung!
by SoSci Survey (327k points)
Aber im PHP-Code Ihrer Frage steht am Ende des IF-Filters doch

registerVariable($question);

Welches weitere registerVariable() haben Sie denn noch ergänzt?!

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

...