Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Randomisierte Zuweisung von Werten in versteckten Fragen

More
16 hours 7 minutes ago #273549 by ma_diazgarcia
Bitte helfen Sie uns, Ihnen zu helfen und füllen Sie folgende Felder aus:Ihre LimeSurvey-Version: 6.16.3Eigener Server oder LimeSurvey-Cloud: LimeSurvey-CloudGenutzte Designvorlage: Fruity TwentyThree==================Liebe LimeSurvey Community, Im Zuge einer Datenerhebung mit LimeSurvey ist mir eine Ungereimtheit in der Verteilung der Daten aufgefallen, deren Ursache ich nicht erkennen kann. Daher wäre es sehr lieb, wenn mir jemand bei der Fehlersuche behilflich sein könnte.  Zunächst einmal eine Problembeschreibung:Wir haben Befragten drei Vignettentexte hintereinander gegeben, in denen das Geschlecht von fiktiven Personen variiert wurde. Dazu gab es einen Pool aus sechs Namen (drei männliche Namen, drei weibliche Namen). Per Zufallsauswahl ohne Zurücklegen wurde dann in jeder der drei Runden ein Name gezogen. Ein Name, der zuvor schon mal gezogen wurde, konnte nicht nochmal gezogen werden. In der ersten Runde gibt es in den Daten eine 50/50-Verteilung zwischen Männern und Frauen. In der zweiten und dritten Runde hat die Randomisierung in LimeSurvey aber offensichtlich nicht funktioniert und es gibt eine Verteilung von 40/60 in der zweiten Runde und 30/70 in der dritten Runde. Diese sollten ja eigentlich gleich verteilt sein im Aggregat, auch wenn für die einzelnen Individuen die Wahrscheinlichkeit zwischen Mann und Frau ab der zweiten Runde nicht mehr 50/50 ist.  Das dazu verwendete Verfahren sah wie folgt aus: Zu Beginn der Befragung wurde Befragten für jede der drei Runden eine zufällige Zahl zwischen 1 und 6 in einer versteckten Frage zugewiesen. Allerdings unterscheidet sich das Verfahren in Runde 1 von den anderen beiden Runde. Runde 1:Hier wurde eine zufällige Zahl zwischen 1 und 6 über folgende Expression in der versteckten Frage randname1 generiert.
Code:
if(is_empty(randname1), rand(1, 6), randname1)
 Runde 2:Hier wurde zunächst ein String in der versteckten Frage base2 generiert, der alle Zahlen zwischen 1 und 6 enthält, die nicht in Runde 1 gezogen wurden.
Code:
str_replace(randname1, "", "123456")
 Daraufhin wurde aus dem übrig gebliebenen String mit 5 Stellen in base2 ein zufälliger Wert in der versteckten Frage randname2 generiert.
Code:
if(is_empty(randname2), substr(base2, rand(0, 4), 1), randname2)
 Runde 3:Das Vorgehen aus Runde 2 wurde hier analog angewendet. Die Daten legen nun nahe, dass die Zufallsauswahl in Runde 1 funktioniert hat. In Runde 2 und 3 gibt es allerdings eine starke Tendenz zu niedrigen Werten, sodass diese deutlich häufiger generiert wurden als höhere Zahlen. Kann es sein, dass die randomisierte Auswahl bei einem String mit Zero-Indexing in LimeSurvey nicht korrekt funktioniert, sondern nur für numerische Nummernfolgen? Oder liegt der Fehler an einer anderen Stelle? Grundsätzlich hat das Verfahren funktioniert, nur die Verteilungen sind nicht gleich. Ich habe hier auch eine dazugehörige .lss Datei angehangen. Die angesprochenen Fragen finden sich in der Gruppe "Persönliche Angaben". 

File Attachment:

File Name: limesurvey...2912.lss
File Size:690.15 KB
 Vielen Dank im Voraus für die Hilfe! Viele GrüßeManuel 

Please Log in to join the conversation.

More
9 hours 40 minutes ago - 6 hours 23 minutes ago #273553 by Joffm
Hallo, Manuel,
gut, ich habe einmal schnell 150 Daten erzeugt (das geht ja schnell, indem man nur diese paar Gleichungen nimmt, und die Umfrage dann sich selbst aufrufen lässt)
Und ich konnte Dein Problem nachvollziehen.
 
Deine Erzeugung der Zufallszahlen ist ja recht ähnlich wie meine Darstellung in meinem "Tutorial 3: Gleichungen. Zufall,...,", Kap. 3.2.2

Ich habe dann dies einmal strikt nach meiner Vorlage durchgeführt und das Problem war weg.
 

Da ich aber natürlich zunächst Deinen Code benutzt hatte (und merkwürdige Dinge passierten), kam mir dann aber die Erleuchtung.
In den Fragen "base2" und "base3" ist dies passiert:
 
Es ist eine Leerstelle vor dem Text.
D.h.
Nach dem Entfernen des vorherigen "Namens" (sei es "3") erhältst Du nicht "12456", sondern " 12456"; und nach dem zweiten Namen ("5") ergibt sich "  1246". Dadurch kommt es dann zu einer erhöhten Auswahl der kleinen Werte.

Hier kannst Du den Versatz erkennen; aber sicher nur dann, wenn Du weißt, was Sache ist.
 
So etwas ist schwierig zu erkennen; daher ist es eine gute Idee beim Testen solche Texte in einer Textanzeige-Frage anzuzeigen, mit umfassenden Zeichen, z.B {join('#',base2,'#')}
Anders hätte ich es auch nicht gesehen. Erst dann habe ich ja direkt in der Frage nachgeschaut.

Okay, jetzt weßt Du, woran es lag.

Joffm

PS.
Zwei Dinge noch:
1. Benutze doch eine Quote, um die "Nicht-Teilnehmen-Woller" direkt herauszuschmeißen; es ist doch unnötig, sie durch die ganze Umfrage durchzuschleifen mit der Gruppenbedingung "will teilnehmen".
Außerdem sind sie dann in der Antwort-Tabelle als "complete" gekennzeichnet.

2. Ich sehe, Du hast die Device-Erkennung aus meinem "Tutorial 4" eingebaut. Wird dies auch irgendwo benutzt? Oder ist es nur die zusätzliche Info "Wie viele nehmen mittels eines Smartphones teil", um in späteren Umfragen das Design verstärkt daraufhin zu optimieren?

Bei weiteren Fragen können wir uns ja mal beim Apfelwein oder sonstwo treffen.
 

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 6 hours 23 minutes ago by Joffm.

Please Log in to join the conversation.

Moderators: holchJoffmtpartner

Lime-years ahead

Online-surveys for every purse and purpose