0 votes
in SoSci Survey (dt.) by s143281 (140 points)

Hallo liebe Soscisurvey Community,

Ich habe in meinem Fragebogen mit automatischer Weiterleitung gearbeitet. Die Probanden bekommen für 1 Sekunde ein Fixationskreuz gezeigt, das den neuen Durchgang einleiten soll. Siehe Bild:

Danach folgt auf einer neuen Seite für 8 Sekunden ein weiterer Stimulus. Siehe Bild:

Anschließend erfolgt wieder auf einer neuen Seite die Beantwortung einer Frage, die automatisch nach gegebener Antwort auf den nächsten Zyklus mit Fixation und Stimulus springt. Dieser Vorgang findet 80 mal statt. Ich habe den Fragebogen über einen Fragetypen Zufallsgenerator so programmiert, dass die Abfolge der 80 Trials randomisiert ist. Dies funktioniert soweit alles.

Das Problem ist, dass sich die Inhalte der beiden (eigentlich voneinander unabhängigen) Seiten vermischen/verschmelzen. Es wird also das Fixationskreuz und der Stimulus oder der Stimulus und die Frage gleichzeitig auf einer Seite angezeigt. Siehe Bild:

oder so:

Das komische ist, dass dies nicht immer an den gleichen Stellen vorkommt. Auch die Häufigkeit in der das passiert variiert stark. Es scheint das dieses Problem nur dann auftritt, wenn der Zufallsgenerator aktiv ist...
Haben Sie eine Idee an was das liegen könnte und wie ich dieses Problem umgehen kann?

Viele Grüße

by SoSci Survey (327k points)
> Es scheint das dieses Problem nur dann auftritt, wenn der Zufallsgenerator aktiv ist...

Könnten Sie bitte spezifizieren, wie Sie Frage und Zufallsgenerator gekoppelt haben? Es ist durchaus denkbar, dass sich da noch ein Programmfehler versteckt. Das wäre dann hoffentlich recht einfach zu lösen  :)
by s143281 (140 points)
Ich habe 2 Seitenabfolgen für die zufällige Anordnung erstellt. Einmal für die ersten 40 Trials (RG01); dann folgt eine Pause von 60 Sekunden und dann noch einmal für die zweiten 40 Trails (RG02). In der Bearbeitung der Frage habe ich jeweils 40 Zettel (Inhalte) erstellt. Hier ein kleiner Auszug:

01 = 1a-jump1
02 = 2a-jump2
03 = 3a-jump3
          ...
          ...
40 = 40a-jump40

1a bezieht sich jeweils auf das Fixationskreuz und jump1 ist ein Bildschirm auf dem je nach Antwort eine bestimmte Seite angezeigt wird. Jeder Zettel umfasst damit 5 Seiten des Fragebogens.
Bei "Ziehung" habe ich bei "Anzahl der Zettel pro Interview" → 40 Zettel angegeben, da ich ja möchte, dass alle Probanden sämtliche Trials bearbeiten.

Als php-Code habe ich auf der Seite bevor die Randomisierung der Trials erfolgt folgendes aus den soscisurvey-Hilfeseiten eingefügt:

question('RG01');  // Zettel in zufälliger Reihenfolge ziehen
$pages = valueList('RG01', NULL, 'label');  // Gezogene Zettel auslesen
setPageOrder($pages, 'Pause');  // Seiten als Seitenabfolge definieren

Der Zufallsgenerator an sich funktioniert auch; die Reihenfolge der Trials ist bei jedem Start verschieden. Komisch ist wie gesagt, dass dieses Problem an ganz unterschiedlicher Stelle und Häufigkeit auftritt.

Gibt es evtl. php oder html (oder auch Java) Code, der überprüft ob die vorangegangene Seite vollständig abgebaut wurde, oder Code der das Bild von der Seite "entfernt" und erst dann auf die Weiterschaltung geht?

