0 votes
in SoSci Survey (dt.) by s079684 (1.0k points)

Ich möchte eine kleine Aufgabe in lab.js in meine SoSci Studie einbauen. Der genaue Inhalt der Aufgabe hängt von den Antworten anderer Personen ab. Beispiel: Wenn 50 Personen schon einen Stimulus ausgewählt haben, soll dieser nicht weiter präsentiert werden.

In SoSci würde ich das so regeln, dass ich in der Datenbank für Inhalte einen Array habe, in dem gespeichert wird, wie oft ein Stimulus schon ausgewählt wurde. Entsprechend filtere ich dann, was in den Fragen angezeigt wird. Diese Information krieg ich aber nicht an lab.js gesendet.

Gibt es eine Möglichkeit, die Infos aus der Datenbank für Inhalte an lab.js zu senden (und auch von da aus wieder zurück an die Datenbank)?

Falls nicht: Gibt es eine Möglichkeit in lab.js selbst, Dateien zwischen Personen zu teilen, wenn ich das Ganze über SoSci-Survey laufen lasse? Beispielsweise indem ich im Hintergrund einen Array speichere, auf den alle Personen Zugriff haben?

Besten Dank und viele Grüße

1 Answer

0 votes
by SoSci Survey (329k points)

Ich habe den SoSci-Quelltext dazu nochmal genau durchgesehen - aber SoSci Survey ruft zu Beginn lediglich study.run() auf und reagiert dann auf das Event, welches die erhobenen Daten aus lab.js zurückgibt.

Bitte fragen Sie einmal in der Lab.JS Community, wie man beim Aufruf Daten an das Experiment übergeben kann. Sollten dafür noch Anpassungen an der SoSci-Einbindung erforderlich sein, können wir diese gerne ergänzen.

by s079684 (1.0k points)
Danke, ich schaue mir das drüben mal genauer an. Eventuell reicht es mir auch, intern in lab.js Daten über Personen hinweg teilen zu können.
by SoSci Survey (329k points)
Es würde mich sehr wundern, wenn es möglich wäre, Daten zwischen den Personen zu "teilen". Denn lab.js läuft komplett im Browser der Befragten, und die Browser sprechen ja nicht miteinander. An den Server wird es erst übermittelt, wenn SoSci Survey die Daten per JavaScript entgegennimmt und dann mit der Fragebogen-Seite an den Server schickt.
by s079684 (1.0k points)
Ja, das ist mir dann auch eingefallen. Es gibt im Moment wohl ein Problem bei dem Slack Channel von lab.js, weshalb ich an der Front nicht weitergekommen bin. Ich probiere nun alles direkt in SoSci zu lösen.

In dem Zusammenhang: Gibt es Limits bezüglich der Frequenz der Datenbank-Nutzung, die ich im Hinterkopf haben sollte? Ich rechne damit, dass viele Personen gleichzeitig an der Studie teilnehmen werden. Für diese Personen soll dann an mehreren Zeitpunkten innerhalb der Studie ein Array aus der Datenbank abgerufen, geupdated und wieder in die Datenbank geschrieben werden. Der Array speichert für 39 Items, wie oft diese insgesamt als negativ bewertet worden sind (über alle Personen hinweg). In Abhängigkeit von diesem Wert werden manche Items dann anderen Personen gar nicht mehr erst angezeigt.
Eine Befürchtung wäre beispielsweise, dass wenn für zwei Personen gleichzeitig der aktuelle Array abgerufen wird und von beiden dann verändert wird (Counter für negative Bewertungen wird aktualisiert), dass dann nur von einer der beiden Personen die Daten berücksichtigt werden.

Ist die Sorge realistisch oder bewegen wir uns da im Millisekunden-Bereich? Falls die Sorge berechtigt ist - gäbe es eine Lösung?
by SoSci Survey (329k points)
> Eine Befürchtung wäre beispielsweise, dass wenn für zwei Personen gleichzeitig der aktuelle Array abgerufen wird und von beiden dann verändert wird (Counter für negative Bewertungen wird aktualisiert), dass dann nur von einer der beiden Personen die Daten berücksichtigt werden.

Das wird in der Informatik als Update-Anomalie bezeichnet, und ja, das könnte durchaus passieren. Statistisch aber nicht allzu häufig, denn dafür müssen die beiden Aufrufe innerhalb eines Zeitrahmens von 1-2 Sekunden erfolgen (evtl. ist das Zeitfenter noch deutlich kleiner, um das zu klären, müsste ich aber nochmal in den Code schauen).

Eine Alternative wäre es, die Zähler in internen Variablen (0/1-kodiert) abzulegen, und dann mit statistic() zu arbeiten. Das ist für SoSci Survey zwar rechenaufwändiger, und Sie sollten tunlichst alle Werte mit einem Aufruf abarbeiten. Aber da haben Sie nicht die Gefahr der Update-Anomalie.

Für den Hausgebrauch tut es die Datenbank für Inhalte. Es kommt natürlich darauf an, wie problematisch es wäre, wenn zwei oder drei Zählungen verloren gehen würden.
by s079684 (1.0k points)
Danke für die Infos. Ich schaue mir die Funktion über statistic() mal an, die hatte ich nicht auf dem Schirm.

Was genau bedeutet "mit einem Aufruf" abarbeiten? Die statistic() Funktion nur einmal pro VPN aufrufen?
by SoSci Survey (329k points)
Sie können bei statistic() angeben, dass die FUnktion sich gleich alle notwendigen Variablen holt (die Sie einzeln auflisten müssen) statt jedesmal wieder alle Interviews zu durchsuchen. Das ist unter statistic('filter', ...) versteckt.
by s079684 (1.0k points)
Danke! Ich glaube, ich hab es gefunden.

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

...