Welcome to the LimeSurvey Community Forum

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

Randomisierung

More
5 years 3 weeks ago #204138 by elenameister
Randomisierung was created by elenameister
Liebe Experten,

ich bin absoluter Newbie, und steig bei der Randomisierung nicht durch.
Vermutlich habt ihr solche Fragen schon zu Hauf beantwortet. Aber für meinen Fall bin ich noch nicht im Forum fündig geworden.

Für meine Masterarbeit erhebe ich nun mittels LimeSurvey Version 3.23.0+200813
Ich nutze hierfür die interne Database von unserem Institut.

Ich hab insgesamt 6 Fragegruppen und muss mich für eine von 2 Randomisierungsformen entscheiden:

Die eine wäre so:

Visualisierung1 + Text oder UE1 oder UE2
Visualisierung2 + Text oder UE1 oder UE2
Visualisierung3 + Text oder UE1 oder UE2

Die andere wäre so:
Visualisierung1 + Text
Visualisierung2 + UE1
Visualisierung3 + UE2

Ich hoffe mal ich hab das verständlich aufgeführt und dass euch die angegebenen Infos weiterhelfen.
Auf jeden Fall jetzt schon mal ein Riesen Dankeschön für Eure Unterstützung!

Elena
The topic has been locked.
More
5 years 3 weeks ago - 5 years 3 weeks ago #204144 by Joffm
Replied by Joffm on topic Randomisierung
Hallo, Elena,
verständlich insoweit, dass ich alles lesen konnte.
Leider nicht mehr.

Das liegt wohl auch daran, dass hier im Forum das Wort "Randomisierung" verschiedenartig benutzt wird.

Nehmen wir Deinen ersten Fall.
Was soll ein Teilnehmer sehen?
Eine der drei Visualisierungen oder eine der beiden UEs?
Kann ich mir eigentlich nicht vorstellen.
Oder eine der drei Visualisierungen und die beiden UEs, aber in zufälliger Reihenfolge?

Daher skizzierte einmal detallierter. Einfach einmal zu 3 Teilnehmern deren möglichen Workflow.

Und Deine zweite Idee ist im Gegensatz dazu ja trivial

Die andere wäre so:
Visualisierung1 + Text
Visualisierung2 + UE1
Visualisierung3 + UE2

Hier hast Du ja nur 3 Möglichkeiten, die Du mit einer Zufallszahl 1-3 erschlagen kannst.
Oder ist dies so gemeint, dass der Teilnehmer alle drei Möglichketen sieht, aber in unterschiedlicher Reihenfolge?


Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 5 years 3 weeks ago by Joffm.
The topic has been locked.
More
5 years 3 weeks ago #204147 by elenameister
Replied by elenameister on topic Randomisierung
Hallo Joffm,

vielen Dank für deine schnelle Reaktion.
Also im ersten Fall soll es so sein, dass:

Teilnehmer1: Visualisierung1 + Text
Teilnehmer2: Visualisierung1 + UE1
Teilnehmer3: Visualisierung1 + UE2

Teilnehmer4: Visualisierung2 + Text
Teilnehmer5: Visualisierung2 + UE1
Teilnehmer6: Visualisierung2 + UE2

Teilnehmer7: Visualisierung3 + Text
Teilnehmer8: Visualisierung3 + UE1
Teilnehmer9: Visualisierung3 + UE2

Heißt im Endeffekt: Jeder Teilnehmer soll aus den 6 Fragegruppen lediglich 2 Fragegruppen bearbeiten.

Und ja stimmt, die zweite Variante wäre relativ leicht zu erledigen, denk ich:
Teilnehmer1: Visualisierung1 + Text
Teilnehmer2: Visualisierung2 + UE1
Teilnehmer3: Visualisierung3 + UE2

Elena
The topic has been locked.
More
5 years 3 weeks ago #204148 by Joffm
Replied by Joffm on topic Randomisierung
Na, wenn das so ist, ist es ja easy.

Du hast 9 verschiedene Möglichkeiten
Also generierst Du eine Zufallszahl von 1-9