Ich hoffe das Hilft. Vielen Dank schon mal für Ihre Antwort.
by SoSci Survey (327k points)
Okay, ich denke, ich habe Sie bisher falsch verstanden. Ich dachte, Sie arbeiten mit einer "Zuordnungsaufgabe", wo man das Fixationskreuz automatisch anzeigen lassen kann. Aber nun verstehe ich Sie so, dass Sie eine Unmenge Seiten angelegt haben, um Fixationskreuz(e) und Inhalte anzuzeigen.

Von diesem Vorgehen rate ich ab, denn die Präsentationszeiten sind hier äußerst ungenau.

Nun entnehme ich Ihrer Beschreibung, dass manchmal der Inhalt von zwei Seiten auf einer Seite angezeigt wird. Die wahrscheinlichste Erklärung dafür wäre, dass Sie auf der Seite ein goToPage() stehen haben. Eine weitere Erklärung wäre, dass SoSci Survey nicht bemerkt, dass es schon Inhalte ausgegeben hat.

Daher meine nächste Frage (falls Sie sich nicht ohnehin entscheiden, die Fixationskreuze über einen geeigneten Fragetyp zu realisieren): Was haben Sie alles auf den Seite mit Fixationskreuz, also z.B. auf 1a?
by s143281 (140 points)
Da liegen Sie richtig. Jedes Fixationskreuz, jeder Stimulus, und jede Antwort sind eine eigene Seite im Fragebogen. Hier mal der Link zum Pre-Test des Fragebogens, um eventuelle letzte Unklarheiten zu beseitigen.

https://www.soscisurvey.de/10D12S79T_45/?act=1K6Kd162ZL6yhUO2XeoRae1Z

Danke auch für den Hinweis mit den Präsentationszeiten.

>>Nun entnehme ich Ihrer Beschreibung, dass manchmal der Inhalt von zwei Seiten
>>auf einer Seite angezeigt wird.
Genau

>>Die wahrscheinlichste Erklärung dafür wäre, dass Sie auf der Seite ein goToPage()
>>stehen haben.
Ich glaube es wird mit der submitPage() Funktion gearbeitet. Der php-Code ist folgender:

if (!isset($time0)) {
  $time0 = time();
  registerVariable('time0');  // store variable $time0 after the end of the PHP code as well
}
// Check if time has already expired
// (e.g. because the participant reloaded the page)
$timer = 2;  // participant has 2 60 seconds
if (time() >= $time0 + $timer) {
  goToPage('next');
}
// JavaScript code has to be told the time remaining
$remain = $time0 + $timer - time();
replace('%remain%', $remain);


Und anschließend der HTML / Java Code:

<script type="text/javascript">
<!--
 
// Function to forward
function goNext() {

  // Forward participant onto the next page
  SoSciTools.submitPage();
}
 
// Hide next button (optional)
SoSciTools.submitButtonsHide();
 
// Initialization of forwarding
SoSciTools.attachEvent(window, "load", function(evt) {
 
  // Start timer to forward automatically
  window.setTimeout(goNext, %remain% * 1000);
});
// -->
</script>


>>Eine weitere Erklärung wäre, dass SoSci Survey nicht bemerkt, dass es
>> schon Inhalte ausgegeben hat.
Lässt sich dies irgendwie umgehen oder vermeiden?

>>Daher meine nächste Frage (falls Sie sich nicht ohnehin entscheiden,
>>die Fixationskreuze über einen geeigneten Fragetyp zu realisieren)
Mit welchem Fragetyp ließe sich das realisieren?

>>Was haben Sie alles auf den Seite mit Fixationskreuz, also z.B. auf 1a?
Den obenstehenden php und HTML Code und ansonsten lediglich das zentriert eingefügt Bild des Fixationskreuzes.

1 Answer

0 votes
by SoSci Survey (327k points)

Meines Erachtens liegt das Problem hier:

