0 votes
in SoSci Survey (dt.) by s178915 (115 points)

Guten Tag,

ich nutze in meiner Umfrage eine Urne, um eine zufällige Weiterleitung auf eine externe Webseite durchzuführen, d.h. die Teilnehmenden erhalten die Instruktion für die externe Webseite, klicken auf "Weiter", daraufhin wird eine Zahl zwischen 1 und 5 aus der Urne gezogen. Je nachdem, welche Zahl gezogen wird, wird auf eine von 5 verschiedenen externen Webseiten weitergeleitet.

Grundsätzlich funktioniert alles, wie gewünscht.
Allerdings ist nun zum zweiten Mal folgendes Problem aufgetreten:
Nach einer gewissen Zahl von Ziehungen scheint die Ziehung + Weiterleitung nicht mehr zu funktionieren. Nach einem Zurücksetzen der Urne funktionierte es dann wieder.
Beim ersten Mal wurde die Urne 9-mal vollständig geleert, beim zweiten Mal (heute) 6-mal vollständig.

So sieht der Code zum Ziehen aus der Urne und zum Speichern der internen Variable aus:

$gruppe = urnDraw('versuchsgruppe', 'EW03');

if ($gruppe == 1) {
    redirect('http://jp2021.bplaced.net/G0/?ct=%caseToken%', true);
} elseif ($gruppe == 2) {
    redirect('http://jp2021.bplaced.net/G1/?ct=%caseToken%', true);
} elseif ($gruppe == 3) {
    redirect('http://jp2021.bplaced.net/G2/?ct=%caseToken%', true);
} elseif ($gruppe == 4) {
    redirect('http://jp2021.bplaced.net/G3/?ct=%caseToken%', true);
} elseif ($gruppe == 5) {
    redirect('http://jp2021.bplaced.net/G4/?ct=%caseToken%', true);
}

So sahen die Ziehungen gerade, direkt vor dem Zurücksetzen, aus:

Aus den Datensätzen ist ersichtlich, dass der Redirect zu der externen Seite in den fraglichen Fällen nicht stattgefunden hat und stattdessen direkt die nächste Seite des Fragebogens angezeigt wurde.

Was kann ich tun, um dieses Problem zu vermeiden?

1 Answer

+1 vote
by SoSci Survey (309k points)

Danke für den PHP-Code - Sie verwenden die Funktion urnDraw() einfach nicht ganz korrekt. Dazu aus der Referenz:

Die Funktion liefert im Normalfall eine Zahl (int) zurück, zum wievielten Male die Urne gerade geleert wird

Mit Ihrem PHP-Code

$gruppe = urnDraw('versuchsgruppe', 'EW03');

bekommen Sie also nicht die Ziehung, sondern einen Zähler, der 6-mal die 1 liefert, dann 6-mal die 2 u.s.w. Also nichts, was randomisiert wäre. Das sollten Sie auch an Ihren Daten sehen. Korrekt wäre:

urnDraw('versuchsgruppe', 'EW03');
$gruppe = value('EW03_01');

Unter anderem wegen solcher Fehlerpotenziale hatten wir den Zufallsgenerator als Weiterentwicklung der Urnen-Funktion in SoSci Survey implementiert. Damit fällt es deutlich schwerer, solche Fehler zu machen :)

by s178915 (115 points)
Vielen Dank für die ausführliche Antwort!
Ich werde ab jetzt den korrigierten Code einsetzen.

In einem Punkt kann ich aber nicht zustimmen: Ich habe nicht 1,1,1,1,1,1 ... erhalten, sondern bspw. (2, 4, 0, 1, 3), (3, 0, 2, 1, 4) usw.
by SoSci Survey (309k points)
Gezogen wurde schon ein Code - und in EW03_01 gespeichert. Aber die Seite, die danach aufgerufen wurde, war G0, G0, G0, G0, G0, G0, G1, G1, G1, ...

Das ist insofern ungünstig, weil Sie damit aktuell keine Variable im Datensatz haben, welche Ihnen direkt anzeigen würde, wann zu welcher Seite weitergeleitet wurde. Also bitte größte Vorsicht mit den bisher erhobenen Daten!

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

...