0 votes
ago in SoSci Survey (dt.) by u023280 (120 points)

Guten Tag,

Studie: Ich habe von einer Kollegin den Code für eine Studie übernommen, in der die Studienteilnehmer:innen Bilder benennen, in dem sie deren Namen eintippen. Dafür erstellen wir extern eine Liste mit einer Pseudo-Randomisierten Reihenfolge der Items (Bilder) für jede:n Studienteilnehmer:in. Die Listen werden als arrays im PHP Code gespeichert und dann über eine Urnenziehung zufällig zugewiesen, die Darstellung erfolgt mittels eines loops über den gezogenen array.

Problem: die aktuelle Version hat deutlich mehr Listen (36) und mehr Trials (324, 3 Darstellungen von 108 Bildern). Während der Code also an sich funktioniert, haben nur 4 Personen an der Studie teilnehmen können, bevor es bei jedem Aufruf eine "502 Bad Gateway" Fehlermeldung gibt.

Frage: Wie kann ich den Code anpassen, damit weniger gespeichert werden muss? Ich werde darauf hingewiesen, das ich die Datenbank für Inhalte nutzen soll, finde für diese Anwendung jedoch keine Anleitung.

Für die laufende Erhebung werde ich jetzt regelmäßig runterladen und löschen, würde aber auch gerne für zukünftige Projekte bessere Lösungen finden und freue mich dafür über jeden Hinweis.

Ausschnitt aus dem Code

Zuweisung von 36 arrays:

...

Zufälliges Ziehen eines arrays für den/die aktuelle:n Teilnehmer:in:

...

...

loop über das array:

1 Answer

0 votes
ago by SoSci Survey (362k points)

Wie kann ich den Code anpassen, damit weniger gespeichert werden muss?

Nun, wie Sie schon schreiben: Speichern Sie den Inhalt nicht direkt im PHP-Code, sondern in der Datenbank für Inhalte. Dort können Sie im Prinzip alles möglich ablegen. Also z.B. Listen von Stimuli-IDs und die Inhalte pro Stimulus. Wobei ich empfehlen würde, dass Sie die pseudo-Reihenfolgen einfach in einem Zufallsgenerator ablegen, wenn Sie ohnehin zufällig eine der Abfolgen ziehen möchten. Und pro Loop-Durchlauf werden dann aus der Datenbank für Inhalte nur noch die zugehörigen Infos zu dem jeweiligen Stimulus geholt.

Aber bevor ich in die Details gehe: Was hat es denn mit der pseudo-rotierten Reihenfolge denn auf sich? Ist das ein Workaround, weil die richtige Rotation zu aufwändig war oder erfüllt das einen methodisch begründeten Zweck?

ago by u023280 (120 points)
Danke!
Die Pseudorandomisierte Reihenfolge ergibt sich aus den vielen constraints für die Reihenfolge die für dieses Paradigma notwendig sind, wir möchten da auch möglichst nah an dem Vorgehen bisheriger Studien bleiben
ago by SoSci Survey (362k points)
Okay, dann würde ich folgenden ersten Schritt vorschlagen: Geben Sie jedem Stimulis eine eindeutige Nummern.

Wenn es <25 Stimuli pro Befragtem sind, erstellen Sie komma-separtierte Listen dieser Nummern, also z.B.

1,3,5,7,9,2,4,6,8
9,2,4,6,8,1,3,5,7
u.s.w.

Diese kommen dann in einen Zufallsgenerator.

Wenn es mehr Stimuli pro Durchgang sind, dann erstellen Sie eine Tabelle (z.B. in Excel) mit einer Zeile pro möglicher Abfolge und den Stimuli-Nummern dann in den unterschiedlichen Spalten.

Vor die erste Spalte stellen Sie dann noch einen Schlüssel (z.B. rot1, rot2, rot3, ...) also

rot1 1 3 5 7 9 2 4 6 8
rot2 9 2 4 6 8 1 3 5 7
u.s.w.

Diese Tabelle wird dann in die Datenbank für Inhalte importiert. Für die Ziehung der Zeile verwenden Sie weiterhin einen Zufallsgenerator, in dem dann nur noch die Schlüssel liegen, also...

rot1
rot2
rot3
u.s.w.
ago by u023280 (120 points)
Danke! Das sieht nach einer sehr guten Lösung aus, auch vielen Dank das die Antwort so schnell kam!

Kurze Nachfrage dazu noch: Kann ich die Zeilen aus der Datenbank dann einfach mit den Namen der internen Variablen (für das Speichern der Antworten) wieder zu einem array zusammenfügen?

also so was:

$var1 = ("AA01", "AA02", "AA03", "AA04", "AA05", "AA06", "AA07", "AA08", "AA09");
$var2 = ("TI01", "TI02", "TI03", "TI04", "TI05", "TI06", "TI07", "TI08", "TI09");

urnDraw(liste_36, "OR01"); //zahl zwischen 1 und 36 ziehen
$key = 'rot'.value('OR01_01');  //rot davor schreiben
//reihenfolge aus datenbank abrufen und in array speichern
$ar = array(dbGet($key), $var1, $var2);
registerVariable("ar");

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

...