if (!isset($time0)) {
  $time0 = time();
  registerVariable('time0');  // store variable $time0 after the end of the PHP code as well
}
// Check if time has already expired
// (e.g. because the participant reloaded the page)
$timer = 2;  // participant has 2 60 seconds
if (time() >= $time0 + $timer) {
  goToPage('next');
}

Diese Konstruktion mit einem isset(), registerVariable() und dem goToPage() ist dann sinnvoll, wenn ich verhindern möchte, dass ein Befragter den Timer umgeht, indem der die Seite neu lädt oder den Zurück-Knopf verwendet.

In Ihrem Fall müssten Sie aber für jedes Set eine andere Variable verwenden als $time0, weil die Idee hinter der o.g. Kombination ja gerade ist, dass man da eine fixe Zeit speichert, die dann fortan immer gültig ist.

Aber nachdem es bei 2 Sekunden m.E. ohnehin wenig Sinn ergibt, würde ich den o.g. Teil einfach rauslassen und beim

replace('%remain%', $remain);

dann ändern in

replace('%remain%', 2);

Unabhängig davon verweise ich nochmal auf meinen Kommentar, dass Ihre Lösung vielleicht nicht die eleganteste ist - und schon gar nicht jene, bei der Sie die Zeiten zuverlässig einhalten. Sie müssten mit Lasezeiten zwischen den Seiten mit einer Verzögerung (=Ungenauigkeit) bis zu 5 Sekunden rechen.

by s143281 (140 points)
>>In Ihrem Fall müssten Sie aber für jedes Set eine andere Variable verwenden
>>als $time0, weil die Idee hinter der o.g. Kombination ja gerade ist, dass man da
>>eine fixe Zeit speichert, die dann fortan immer gültig ist.
Genau, ich habe für jede Fragebogenseite eine neue Timer-Variable erstellt.

>>Aber nachdem es bei 2 Sekunden m.E. ohnehin wenig Sinn ergibt, würde ich
>>den o.g. Teil einfach rauslassen
Das heißt ich lösche diesen Teil aus jeder Fragenbogenseite raus:

if (!isset($time0)) {
  $time0 = time();
  registerVariable('time0');  // store variable $time0 after the end of the PHP code as well
}

und übernehme zusätzlich die von Ihnen angesprochene Änderung in replace('%remain%', 2); vor.

Was ist mit dem Stimulus, der für 8 Sekunden gezeigt? Ändere ich dort die betreffende Zeile dann wie folgt?
replace('%remain%', 8);

>>Unabhängig davon verweise ich nochmal auf meinen Kommentar, dass Ihre
>>Lösung vielleicht nicht die eleganteste ist - und schon gar nicht jene, bei
>>der Sie die Zeiten zuverlässig einhalten.
Vielen Dank für den Hinweis. Mir kam leider keine andere Möglichkeit in den Sinn wie ich dieses Projekt hätte umsetzen können. Haben Sie hier eine Idee, welche Tools von SosciSurvey ich verwenden könnte?

Und sollten die Veränderungen das bestehende Problem mit dem "verschmelzen" der Inhalte lösen?

Viele Grüße und vielen Dank für die Hilfe und Geduld
by SoSci Survey (327k points)
> Was ist mit dem Stimulus, der für 8 Sekunden gezeigt? Ändere ich dort die betreffende Zeile dann wie folgt?
> replace('%remain%', 8);

Wenn Sie möchten, dass das JavaScript nach 8 Sekunden den Weiter-Knopf drückt, dann ja.

>  Haben Sie hier eine Idee, welche Tools von SosciSurvey ich verwenden könnte?

Die Zuordnungsaufgabe wäre naheliegend.

> Und sollten die Veränderungen das bestehende Problem mit dem "verschmelzen" der Inhalte lösen?

Ja, wenn Sie den bezeichneten Teil (8 Zeilen) löschen, dann wird das nicht mehr auftreten.

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

...