Welcome to the LimeSurvey Community Forum

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

Selektive Darstellung Fragegruppen

  • Dodekaeder
  • Dodekaeder's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 weeks 4 days ago #269682 by Dodekaeder
Selektive Darstellung Fragegruppen was created by Dodekaeder
Bitte helfen Sie uns, Ihnen zu helfen und füllen Sie folgende Felder aus:
Ihre LimeSurvey-Version: LimeSurvey Community Edition Version 3.28.73+230906
Eigener Server oder LimeSurvey-Cloud: Ich schätze Server der Uni Kassel
Genutzte Designvorlage: Unbekannt
==================
Liebe LimeSurvey-Community;
ggf. könnt ihr mir bei der folgenden Problemstellung helfen.

Problemstellung:
Im Rahmen meiner Forschung möchte ich ein Experiment digitalisieren. Dabei gibt es eine Kontrollgruppe, eine Experimentgruppe und eine Vergleichsgruppe. Jede dieser Gruppen soll eine von drei Fragegruppen angezeigt bekommen. Nun stellt sich mir die Frage, wie ich die Teilnehmenden der Umfrage automatisiert nur jeweils eine der drei Fragengruppen anzeigen lassen kann.

Zielsetzung:
Ideal wäre, wenn quasi ein Zähler im Hintergrund laufen würde und darüber eine Zuweisung erfolgen könnte. I.e.
TN 1 --> Fragegruppe 1;
TN 2 --> Fragegruppe 2;
TN 3 --> Fragegruppe 3;
TN 4 --> Fragegruppe 1 usw. 


Bisherige Lösungsansätze:
  • Quotas --> verworfen, da der Fragetyp ganz zu Beginn eine offene Texteingabe ist und die Umfrage nicht direkt geschlossen werden soll.
  • Bedingung nach Teilnehmerschlüssel --> verworfen, da bei Skalierung nicht an alle personalisierte Schlüssel vergeben werden können. Idealerweise wird "nur" der Link zur Umfrage verschickt und alles weitere läuft dort.
  • Nutzung einer versteckten Gleichung (i.e. rand 1,3) und dann hinzufügen einer Relevanzgleichung je Fragegruppe. --> Verworfen, da zumindest in der Theorie ja eine Verteilung von bspw. 70/20/10 stattfinden könnte, was für die Auswertung von kleineren Gruppen schwierig werden könnte.
Hinweis:
Warum Fragegruppen statt einzelne Fragen?
Ich habe einen Chatbot mittels einer Frage eingebunden und die derzeitige Option sieht dann die Darstellung ganzer Fragegruppen vor, sodass eine Frage auf der gleichen Seite mit dem Chatbot bearbeitet werden kann.

Vielleicht hat jemand von euch eine Idee oder einen Hinweis zu einem Teil des Manuals oder eines Tutorials, der diesen spezifischen Fall behandelt und den ich bisher übersehen habe? 

Beste Grüße,
Ben

Please Log in to join the conversation.

  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 weeks 4 days ago #269683 by holch
Replied by holch on topic Selektive Darstellung Fragegruppen
Mir ist zwar nicht klar, was der Unterschied einer Kontrollgruppe zu einer Vergleichsgruppe ist, aber gut. DAs ist nicht das Thema. Du willst, dass die Teilnehmer auf 3 verschiedene Gruppen aufgeteilt werden.

Wie da Quoten helfen sollen ist mir nicht klar. Das würde ich also auch gleich mal verwerfen.

Mein Ansatz wäre auf jeden Fall eine versteckte gleichung mit Zufallszahl. Damit werden die Teilnehmer erstmal auf die verschiedenen Gruppen zufällig verteil.

Eine Verteilung 70/20/10 ist theoretisch möglich, aber dann doch eher sehr unwahrscheinlich. Aber n=100 (oder sind 70/20/10 als % zu verstehen?) ist jetzt natürlich keine riesige Stichprobe. Ich habe da sowieso meine Zweifel ob du da signifikante Unterschiede messen kannst, denn selbst wenn die Teilnehmer gleichmässig auf die 3 Gruppen verteilt würden hättest du da dann ja n=33 oder n=34 pro Gruppe. Das finde ich schon sehr grenzwertig um Untergruppen zu vergleichen. Würde da wohl eher n=100 oder mehr pro Gruppe anstreben.