Visualisierung 1 wird gesehen von Zufallszahlen (1,2,3)
Visualisierung 2 wird gesehen von Zufallszahlen (4,5,6)
Visualisierung 3 wird gesehen von Zufallszahlen (7,8,9)

Text wird gesehen von Zufallszahlen (1,4,7)
UE1 wird gesehen von Zufallszahlen (2,5,8)
UE1 wird gesehen von Zufallszahlen (3,6,9)

Dein Schema zeigt es ja bereits, indem Du die Teilnehmernummer mit der Zufallszahl gleichsetzt.


So, jetzt erstelle einmal einen Prototypen, der die Struktur wiedergibt ohne die einzelnen ausformulierten Fragen. Bei Problemen sendest Du diesen dann als lss Export.

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: TobiStark
The topic has been locked.
More
5 years 3 weeks ago - 5 years 3 weeks ago #204154 by Joffm
Replied by Joffm on topic Randomisierung
Könnte zum Beispiel so aussehen.

Erstellt in Version 3.22.

File Attachment:

File Name: limesurvey...9823.lss
File Size:21.53 KB


Joffm

Im Beispiel ist die Generierung der Zufallszahl nicht versteckt.
Dies sollte man auch während der Testphase nicht; erst, wenn alles zur vollsten Zufriedenheit getestet ist, werden solche Fragen versteckt.

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 5 years 3 weeks ago by Joffm.
The topic has been locked.
More
5 years 3 weeks ago #204262 by elenameister
Replied by elenameister on topic Randomisierung
Lieber Joffm,

vielen Dank für deine ausführliche und vor allem schnelle Hilfe!
Ich werde es nun mal probieren mit dem umsetzen.

Viele Grüße
Elena
The topic has been locked.
More
5 years 3 weeks ago #204271 by elenameister
Replied by elenameister on topic Randomisierung
Hallo Joffm,

ich hab erst Mal deine Umfrage versucht nachzubauen, da hat es geklappt.
Aber, wenn ich die Befehle in die eigentliche Umfrage eingebe, dann überspringt es den kompletten Frageblock. Sicher ist es ein kleiner Bug. Aber ich hab einfach keine Ahnung wonach ich suchen soll.

Wie soll ich das mit der Umfrage machen? Wenn ich sie hochlade, ist sie ja dauerhaft für alle sichtbar? Oder gibt es da noch ne andere Option?

Viele Grüße
Elena
The topic has been locked.
More
5 years 3 weeks ago #204278 by Joffm
Replied by Joffm on topic Randomisierung
Hallo, Elena,

das wird wirklich ein kleiner Schreibfehler sein.
Und ein Anhang muss nicht ewig hier vorhanden sein.

In Deinem Profil gibt es nämlich den "Attachment Manager"


Dort kannst Du Deine hochgeladenen Dateien wieder löschen.


Oder schick mir eine Private Nachricht. Dann gebe ich Dir meine E-Mail-Adresse.
Dazu einfach auf meinen Usernamen klicken.


Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
More
5 years 3 weeks ago - 5 years 3 weeks ago #204319 by elenameister
Replied by elenameister on topic Randomisierung
Hallo Joffm,dann lade ich es direkt hier hoch und entferne es später einfach wieder.Dann bin ich jetzt mal gespannt, was ich falsch gemacht habe ...Viele GrüßeElena
Last edit: 5 years 3 weeks ago by elenameister.
The topic has been locked.
More
5 years 3 weeks ago - 5 years 3 weeks ago #204321 by Joffm
Replied by Joffm on topic Randomisierung
Hallo, Elena,
Du kannst den Anhang löschen-

Und, ja, es ist ein Fehler, der einfach aus mangelnder Erfahrung resultiert.
Wahrscheinlich hast Du die Formel zur Erzeugung der Zufallszahl von irgendwo kopiert.
Dann werden aber auch alle Formatierungen mitkopiert.
Schau Dir die Frage "zufall" einfach einmal im Quellcode-Modus an.

