0 votes
in SoSci Survey (dt.) by s005748 (175 points)

Hallo zusammen,

ich habe in einem Fragebogen mit php-Code und Zufallsgeneratoren verschiedene Fragen randomisiert. Als kurzen Überblick: Es gibt 10 Fragen in jeweils zwei verschiedenen Bedingungen (A und B). Ich habe das ganze so eingestellt, dass jeweils 5 Fragen aus Bedingung A und 5 Fragen aus Bedingung B gezogen werden (ohne, dass sich die Paare jeweils überschneiden - wenn also Frage 4A gezogen wird, wird nicht auch 4B gezogen). Entweder werden dann zunächst die 5 Fragen aus Bedingung A gezeigt und dann die 5 aus B oder anders herum.

Ich habe den Code getestet, als die Antwortpflicht bei jeder der Fragen eingestellt war. Da hat alles so funktioniert, wie es sollte. Jetzt haben wir uns umentschieden und wollten die Nachhaken-Option verwenden. Wenn man sich jetzt aber mehrfach hintereinander für die Nachhaken-und-Weiter-Option statt einer Antwort entscheidet, scheint die Randomisierung nicht mehr zu funktionieren. Es werden willkürlich andere Szenarien aus beiden Bedingungen angezeigt und teilweise werden dann auch mehr als 10 Szenarien insgesamt angezeigt. Zusätzlich werden teilweise die Antworten aus vorherigen Fragen übernommen und sind dann quasi schon voreingestellt.

Da der Code funktioniert, wenn man auf jede Frage eine Antwort gibt, verstehe ich nicht, wo genau hier das Problem liegt und wie ich das beheben kann. Vielleicht hat da jemand eine Idee?

Liebe Grüße

by SoSci Survey (368k points)
Posten sie doch bitte mal den PHP-Code, den Sie verwenden. Ihre Beschreibung deutet darauf hin, dass dort außer den Zufallsgeneratoren noch weitere Mechnismen zum Einsatz kommen, die nicht robust ggü. der wiederholten Anzeige einer Fragebogen-Seite sind.
by s005748 (175 points)
Ich habe den Code als Antwort hier auf die Frage hochgeladen.

1 Answer

0 votes
by s005748 (175 points)

Ich habe einen Zufallsgenerator (1 oder 2) für die Seitenabfolge und dazu diesen Code ("Ich" und "Partner" sind die Bedingungen A und B):

$zahl = value('CO02');

if ($zahl == 1) {
setPageOrder('Ich1','Ich2','Ich3','Ich4','Ich5','Partner1','Partner2','Partner3','Partner4','Partner5');
} elseif ($zahl == 2) {
setPageOrder('Partner1','Partner2','Partner3','Partner4','Partner5','Ich1','Ich2','Ich3','Ich4','Ich5');
}

Und dann habe ich einen Zufallsgenerator (CO01) von 1-10 und dazu diesen Code (s.u.) auf jeweils einer einzelnen Seite fortlaufend.
Der value läuft von CO01x01 bis CO01x10
Die Kennung SC steht für die Fragen der Ich-Bedingung (A) und PC für die Fragen aus der Partner-Bedingung (B).

Beispiel für den Code auf Seite "Ich1"

if (value('CO01x01') == 1) {
question('SC01'); question('SC02');
} else if (value('CO01x01') == 2) {
question('SC03'); question('SC04');
} else if (value('CO01x01') == 3) {
question('SC05'); question('SC06');
} else if (value('CO01x01') == 4) {
question('SC07'); question('SC08');
} else if (value('CO01x01') == 5) {
question('SC09'); question('SC10');
} else if (value('CO01x01') == 6) {
question('SC11'); question('SC12');
} else if (value('CO01x01') == 7) {
question('SC13'); question('SC14');
} else if (value('CO01x01') == 8) {
question('SC15'); question('SC16');
} else if (value('CO01x01') == 9) {
question('SC17'); question('SC18');
} else if (value('CO01x01') == 10) {
question('SC19'); question('SC20');
}