Sobald du aber auf grossen Fallzahlen kommst sollte die Gefahr einer 70/20/10 Verteilung eher unwahrscheinlich sein.

Und wenn du nicht alle sofort am Anfang einlädst und nicht alle sofort teilnehmen, dann könnte man die Zufallsverteilung ja noch etwas manuel anpassen.

Wenn du z.B. eine Gruppe voll hast, passt du einfach die Relevanz gleichung für diese Gruppe an und leitest diese Zufallszahl einfach auf die Gruppe mit den wenigsten Teilnehmern weiter.

Beispiel: Du erzeugst Zufallszahlen von 1-3.

In die Kontrollgruppe werden all die geleitet, die eine 1 ziehen, in die Experimentgruppe kommen die mit 2 und in die Vergleichgruppe die mit 3.

Relevanzgleichungen (das ist jetzt einfach so hingeschrieben, muss natürlich angepasst werden, einfach zum verstehen).

Kontrollgruppe: {zufall=1}
Experimentgruppe: {zufall=2}
Vergleichsgruppe: (zufall=3}

Nehmen wir an, nach ein paar Tagen sieht es so aus:
Kontrollgruppe: n=95
Experimentgruppe: n=70
Vergleichsgruppe: n=83

Dann passt du einfach die Relevanzgleichungen so an:

Kontrollgruppe: {zufall=0}
Experimentgruppe: {zufall=1 OR zufall=2}
Vergleichsgruppe: (zufall=3}

D.h. in die Kontrollgruppe kommt erstmal keiner mehr, denn die Zufallszahl ist ja niemals 0, sondern immer entweder 1, 2 oder 3.

Da die Experimentgruppe entwas nachhängt, gibst du der einen Booster in dem eben 2 Zufallszahlen darauf leiten. Die Vergleichsgruppe arbeitet normal weiter.

Da muss man dann halt immer mal schauen, wie es aussieht mit den Fallzahlen, ideal ist sowieso immer ein paar mehr Teilnehmer zu haben, als man eigentlich braucht (Überrekrutierung), dann kann man später auch die Qualität der Antworten noch heranziehen und "schlechte Teilnehmer" (z.b. Speeder, solche mit Mustern, komische Antworten in den offenen Fragen, etc) rauschmeissen, ohne dass man in die Bretulie kommt. so 5-10% mehr ist immer ganz gut.

Wenn du natürlich erwartest, dass innerhalb von wenigen Minuten alles voll ist, dann wird es schwierig.

Joffm hat auch mal ein "least filled bucket" System gezeigt, da muss man aber schon etwas mehr machen und das läuft vermutlich auf LS3 nicht ohne ein Plugin und das kannste auf der Uni-Installation vergessen.

Help us to help you!
  • Provide your LS version and where it is installed (own server, uni/employer, SaaS hosting, etc.).
  • Always provide a LSS file (not LSQ or LSG).
Note: I answer at this forum in my spare time, I'm not a LimeSurvey GmbH employee.

Please Log in to join the conversation.

  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 weeks 4 days ago #269684 by holch
Replied by holch on topic Selektive Darstellung Fragegruppen
Joffms Tutorial 4 über Gleichungen und Zufall ist sicher eine gute Quelle der Inspiration.

forums.limesurvey.org/forum/german-forum...-gleichungen,-zufall

Da beschreibt er auch meinen Ansatz mit der manuellen Anpassung der Zufallszahl je nach dem wie voll eine Gruppe ist.

Und ja, da muss man öfter mal reinschauen, es ist kein absoluter Selbstläufer.

