0 votes
in SoSci Survey (dt.) by s216458 (110 points)

Hallo zusammen,

ich habe zwei Anliegen bzgl. der Reaktionszeit.

Ich habe in meinem Fragebogen zwei Zuordnungsaufgaben integriert, mit jeweils drei Items.
Nach der ersten Zuordnungsaufgabe möchte ich den Teilnehmenden Feedback geben. Wenn sie im Schnitt <3.000ms benötigt haben zu antworten sollen sie Text A angezeigt bekommen, wenn sie mehr Zeit benötigt haben Text B.

Wie kann ich denn auf die aufgezeichnete Reaktionszeit zugreifen, um darauf basierend verschiedene Fragetexte anzeigen zu lassen?

Mein zweites Anliegen bezieht sich darauf, wie ich auf anderen Seiten die Reaktionszeit aufzeichnen kann. Ich habe auch verschiedenen Seiten einen Filter, der je nachdem in welche Gruppe die Person eingeteilt wurde verschiedene Fragen anzeigt. Pro Seite wird jeweils eine Frage angezeigt. Ich möchte nun die Zeit messen, die eine Person benötigt um die Frage zu beantworten. Ich würde die Zeit gerne in ms messen und nicht nur über die Verweildauer, welche automatisch erhoben wird.

Ich bedanke mich schonmal für jegliche Hilfe.

Ich wünsche noch einen schönen Tag! :)

1 Answer

0 votes
by SoSci Survey (327k points)

Wenn sie im Schnitt <3.000ms benötigt haben

Die Reaktionszeit wird einfach in Variablen im Datensatz abgelegt. Mittels value(), valueSum() oder valueMean() kann man darauf (auf späteren Seiten) zugreifen, damit rechnen und PHP-Filter bauen.

Pro Seite wird jeweils eine Frage angezeigt.

Damit werden Sie keine besonders genauen Reaktionszeiten bekommen, denn bis eine Seite auf dem Bildschirm erscheint hat man (je nach Internetverbindung) Ladezeiten und (je nach Computer und Browser) Zeiten für den Aufbau der Seite - und eventuell muss man auf einem Mobilgerät dann auch noch Scrollen, weil der Bildschirm zu klein für die Frage ist.

SoSci Survey misst standardmäßig die Verweildauer für einzelne Seiten inkl. (!) Ladezeiten in Sekunden. Denn der Messfehler mit den Ladezeiten macht eine (pseudo-)genauere Messung obsolet.

Ich würde die Zeit gerne in ms messen

Wenn Sie es genauer haben möchten, können Sie aber mittels JavaScript auch genauer zwischen bestimmten Ereignissen messen. Also z.B. zwischem dem Laden einer Seite (da müssen Sie dann entscheiden ob mit oder ohne Grafiken u.s.w.) und einem Tastendruck.

Wenn Sie sich die genauere Messung einmal ansehen möchten, dann suchen Sie bitte mal nach LatencyTimer hier im Online-Support.

by s216458 (110 points)
Danke schonmal für die Antwort! Der Tipp wie ich auf die Reaktionszeiten zugreifen kann, hat mich sehr weiter gebracht.

Ich hatte mich auch schonmal in LatencyTimer reingelesen, aber irgendwie funktioniert das bei mir nicht.

Die Frage bei der ich gerne die Reaktionszeit messen möchte, ist vom Fragetyp "Horizontale Auswahl". Ich habe eine interne Variable erzeugt und diese sowie einen HTML-Code auf die Fragebogenseite gezogen.

Mein Java-Script lautet wie folgt:

<script type="text/javascript">
window.addEventListener("load", function() {
    var timer = new LatencyTimer();
    timer.registerItem(LA01, "LA17_01");
}
</script>

LA01 ist meine Item, das auf der Fragebogenseite angezeigt wird und LA17_01 die interne Variable, in welcher die Reaktionszeit aufgezeichnet werden soll. Aber wenn ich die Seite ausfülle, erscheint keine Reaktionszeit in meinem Datensatz.
Wie genau kann ich denn erreichen, dass die Reaktionszeit in meinem Datensatz erscheint?

Danke schonmal :)
by SoSci Survey (327k points)
Da fehlen wahrscheinlich erstmal die Anführungszeichen um "LA01", denn das ist ja ein String. Werfen Sie beim Umgang mit JavaScript immer einen Blick in die Fehlerkonsole des Browsers: https://www.soscisurvey.de/help/doku.php/de:general:browser-tools
by s216458 (110 points)
Ich habe es jetzt sowohl mit den Anführungszeichen um LA01 versucht, als auch mit s2.LA01. Die Reaktionszeit wird nicht im Datensatz gespeichert.

Auf der Fragebogenseite habe ich:
- die Frage LA01
- die interne Variable LA17_01
- einen PHP-Code mit: library('LatencyTimer');
- einen HTML-Code mit:
<script type="text/javascript">
window.addEventListener("load", function() {
    var timer = new LatencyTimer();
    timer.registerItem(s2.LA01, "LA17_01")
}
</script>

Über die Fehlerkonsole kam ich leider nicht zurecht und konnte nicht herausfinden, wie ich da herausfinde, ob mein Code fehlerhaft ist oder nicht.

Habe ich vielleicht auf der Fragebogenseite noch irgendwas vergessen oder muss ich noch einen Code eingeben, damit die Daten im Datensatz abgespeichert werden?

Weil im Datensatz erscheint noch nicht mal LA17_01.
by SoSci Survey (327k points)
Fangen wir mal ganz unten an: Um welchen Fragetyp handelt es sich bei LA01 denn?

> Über die Fehlerkonsole kam ich leider nicht zurecht

Dort gibt es einen Karteireiter "Konsole". Wenn dort etwas rotes steht, dann ist die Wahrscheinlichkeit hoch, dass ein Problem vorliegt. Leeren Sie die Konsole und laden Sie dann die Seite mit dem PHP-Code neu.
by s216458 (110 points)
Es handelt sich um den Fragetyp "Horizontale Auswahl" mit zwei Auswahlmöglichkeiten.

Wenn ich die Fragebogenseite teste und die Seite mir anschaue und dann über die Konsole gehe, bekomme ich folgende Fehlermeldung:
        
       Uncaught SyntaxError: missing ) after argument list