Beispiel für Code auf Seite Partner2:

if (value('CO01x07') == 1) {
question('PC01'); question('PC02');
} else if (value('CO01x07') == 2) {
question('PC03'); question('PC04');
} else if (value('CO01x07') == 3) {
question('PC05'); question('PC06');
} else if (value('CO01x07') == 4) {
question('PC07'); question('PC08');
} else if (value('CO01x07') == 5) {
question('PC09'); question('PC10');
} else if (value('CO01x07') == 6) {
question('PC11'); question('PC12');
} else if (value('CO01x07') == 7) {
question('PC13'); question('PC14');
} else if (value('CO01x07') == 8) {
question('PC15'); question('PC16');
} else if (value('CO01x07') == 9) {
question('PC17'); question('PC18');
} else if (value('CO01x07') == 10) {
question('PC19'); question('PC20');
}

by SoSci Survey (368k points)
Danke für die Details. Das sieht soweit eigentlich unverfänglich aus.

setPageOrder() hat beim Nachhaken mitunter Probleme, wenn leere Seiten enthalten sind, aber das scheint hier nicht der Fall zu sein.

Okay, dann machen Sie bitte als nächstes Folgendes, um den Fehler einzugrenzen: Starten Sie ein Interview im Debug-Modus, klicken Sie bis zur zweiten Seite innerhalb der Seitenabfolge, kopieren Sie die Debug-Information von der Seite in einen Kommerntar hier in die Frage, lassen Sie die Fragen auf der Seite unbeantwortet, klicken sie auf "Weiter" (laut Ihre Beschreibung kommt dann nicht die korrekte Seite?) und kopieren Sie auch die dann angezeigte Debug-Information.
ago by s005748 (175 points)
Ich habe leider noch kein System erkannt, wann der Fehler auftritt und wann nicht. Bisher war es immer, wenn man ein paar mal die Fragen beantwortet hat und dann mehrfach hintereinander die Nachhaken-Option nutzt.
Ich habe jetzt die beiden Fragen auf der ersten Seite beantwortet und ganz normal auf "Weiter" geklickt:

[Information]    Interview Nummer 102 wird fortgesetzt
[Information]    Der Fragebogen base im Projekt ProjektSRP2_2526 wird verwendet
[Information]    Die Verweildauer auf Seite 4 war 20 Sekunden
[Verarbeitung]    Lese Antworten von Seite 4
[Information]    Antwort auf SC05_01 = 5
[Information]    Antwort auf SC06_01 = 5
[Information]    Fragen bisher zu 100% vollständig beantwortet
[Information]    Entsprechend der vorher festgelegten Seitenabfolge wird Seite 5 [Ich2] angezeigt
[Verarbeitung]    Erstelle Seite 5 in Fragebogen base
[Information]    value("CO01x02") = 6
[Information]    value("CO01x02") = 6
[Information]    value("CO01x02") = 6
[Information]    value("CO01x02") = 6
[Information]    value("CO01x02") = 6
[Information]    value("CO01x02") = 6
[Inhalt]    Erstelle Frage SC11
[Inhalt]    Erstelle Frage SC12
[Information]    Speicherbedarf RAM 1.0 MB (Seiteninhalt 0.2 MB)

Dann habe ich noch 2x die Fragen beantwortet und dann immer nur noch übersprungen, bis dann bei einer Seite die Antworten schon voreingestellt waren:

[Information]    Interview Nummer 103 wird fortgesetzt
[Information]    Der Fragebogen base im Projekt ProjektSRP2_2526 wird verwendet
[Information]    Die Verweildauer auf Seite 8 betrug zusätzliche 2 Sekunden
[Verarbeitung]    Lese Antworten von Seite 8
[Information]    Ignoriere fehlende Antwort SC13_01 (Nachgehakt)
[Information]    Keine Antwort für SC13_01
[Information]    Ignoriere fehlende Antwort SC14_01 (Nachgehakt)
[Information]    Keine Antwort für SC14_01
[Information]    Fragen bisher zu 36% vollständig beantwortet
[Verarbeitung]    Erstelle Seite 9 in Fragebogen base
[Information]    value("CO01x06") = 3
[Information]    value("CO01x06") = 3
[Information]    value("CO01x06") = 3
[Inhalt]    Erstelle Frage PC05
[Inhalt]    Erstelle Frage PC06
[Information]    Speicherbedarf RAM 1.0 MB (Seiteninhalt 0.2 MB)

Dann die nächste Seite (dort wird angezeigt, dass ich 5 und 6 auf die Fragen geantwortet habe, aber diese Antwort war eben schon vorausgewählt):

[Information]    Interview Nummer 103 wird fortgesetzt
[Information]    Der Fragebogen base im Projekt ProjektSRP2_2526 wird verwendet
[Information]    Die Verweildauer auf Seite 10 betrug zusätzliche 5 Sekunden
[Verarbeitung]    Lese Antworten von Seite 10
[Information]    Antwort auf PC05_01 = 5
[Information]    Antwort auf PC06_01 = 6
[Information]    Fragen bisher zu 36% vollständig beantwortet
[Verarbeitung]    Erstelle Seite 11 in Fragebogen base
[Information]    value("CO01x08") = 5
[Information]    value("CO01x08") = 5
[Information]    value("CO01x08") = 5
[Information]    value("CO01x08") = 5
[Information]    value("CO01x08") = 5
[Inhalt]    Erstelle Frage PC09
[Inhalt]    Erstelle Frage PC10
[Information]    Speicherbedarf RAM 1.0 MB (Seiteninhalt 0.2 MB)

Danach sind alle weiteren Fragen auch schon vorausgewählt und in falscher Randomisierung/Anzahl gewesen, bis dann irgendwann der restliche Fragebogen angezeigt wurde, der nichts mehr mit dieser Seitenabfolge hier zu tun hat und problemlos funktioniert.
ago by SoSci Survey (368k points)
Die Seite mit dem setPageOrder() steht nicht auf einer der Seiten, welche in der Seitenabfolge definiert werden, richtig?

Verwenden Sie auf irgend einer anderen Seite noch einen der Befehle setPageOrder(), setNextPage(), goToPage(), loopPage() oder loopToPage() ... also einen Befehl, der sich auf die Seitenabfolge auswirkt?

> [Information]    Entsprechend der vorher festgelegten Seitenabfolge wird Seite ... angezeigt

Diese Info ist beim ersten Mal noch enthalten, fehlt dann aber weiter unten. Das bedeutet, dass die Seitenabfolge zwischenzeitlich deaktiviert wurde.
ago by s005748 (175 points)
Der Code mit setPageOrder() steht zusammen mit den beiden Zufallsgeneratoren auf der Seite bevor die eigentliche randomisierte Seitenabfolge beginnen soll. Sonst gibt es im Fragebogen keinen Befehl, der sich auf die Seitenabfolge auswirkt. Ich habe an einer Stelle nochmal Fragen auf einer Seite randomisiert, aber das findet alles nur innerhalb einer Seite statt (der Code dazu ist sonst nochmal unten reinkopiert).
Komisch, dass die Seitenabfolge dann deaktiviert wird. Im Modus mit Antwortpflicht bzw. auch bei der Nachhaken-Option, solange man alles beantwortet, funktioniert die Abfolge ja korrekt.



$fragen = valueList('BE09', NULL, 'label');
 