Aber, zum einen wirst du vermutlich aus Neugier sowieso öfter mal schauen wie es denn läuft, zum anderen ist vermutlich nicht zu erwarten, dass dich die Teilnehmer überrennen. Dann ist das sowieso ein Luxusproblem und du kannst einfach ein paar mehr reinlassen. Grössere Fallzahl ist immer gut, es sei denn man muss sie teuer bezahlen. Aber das Sampling ist bei manchen Uni-Umfragen sowieso manchmal etwas "fragwürdig", je nachdem wie man die Leute rekrutiert und was man so an Budget hat. :-)

Und wenn man viele Leute einlädt, dann halt nicht alle auf einmal einladen, sondern in Wellen. Ist sowieso immer gut erstmal einen Softlaunch zu machen und zu schauen, was so passiert. Wenn die Daten gut aussehen, dann weiter einladen. Und da kann man dann solche neuen Einladungswellen auch immer ganz gut nutzen, um die Gleichung anzupassen und damit die Zuteilung zu den Gruppen zu steuern.

Help us to help you!
  • Provide your LS version and where it is installed (own server, uni/employer, SaaS hosting, etc.).
  • Always provide a LSS file (not LSQ or LSG).
Note: I answer at this forum in my spare time, I'm not a LimeSurvey GmbH employee.

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 weeks 3 days ago #269689 by Joffm
Replied by Joffm on topic Selektive Darstellung Fragegruppen
Hallo,
wie @holch schon erwähnte, findest Du dies alles in meinem Tutorial.
Von Deiner Idee der "zyklischen" Zuweisung über ein "least filled" Verfahren  bis zur einfachen Anpassung der Zufallszahl-Gleichung (ohne .
Darin wird auch die Schwäche jedes Verfahrens angesprochen.

Wie ist es überhaupt?
Werden die Versuchspersonen irgendwie bezahlt?
Wenn nicht, lass die Umfrage einfach mit einfachem Zufallsverfahren laufen, bis alle Gruppen gefüllt sind.
@holch hat die "Overquota" ja schon angesprochen.
Es gibt ja immer ein paar Hanseln, die - ich sage es vorsichtig - die Umfrage nicht ganz ernsthaft beantworten (Speeder, Justifier, Happy Clicker, usw.)
Die müssen ja bei der Qualitätskontrolle entfernt werden.
Und sollten es weitere übererfüllte Gruppen geben, schmeiß diese per Zufall raus.

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless

Please Log in to join the conversation.

  • Dodekaeder
  • Dodekaeder's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 weeks 3 days ago #269691 by Dodekaeder
Replied by Dodekaeder on topic Selektive Darstellung Fragegruppen
Hallo Holch,
hallo Joffm,

danke für eure wirklich ausführlichen (und wahnsinnig schnellen) Antworten! 
Insbesondere die Idee der Overqutoa für große Gruppen ist interessante Möglichkeit für die Sicherstellung relativ gleichmäßiger Gruppen bei größeren Zahlen. Danke dafür! 

Ja, die Beschränkungen seitens der Uni sind leider bei fast allen Anwendungen so ein Thema - well, you need to work with what you got. :D

Danke auch für den Hinweis auf das Untertutorial zu Zufall :)

Beste Grüße,
Ben

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 weeks 3 days ago #269697 by Joffm
Replied by Joffm on topic Selektive Darstellung Fragegruppen
Naja, Beschränkungen seitens der Uni sind ja hier kein Thema.

Alles, was beschrieben wurde, ist ja per ExpressionScript zu realisieren.

Joffm 

Volunteers are not paid.
Not because they are worthless, but because they are priceless

Please Log in to join the conversation.

  • Dodekaeder
  • Dodekaeder's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 weeks 3 days ago - 2 weeks 3 days ago #269708 by Dodekaeder
Replied by Dodekaeder on topic Selektive Darstellung Fragegruppen
Erst einmal herzlichen Dank für den Verweis auf das richtige Tutorial zum Thema Zufall. Das hat mich wirklich weiter gebracht.

@Joffm das bezog sich tatsächlich nur auf die erwähnten Plugins :)

Nun bin ich allerdings auf eine Hürde gestoßen, die ich durch ausprobieren (und Chat-GPT :D) lösen konnte. Ich poste meine Lösung hier einfach mal, falls es andere auch interessiert.