Dort sollte nur das pure
{if(is_empty(zufall),rand(1,9),zufall)}
stehen.

Und nicht vergessen: Nach dem Test die Frage "zufall" verstecken.


Daher sollte man auch nicht aus Word oder ähnlichem kopieren.
Es kommen zuviele "Schrott"-Formatierungen mit.
Wenn man einen langen Text nicht noch einmal schreiben will, besser das Worddokument als "*.txt", also plain text, speichern und dann kopieren.

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 5 years 3 weeks ago by Joffm. Reason: Immer diese Typos
The topic has been locked.
More
5 years 3 weeks ago #204324 by elenameister
Replied by elenameister on topic Randomisierung
Hallo Joffm,

alles klar. Vielen Dank!
Ich hab es jetzt so umgesetzt und es läuft!
Da ich jetzt nicht von selbst drauf gekommen bin, gibt es irgendwo für LimeSurvey eine gute deutsche Erklärung wie man solche Codes schreibt?

Viele Grüße
Elena
The topic has been locked.
More
5 years 3 weeks ago #204326 by Joffm
Replied by Joffm on topic Randomisierung
Hallo, Elena,

gibt es irgendwo für LimeSurvey eine gute deutsche Erklärung wie man solche Codes schreibt?

die Freitagnachmittagantwort:
Mit der Hand. ;)

Ausführliches später.

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
More
5 years 3 weeks ago #204330 by elenameister
Replied by elenameister on topic Randomisierung
:-D
The topic has been locked.
More
5 years 2 weeks ago - 5 years 2 weeks ago #204519 by Joffm
Replied by Joffm on topic Randomisierung
Hallo, Elena, etwas spät, aber es kommt.

die im Handbuch hier gezeigten Funktionen kann man für verschiedene Zwecke nutzen.
www.limesurvey.org/manual/ExpressionScri...mplemented_functions

1. Erzeugen einer neuen Variablen
Zur Erzeugung einer neuen, berechneten Variablen, die auch im Datensatz gespeichert wird, dient der Fragetyp "Gleichung". Im Datensatz wird diese Variable dann unter dem Namen des Codes der Frage gespeichert.
In den folgenden Beispielen soll die Frage als Code "GL" haben.
Im Fragetext wird dazu die Formel in geschweiften Klammern eingegeben.

a. Die allereinfachste und trivialste ist dann der Eintrag {2}.
Dadurch würde für jeden Teilnehmer im Datensatz die Variable "GL" den Wert 2 haben.

b. Sehr häufig wird natürlich hiermit eine Zufallszahl erzeugt.
In den "implementierten Funktionen" gibt es dazu die Funktion "rand(x,y)". Dies ist die Rohform, die man aber nicht verwenden sollte.
Begründung: Wie man auch gut in EXCEL nachvollziehen kann, ändert sich eine Zufallszahl bei jedem Aufruf einer Seite. Dadurch können ungewollte Effekte auftreten, wenn z.B. mehrere Fragen auf einer Seite zusammen mit der Zufallszahlserzeugung sind.
Daher benutzt man dieses Konstrukt
{IF(is_empty(GL),rand(x,y),GL)}
Übersetzt: WENN die Variable GL noch leer ist, DANN wird eine Zufallszahl zwischen x und y erzeugt, SONST bleibt sie, wie sie ist.