foreach ($fragen as $kennung) {
  question($kennung);
}
ago by SoSci Survey (368k points)
Das Nachhaken alleine sollte keine Auswirkung auf die Seitenabfolge haben. Zumal die Seitenabfolge lt.den obigen Debug-Informationen schon auf der zweiten Seite deaktiviert war, als Sie noch gar nicht nachgehakt hatten?!
ago by s005748 (175 points)
Und wissen Sie vielleicht eine Lösung, wie man das Problem beheben oder umgehen kann?
ago by SoSci Survey (368k points)
Soll ich mir das Problem einmal direkt in Ihrem Befragungsprojekt ansehen? Wenn ja, dann würde ich sie bitten, dass Sie mir den Namen des Projekt verraten.
ago by s005748 (175 points)
Das Projekt lautet "Main Study Hypercrisy ws Projektarbeit2526". Ich habe leider nicht alle Freigaben dafür, reicht der Name des Projekts?
ago by SoSci Survey (368k points)
Ich, das reicht. Sie haben soeben eine E-Mail bekommen, dass ich einen Administrator-Login erstellt habe.

Folgender Fehler, der mir erst auf den dritten Blick auffällt:

if ($zahl == 1) {
setPageOrder('Ich1','Ich2','Ich3','Ich4','Ich5','Partner1','Partner2','Partner3','Partner4','Partner5');
} elseif ($zahl == 2) {
setPageOrder('Partner1','Partner2','Partner3','Partner4','Partner5','Ich1','Ich2','Ich3','Ich4','Ich5');
}

Da muss jeweils noch 'Beziehungszufriedenheit' als letzte Seite ergänzt werden, damit es nach den ersten 10 Seiten an der korrekten Stelle weitergeht.

Das erklärt aber noch nicht das von Ihnen beschrieben Problem, das sehe ich mir gleich weiter an.
ago by SoSci Survey (368k points)
Das beschrieben Problem konnte ich bei einem Testlauf nicht replizieren. Ich habe auf Seite 3 gestartet, und egal was ich beim nachhaken gemacht habe, es kommt in der Debug-Information immer korrekt

[Information] Entsprechend der vorher festgelegten Seitenabfolge wird Seite ... angezeigt

Sind Sie sicher, dass das Problem nicht erst nach dem Durchklicken von 10 Seiten aufgetreten ist, als das Ende der Seitenabfolge erreicht war, und SoSci Survey im zweiten Fall nach 'Ich5' einfach nicht wusste, wo es weitermachen soll?
ago by s005748 (175 points)
Ich konnte das Problem zunächst auch nicht replizieren. Aber mehrere Personen, die den Fragebogen getestet haben, berichten dieses Problem. Beim letzten Mal, wo es aufgetreten ist, habe ich erstmal ca. 3 Seiten der Seitenabfolge beantwortet. Daraufhin habe ich immer weiter die Nachhaken-Option verwendet. Dann kommt das Problem meistens (aber meiner Meinung nach auch nicht immer, was ich tatsächlich noch weniger nachvollziehen kann). Ich werde die letzte Seite mit "Beziehungszufriedenheit" jetzt kurz in den Code hinzufügen, damit das Problem schonmal behoben ist, und es dann auch nochmal austesten
ago by s005748 (175 points)
Ich vermute, das Problem ist somit behoben. Es taucht bei mir zumindest in mehreren Durchgängen nicht mehr auf. Ich werde es noch einmal anderen Personen zum testen geben, sonst melde ich mich ggf. nochmal.

Sie haben vermutlich Recht, dass es an der "Beziehungszufriedenheit" lag. Die Fälle, in denen es problemlos funktioniert hat, waren vermutlich die, wo die erste Seitenabfolge ausgelost wurde und nach den Partner Seiten ohnehin als nächstes die Beziehungszufriedenheit angezeigt wurde. Und Probleme gab es vermutlich immer dann, wenn zuerst die Partner-Seiten angezeigt wurden - wenn die Ich-Seiten dann beantwortet waren, wurden die gleichen Partnerseiten nochmal angezeigt und das würde dann auch die "vorhereingestellten" Antworten erklären.

Haben Sie vielen Dank, das habe ich völlig übersehen, obwohl ich mir sehr lange den Kopf darüber zerbrochen habe!

Warum die Randomisierung dann bei Antwortpflicht aber funktioniert hat, frage ich mich dennoch.

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

...