Oft wird der Wunsch gehegt, die Zuordnung von Umfrageteilnehmern zu Gruppen nicht mittels der Funktion "rand(x,y)" zu realisieren, sondern zyklisch.
Soll heißen, der erste Teilnehmer (TN) fällt in Gruppe 1, der zweite in Gruppe 2, der dritte in Gruppe 3, der vierte wieder in Gruppe 1, usw.
Damit möchte man die Zufälligkeit der Zufallszahl vermeiden, die eben gerade deswegen bei kleinen Stichproben ungleiche Besetzungen der Gruppen liefern kann.
Diese Idee klingt zunächst einmal plausibel, hat aber auch Tücken.
Denn wie geht man vor?
Bei jedem TN wird am Anfang geschaut, wieviele bereits die Umfrage beantwortet haben, und mittels der "modulo"-Funktion wird die Gruppe berechnet.
Nehmen wir also an, die Umfrage wird gestartet, der erste TN beginnt und wird der Gruppe 1 zugeordnet.
Nun beginnt auch der zweite TN - in welche Gruppe muss er?
Wenn TN 1 seinen Fragebogen abschließt, muss TN 2 in Gruppe 2. Aber wen TN 1 die Beantwortung abbricht?
Dann müsste TN 2 in Gruppe 1.
Dies bedeutet, solange nicht der erste TN seine Umfrage abgeschlossen hat, werden alle folgenden ebenfalls in Gruppe 1 landen.
Dies ist besonders unangenehm, wenn TN sofort nach Erhalt der Einladung mit der Beantwortung loslegen. (Findet man häufig bei Panelmitgliedern; "Sofort antworten, sonst ist die Quote vielleicht schon voll, und ich verdiene kein Geld").
Hier muss man auch auf die Dauer der Beantwortung schauen.
Bei kurzen (5min) Umfragen ist es weniger dramatisch.
Und natürlich sendet man Einladungen langsam in Teilen aus.
Nun könnte man sich denken "Gut, rechne ich nicht nur die vollständigen Befragungen, sondern alle".
Das geht auch - sogar noch leichter als alleinige Berücksichtigung der "Completes" - aber hier könnte, wie der Zufall so spielt, eine große Anzahl derer, die der Gruppe 2 zugeordnet werden, die Befragung nicht beenden.
Und damit haben wir keinen Vorteil gegenüber der Benutzung einer Zufallszahl.
Trotzdem will ich einmal beide Verfahren vorstellen.
1. Berücksichtigung "aller" Teilnehmer
Da dies das weniger aufwendige Verfahren ist, kommt es zuerst.
In der Antworttabelle wird eine laufende Nummer erzeugt, die sogenannte SAVEDID.
Diese kann man mittels dieser Formel benutzen
{SAVEDID-x*floor(SAVEDID/x)} wobei x die Zahl der gewünschten Gruppen ist.
2. Berücksichtigung "vollständiger" Teilnehmer
LimeSurvey-User, die keine plugins installieren können, können dies überspringen..
Also es gibt das plugin "getStatInSurvey", mit welchem man einige kumulierte Daten der Gesamtumfrage anzeigen kann, z.B. Häufigkeit, Prozentzahl, Mittelwerte von Antworten.
[url]
gitlab.com/SondagesPro/ExportAndStats/getStatInSurvey
[/url]
Dies ist zunächst einmal gedacht, um diese Werte anzuzeigen.
Um die Werte auch in einer Gleichung benutzen zu können, muss man einen kleinen Umweg gehen.
Man erzeugt eine Frage vom Typ "kurzer Text" mit folgendem javascript im Fragetext (Quellcode-Modus)
Code:
<script type="text/javascript" charset="utf-8">
$(document).on('ready pjax:scriptcomplete',function(){
var total=Math.floor({' [Q0.nb]'});
$('#question{QID} input[type="text"]').val(total);
$('#question{QID}').hide();
});
</script>
Hierbei soll Q0 der Code genau dieser Textfrage sein.
Dann kann man eine Frage vom Typ Gleichung anschließen (diese darf nicht auf derselben Bildschirmseite dargestellt werden)
mit folgendem Inhalt:
{1+Q0-x*floor(Q0/x)} ebenfals wieder x= Anzahl der Gruppen
Und das führende "1+" dient nur dazu, den Zyklus bei "1" starten zu lassen (1,2,3,4,1,2,... statt 0,1,2,3,0,1,...)
Es gibt also Alternativen zur Verwendung der Zufallszahl. Ob diese "besser" sind, muss man für sich selbst entscheiden.
Dazu möchte ich auf meine häufige Erwähnung des "Feintunings" von Zurodnungen mittels Zufallszahlen hinweisen.
Man erzeugt nicht eine Zufallszahl von 1-2, sondern von 1-100
mit Startzuordnung
Gruppe 1: zufall<51
Gruppe 2: zufall>50
Wenn dann auffällt, dass die Verteilung schief wird, Gruppe 1 schon recht überbesetzt,
ändert man in so etwas wie
Gruppe 1: zufall<30
Gruppe 2: zufall>29
Dies geht auch in einer aktivierten Umfrage.
Joffm