www.soscisurvey.de/:184

Hierzu habe ich nur etwas dazugefunden, dass ich "module" mit in den Text einbauen soll. Ich weiß nur leider überhaupt nicht was das bedeutet und wo ich das am besten eintrage.
by SoSci Survey (327k points)
In der letzten Zeile Ihres Scripts fehlt eine Klammer:

});

Die Funktion mit den geschweiften Klammern ist nämlich "nur" ein Parameter in Ihrem Funktionsaufruf von window.addEventListener()

Nein, das ist nicht intuituiv ;)
by s216458 (110 points)
Dankeschön für die Fehlerübersetzung :)
Ich habe die Klammer hinzugefügt und den Code noch um timer.registerItem(s2.LA01, "LA17_01", false, "LA17_02") ergänzt, damit die Zeit auch gespeichert wird, wenn sich die Personen umentschieden haben.
Die Zeit für das Umentscheiden wird im Gegensatz zur ersten Zeit, wenn ich nur einmal klicke gemessen.
Soweit ich das gelesen habe wird erst nach dem ersten Klick aufgezeichnet. Auf der Seite zum LatencyTimer gibt es auch Hinweise zur Timer-Instanz. Hier steht, dass StorageFirst festlegt, dass die Reaktionszeit auch dann aufgezeichnet werden soll, wenn es sich um den ersten Klick handelt. Wie genau kann ich das denn umsetzen?
Also ich möchte, dass die Zeit nach dem Laden der Seite und dann bis zum ersten Klick aufgezeichnet wird. Falls sich die Person umentscheidet, weiß ich ja schon wie es funktioniert.

Das wäre dann auch meine letzte Frage:)
Danke schonmal für die Unterstützung so weit!
by SoSci Survey (327k points)
Bei der Methode .registerItem() haben Sie den Parameter storeFirst an dritter Stelle. Da schreiben Sie in Ihrem Aufruf gerade "false":

timer.registerItem(s2.LA01, "LA17_01", false, "LA17_02")

Wenn Sie das in ein "true" ändern, bekommen Sie auch den ersten Klick.
by s216458 (110 points)
Dankeschön nochmal, das hat jetzt alles funktioniert. Ich habe jetzt den ersten Pre-Test gemacht und hier funktioniert die Textanzeige auf Basis der Reaktionszeit nicht.
Wenn ich über Fragebogen zusammenstelle dies versuche funktioniert es. Die Zuordnungsaufgabe steht auf Seite 5 und die Texte die basierend auf dieser angezeigt werden auf Seite 6. Wenn ich den Fragebogen ab der dritten Seite starte funktioniert alles, sobald ich ihn aber von Beginn an starte, werden die Texte nicht mehr angezeigt. Da kommt kurz eine weiße Seite und dann gehts direkt zur nächsten Aufgabe weiter. Woran kann das liegen?
Ich habe eingestellt, dass nach der letzten Zuordnungsaufgabe die nächste Seite direkt angezeigt werden soll. Kann es etwas damit zu tun haben?
Das ist mein PHP-Code um die Texte basierend auf der Reaktionszeit anzuzeigen.

$mean = valueMean(['S008_01a','S008_02a', 'S008_03a']);
if ($mean <= 3000) {
  question('S010');
} else {
  question('S011');
}

Das 'S008_01a','S008_02a', 'S008_03a' sind die internen Variablen die die Zeit messen und S010 und S011 sind die Texte die angezeigt werden sollen.

Entschuldige, dass ich nochmal nachfragen muss. Ich dachte echt, dass alles funktioniert.
by SoSci Survey (327k points)
> Ich habe jetzt den ersten Pre-Test gemacht und hier funktioniert die Textanzeige auf Basis der Reaktionszeit nicht.

Haben Sie überprüft, ob die Werte im Datensatz stimmen?

Lassen Sie sich auch einmal die einzelnen Werte und den Mittelwert ausgeben:

$mean = valueMean(['S008_01a','S008_02a', 'S008_03a']);
debug($mean);
debug('S008_01a');
debug('S008_02a');
debug('S008_03a');

> Das 'S008_01a','S008_02a', 'S008_03a' sind die internen Variablen die die Zeit messen

Interne Variablen haben eigentlich kein "a" hinten am Namen. Die automatische Reaktionszeitmessung einiger Fragen hingegen schon. Bitte prüfen Sie das nochmal.

> Ich dachte echt, dass alles funktioniert.

Werfen Sie zusätzlich noch einen Blick in die Debug-Information:
https://www.soscisurvey.de/help/doku.php/de:create:debugging
by s216458 (110 points)
Also ich habe meinen Fehler gefunden. Ich habe die Seite nachträglich hinzugefügt und vergessen bei einem vorherigen SetPage Order zu integrieren.
Und es hatte sich dabei um eine automatische Reaktionszeitmessung gehandelt.

Ich danke Ihnen sehr für die ganze Unterstützung.

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

...