c. Berechnung einer neuen Variablen aus einer oder mehreren vorherigen Antworten.
Hier wären zum Beispiel Scores genannt, indem man im einfachsten Fall die Antwortcodes verschiedener Fragen summiert.
Alles Einfachnennungsfragen: {sum(E1.NAOK,E2.NAOK,E3.NAOK,...)}
Erklärung zu NAOK: Falls die Frage E2 aufgrund eines Filters bei einigen Teilnehmern nicht gefragt wird, ist sie nicht definiert, und die Summe würde nicht berechnet werden. Das NAOK löst dieses Problem, so dass in diesem Falle die Summe der restlichen Fragen berechnet wird.
Bei Matrizen muss man nun alle Teilfragen aufsummieren: {sum(Q1_SQ001.NAOK,Q1_SQ002.NAOK,Q1_SQ003.NAOK,Q2_SQ001.NAOK,Q2_SQ002.NAOK,Q3_SQ001.NAOK,Q3_SQ002.NAOK,Q3_SQ003.NAOK,Q3_SQ004.NAOK,...)}
Zur Vereinfachung dieses endlosen Terms gibt es die Variablen ".self" und ".that"
Damit vereinfacht sich dies zu: {sum(that.Q1.NAOK,that.Q2.NAOK,that.Q3.NAOK)}
that.Q1 expandiert also zu Q1_SQ001, Q1_SQ002,...
Bitte im Handbuch unter diesem Kapitel weiteres.
www.limesurvey.org/manual/ExpressionScri....22that.22_variables
Verwandt mit "sum" ist natürlich "count", "countif", "countifop" mit dem gezählt wird, wieviele Ereignisse einer bestimmten Art es gibt.
Eine Mehrfachnennung: {count(M1)} - Wieviele Teilfragen wurden ausgewählt
Eine Matrix: {countif("4",that.M1)} - Wieviele Teilfragen wurden mit Code 4 beantwortet (auch hier wieder "that", um zu vermeiden, jede einzelne Teilfrage schreiben zu müssen)
Eine Matrix: {countifop(">","3",that.M1)} - Wieviele Teilfragen wurden mit Code größer 3 beantwortet

Außerdem gibt es eine große Anzahl Funktionen, um Texte zu bearbeiten, usw.