Initiales Problem:
Die genutzte Relevanzgleichung führte leider nicht zur Anzeige der nachfolgenden Fragegruppe in der Umfragevorschau.

Meine Frage mit dem Code eqZufall kommt zu Beginn der Umfrage (Fragetyp Textanzeige; nicht versteckt)
  • Fragefeld: {if(is_empty(eqZufall),1,eqZufall)}
    • Ich habe hier "1" als Testwert gesetzt. Entweder kann später das rand(x,y)-Verfahren, oder das im Tutorial beschriebene Verfahren mittels  {SAVEDID-x*floor((SAVEDID-1)/x)} nutzen.
    • Das Fragefeld gibt mir in der Umfrage brav eine "1" aus.
Die nächste Fragegruppe wurde die Relevanzgleichung "eqZufall==1", dennoch wurde sie nicht angezeigt. 

Lösung
Der Fragetyp für {if(is_empty(eqZufall),1,eqZufall)} musste auf "Gleichung" gestellt werden. Im Nachhinein beim erneuten Lesen des Tutorials völlig trivial.. Schließlich handelt 1.3. sogar von "Die Frage vom Typ „Gleichung“" 

 
Last edit: 2 weeks 3 days ago by Dodekaeder.

Please Log in to join the conversation.

  • Dodekaeder
  • Dodekaeder's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 weeks 1 day ago #269724 by Dodekaeder
Replied by Dodekaeder on topic Selektive Darstellung Fragegruppen
Hallo ihr Lieben,

ich bin ein ganzes Stück weitergekommen, jetzt hänge ich jedoch wieder und bin mit meinem Latein am Ende.

Ich versuche die von joffm dargestellte Methode via SAVEDID zu nutzen.

Nach etlichen Problemen zu Beginn bin ich schließlich darauf gestoßen, dass ich SAVEDID als Integer behandeln muss, i.e. intval einbinden muss, um die Funktion zum laufen zu bekommen. Vorher erhielt ich nur einen NaN-Fehler.

Funktionierende Teilgleichung:
{if(is_empty(eqZufall),intval(SAVEDID)-3,eqZufall)}

Sobald ich aber nun "weiterrechnen" möchte, bricht die Gleichung.

"Workflow" fehlerhafter Gleichung 
Bspw.
{if(is_empty(eqZufall),intval(SAVEDID)-3/3,eqZufall)} --> Order of operations Fehler
{if(is_empty(eqZufall),(intval(SAVEDID)-3)/3,eqZufall)} --> Brachte keine Lösung
{if(is_empty(eqZufall),floor(intval(SAVEDID-3)/3),eqZufall)} --> gibt immer 0 aus
{if(is_empty(eqZufall),intval(SAVEDID)-3*floor((intval(SAVEDID)-1)/3), eqZufall)} --> gibt immer 3 aus.


Ich werde mir morgen Abend den Kopf weiter zerbrechen, ggf. hat ja bis dahin bereits jemand eine clevere Lösung, die ich übersehen habe.

Beste Grüße
 

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 weeks 16 hours ago - 2 weeks 10 hours ago #269726 by Joffm
Replied by Joffm on topic Selektive Darstellung Fragegruppen
Hallo,
hier hast Du etwas gründlich missverstanden.
Du willst die SAVEDID in das Konstrukt zur Erzeugung einer Zufallszahl einbauen.

Aber warum?
Wir benutzen dieses Konstrukt "if(is_empty(..." ja nur, um sicherzustellen, dass sich eine einmal erstellte Zufallszahl nicht mehr ändert.
  • Denn sie würde sich ändern, wenn
  • der Teilnehmer wieder in der Umfrage über diese Erzeugung hinaus zurückgeht
  • die Erzeugung am Anfang einer Gruppe mit mehreren Fragen geschieht.