Man kann nun diese neuen Variablen weiter benutzen, um wieder anderes zu berechnen, indem man mehere dieser Gleichungen hintereinandersetzt.
Beispiel: Wähle zufällig zwei der am niedrigsten bewerteten Items (aber nur 1 und 2) aus einer Matrix (Q1) (1-6) von insgesamt 10 Items aus.
a. "Anzahl1" {countif("1",that.Mat1)} - Stelle fest, wieviele Items mit 1 bewertet wurden.
b. "ListL1" {join("L",if(Q1_SQ001==1,"01",""),if(Q1_SQ002==1,"02",""),if(Q1_SQ003==1,"03",""),if(Q1_SQ004==1,"04",""),if(Q1_SQ005==1,"05",""),if(Q1_SQ006==1,"06",""),if(Q1_SQ007==1,"07",""),if(Q1_SQ008==1,"08",""),if(Q1_SQ009==1,"09",""),if(Q1_SQ010==1,"10","")}
Der Buchstabe dient dazu, dass das Ganze als Text angesehen wird; sonst könnte es einen numerischen Überlauf geben.
WENN Anzahl1<2 ist, machen wir dasselbe für den Wert 2
c1. "Anzahl2" {countif("2",that.Mat1)} - Stelle fest, wieviele Items mit 1 bewertet wurden.
c2. "ListL2" {join("x",if(Q1_SQ001==2,"01",""),if(Q1_SQ002==2,"02",""),if(Q1_SQ003==2,"03",""),if(Q1_SQ004==2,"04",""),if(Q1_SQ005==2,"05",""),if(Q1_SQ006==2,"06",""),if(Q1_SQ007==2,"07",""),if(Q1_SQ008==2,"08",""),if(Q1_SQ009==2,"09",""),if(Q1_SQ010==2,"10","")}

d. "ListL" {str_replace("X","",join(ListL1.NAOK,ListL2.NAOK))} - Füge die beiden Texte zusammen und entferne das "X"
e. "eqRandLowA" {if(is_empty(eqRandLowA),rand(0,(strlen(ListL)-1)/2-1),eqRandLowA)} Erzeuge eine Zufallszahl von 0 bis zur Länge des Textes-1
f. "W1" {substr(ListL,1+2*eqRandLowA,2)} Speichere den an dieser Stelle stehenden Wert
g. "List2L" {str_replace(W1,"",ListL)} Entferne den Wert aus der Liste
Und danach machen wir dasselbe noch für einen zweiten Wert.

Beispielstudie

File Attachment:

File Name: limesurvey...9667.lss
File Size:86.73 KB



2. Zuweisung von Werten zu einer Frage
Die andere Art, Fragen vom Typ Gleichung zu nutzen, ist die Zuweisung von Werten.
a. Zunächst das triviale Beispiel.
Einfachnennung (E1)
{E1=2}
Damit wird bei Frage E1 der Code 2 ausgewählt.
Mehrfachnennung (M1)
{M1_SQ002="Y"}
{M1_SQ005="Y"}
{M1_SQ006="Y"}

Damit werden bei Frage M1 die Teilfrage 2, 5 und 6 ausgewählt.

Wie man sieht, können hier mehrere Befehle in einer Frage stehen; im Gegensatz zu Teil 1 wird hier ja nichts unter der Variablen "GL" gespeichert.

b. Nehmen wir ein klassisches Beispiel:
Zunächst wird in einer Mehrfachnennung (M1) gefragt "Welche Fleischsorten essen Sie denn so?"
Darauf folgt die Einfachnennung (E1): "Welche diesenr Fleischsorten präferieren Sie?
Natürlich muss ich diese Frage nicht stellen, wenn in der Mehrfachnennung nur eine Sorte genannt wurde.
Also überspringt man die Frage. Damit die Daten aber konsistent sind, wird der Code dieser einen Fleischsorte mittels Gleichung in die Frage E1 hineingeschrieben.
Wissend, dass in Mehrfachnennungen gewählte Teilfragen die Antwort "Y", nicht gewählte dagegen "", kann man also schreiben:
{E1=IF(M1_SQ001=="Y",1,IF(M1_SQ002=="Y",2,IF(M1_SQ003=="Y",3,4)))}
Dies ist ein verschachteltes IF, weil der FALSCH-Teil des ersten IFs wieder ein neues IF beinhaltet.
WENN M1_SQ001=="Y" ist, wird E1 auf 1 gesetzt, SONST WENN M1_SQ002=="Y" ist, wird E1 auf 2 gesetzt, SONST WENN M1_SQ003=="Y" ist, wird E1 auf 3 gesetzt, SONST wird E1 auf 4 gesetzt.

3. Nutzung in Relevanzgleichungen
Bei der Nutzung der Funktionen in Relevanzgleichungen werden KEINE geschweiften Klammern gesetzt
Alle Funktionen können nun auch benutzt werden, um zu definieren, ob eine Frage angezeigt wird oder nicht.
a. Wieder die einfachste zuerst:
E1==2 Wenn in E1 der Code 2 gewählt wurde, wird diese Frage angezeigt, sonst nicht
count(M1)>0 Wurde in dieser Mehrfachnennung zumindest ein Item audsgewählt
strpos(O1,"blau")>0 Wurde in der Textfrage O1 das Wort "blau" benutzt.
Natürlich lassen sich diese logischen Terme mit AND und/oder OR verknüpfen (wie wir es in der Schule gelernt haben)
strpos(O1,"blau")>0 OR strpos(O1,"rot")>0 Wurde in der Textfrage O1 das Wort "blau" oder "rot" benutzt.
E1>2 AND E2!=6 Wurde in E1 ein Wert größer 2 und in E2 ein Wert ungleich 6 gewählt.

Joffm

P.S.
Diese Funktionen sollten nicht aus einem Textprogramm o.ä. in LimeSurvey hineinkopiert werden.
Dabei kann es passieren, dass der Editor Zeichen wie ">" in die HTML-Entity "&gt;" ändert. Dies führt dann zu einer falschen Syntax.
Auch Zeilenumbrüche sind zu vermeiden. Der Editor liebt das Einfügen von <p> und </p>
Empfehlung: In der Quellcode-Ansicht überprüfen, dass wirklich nur der gewünschte Code dort steht.

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 5 years 2 weeks ago by Joffm.
The topic has been locked.
Moderators: holchJoffmtpartner

Lime-years ahead

Online-surveys for every purse and purpose