Unerwünschtes Ergebnis könnte sein, dass die Logik der Umfrage auf einem anderen Wert der Zufallszahl beruht als dann im Datensatz gespeichert ist.
Gut, das ist meistens kein Beinbruch, da man ja in den Daten sieht, welche Fragen beantwortet wurden - und dann im Analyse-Tool die Trennvariable schnell neu erstellen kann.
Es kann aber auch zu total unbrauchbaren Daten führen, wenn man nämlich mittels tayloring in derselben Frage verschiedene Texte aufgrund der Zufallszahl anzeigt; dann hat man später keine Handhabe mehr.

Die SAVEDID ist aber ein konstanter Wert. Da ändert sich nichts und Du kannst sie nehmen, wie sie ist.
Und wie im Tutorial steht

Heißt also: Statt der Erzeugung der Zufallszahl mittels rand(x,y) wird diese Formel eingesetzt; ansonsten ist alles analog.

Allerdings kann es sein, dass Du durch die Nicht-Assoziativität der deutschen Schrift (bei Sprache hat man noch die Betonung) den Satz falsch verstanden hast.

Kleine Nebenbemerkung.
Gerne genommenes Beispiel meines Mathe-Profs dazu:
(1 + 3) + 4 ist gleich 1 + (3 + 4) (Assoziartivitätsgesetz der Addition)
Aber:
Eine Mädchenhandelsschule ist etwas anderes als eine Mädchenhandelsschule

So auch hier:
Ich will sagen: Wir erzeugen gar keine Zufallszahl, sondern wir nehmen einfach diese Formel.

Das heißt also: In der Frage vom Typ "Gleichung" steht nichts anders als  {SAVEDID-3*floor((SAVEDID-1)/3)}

Was steht bei dir?
Bei den ersten beiden Gleichungen kann durch die Division durch 3 eine Dezimalzahl enstehen
Bei den ersten drei Gleichungen subtrahierst Du "3".
Aber es heißt

Die Subtraktion von 1 dient nur dazu , den Zyklus bis "3" laufen zu lassen (1,2,3,1,2,... statt 1,2,0,1,2,…). Ist nicht relevant für die Arbeit, aber etwas „schöner“

Dann erhältst Du eben dieses.
 
Beispiel stammt aus einer laufenden Umfrage; da war die aktuelle SAVEDID eben 101.

Jetzt aber die Frage aller Fragen:
Hast Du die Umfrage überhaupt vor dem Test aktiviert?
Ansonsten gibt es ja gar keine SAVEDID.
Dies ist ja die laufende Nummer in der Antworttabelle.

Joffm

 

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 2 weeks 10 hours ago by Joffm.

Please Log in to join the conversation.

  • Dodekaeder
  • Dodekaeder's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 weeks 11 hours ago #269732 by Dodekaeder
Replied by Dodekaeder on topic Selektive Darstellung Fragegruppen
Lieber Joffm,

ich bin der deutschen Sprache eindeutig auf den Leim gegangen.

Herzlichen Dank für deine Erläuterungen - und mit frischem Kopf machen diese absolut Sinn!

Ich hatte das Tutorial tatsächlich so verstanden, dass statt des Baustein "rand(x,y)" die SAVEDID-Gleichung eingebaut wird. Es macht aber absolut Sinn, dass dies ja gar nicht nötig ist.

Daher ein großes Dankeschön für eure Mühe (vielleicht sollte LimeSurvey hier mal ein "Kauf-mir-einen-Kaffee"-Button isntallieren?) und die ausführlichen Antworten!

Beste Grüße,
Ben

P.s.: Ja, ich hatte die Umfrage aktiviert, um es zu testen - sonst wäre ja keine SAVEDID generiert worden :)

 

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 weeks 10 hours ago #269738 by Joffm
Replied by Joffm on topic Selektive Darstellung Fragegruppen

vielleicht sollte LimeSurvey hier mal ein "Kauf-mir-einen-Kaffee"-Button isntallieren?

Das sowieso.
Und je nach Tageszeit darf es auf ein schönes Bier sein.

Und

Ja, ich hatte die Umfrage aktiviert, um es zu testen

Was glaubst Du, was wir hier schon alles erlebt haben?

Bis dann
Viel Erfolg

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless

Please Log in to join the conversation.

Moderators: holchJoffmtpartner

Lime-years ahead

Online-surveys for every purse and purpose