0 votes
in SoSci Survey (dt.) by s234647 (145 points)

Hallo,

Ich möchte folgendes Design umsetzen:
Es gibt ein Set an 100 Wörtern. In Teil A werden diese 100 Wörter z.B. auf einer Skala von 1-5 geratet (wie sehr gefällt mir das Wort), in Teil B werden die 100 Wörter hinsichtlich Vertrautheit bewertet (wie vertraut bist du mit dem Wort).
Jede Person soll eine Zufallsauswahl der 20 Wörter erhalten. Es ist wichtig, dass dann erst Teil A mit 20 Wörter bearbeitet wird, und anschließend Teil B mit DENSELBEN 20 Wörtern, aber der entsprechend anderen Antwortskala präsentiert wird.

Wie kann ich dies am besten umsetzen?

by SoSci Survey (302k points)
Wie hätten Sie denn die Datenstruktur gerne? Möchten Sie die Bewertungen zu einem Wort immer in derselben Variable haben oder möchten Sie nur 20x Variablen und die Zuordnung am Ende in der Statistik-Software vornehmen?

2 Answers

0 votes
by SoSci Survey (302k points)
selected by s234647
 
Best answer

Wenn das Ziel darin besteht, dass Sie fix eine Variable pro Wort bekommen, dann sind das im Datensatz insgesamt 200 Variablen - je zwei Bewertungen pro Wort.

Nun gibt es eine kleine Einschränkung in SoSci Survey, die Sie beachten müssen: Es sind nur 99 Items pro Frage erlaubt, keine 100. Sie benötigen also pro Bewertungskategorie (wovon Sie 2 haben) jeweils 2 Fragen à 50 Items. Nehmen wir mal an, das sind

AB01 + AB02 für "Gefallen" und
BB01 + BB02 für "Vertraut sein"

Außerdem benötigen Sie natürlich noch einen Zufallsgenerator (nennen wir ihn mal RG01), in welchem Sie die 100 Wörter hinterlegen, und wo Sie festlegen, dass Sie 20 Zettel/Codes/Wörter pro Interview ziehen. Die Zettel müssen hier dieselbe Reihenfolge haben, wie in den Fragen, also

Wort 1 -> Code 1 -> AB01_01
Wort 2 -> Code 2 -> AB01_02
...
Wort 50 -> Code 50 -> AB01_50
Wort 51 -> Code 51 -> AB02_01
Wort 52 -> Code 52 -> AB02_02
...
Wort 100 -> Code 100 -> AB02_50

Ob in der Frage dann wirklich nochmal das Wort steht oder ob da 2x50-mal "gefällt mir" steht und 2x50-mal "ist mir vertraut", das machen Sie bitte davon abhängig, was angezeigt werden soll.

So, jetzt müssen Sie nur noch der Reihe nach die gezogenen Wörter präsentieren und abfragen.

// Zufallsgenerator auslesen
$codes = array_values(valueList('RG01'));
$woerter = array_values(valueList('RG01', 'label'));

// Seite 20-mal wiederholen - einmal pro Code
$i = loopPage(20);
$code = $codes[$i];
$wort = $woerter[$i];

// Wort präsentieren
html('<h1>'.htmlspecialchars($wort).'</h1>');

// Fragen auswählen und anzeigen
if ($code <= 50) {
  question('AB01', $code);
  question('BB01', $code);
} else {
  question('AB02', $code - 50);
  question('BB02', $code - 50);
}
by s234647 (145 points)
Vielen Dank, das hilft schonmal!
Nun gibt es eine weitere Besonderheit, die ich unterschlagen habe, um es nicht unnötig kompliziert zu machen, die nun aber relevant ist. Das Antwort Format A ist für jede Frage identisch (d.h. eine Likertskala mit denselben Antwortalternativen). Das Antwortformat B unterscheidet sich für jedes Wort, da es um eine Wissenstestung geht, bei der für jedes Wort verschiedene Distraktoren (= Antwortalternativen) angezeigt werden.

Beispiel:

Wort1 = sensibel
Wort2 = zurückhaltend

Format A:
sensibel : trifft zu - neutral - trifft nicht zu
zurückhaltend: trifft zu - neutral - trifft nicht zu

Format B:
sensibel: traurig - glücklich - schüchtern - emotional
zurückhaltend: aufgeregt - eingeschnappt - überschwenglich - schüchtern

für Format B muss ich für jedes Wort dann doch eine separate Frage anlegen, oder? Wie wirkt sich das auf die if-else Bedingung aus?
by SoSci Survey (302k points)
Sehen Sie sich bitte mal die Auswahlabfolge an - vielleicht lässt sich Ihr Eingabeformat damit sinnvoll realisieren (wenn Sie in der Frage einstellen, dass es keine Kärtchen sein sollen, sondern eine sichtbare Auswahl).

Falls Sie doch auf 100 einzelne Fragen (in 2 Kategorien dann) ausweichen müssten, dann müssten Sie im IF-Filter am Ende einfach klären, wie Sie die passenden IDs bekommen. Bei vier Rubriken AA/AB und BA/BC und jeweils 50 Fragen wäre das fast identisch zur Item-Lösung:

if ($code <= 50) {
  question(id('AA', $code));
  question(id('BA', $code));
} else {
  question(id('AB', $code - 50));
  question(id('BB', $code - 50));
}

Jedenfalls nicht schlimm :)
by s234647 (145 points)
Vielen Dank für die schnelle Rückmeldung!
Ich denke ich muss auf die einzelnen Fragen ausweichen.

Ich bekomme dann alleridings die Fehlermeldung, dass die Funktion "question" (die ich zuvor bei der itemlösung problemlos anwenden konnte) nicht bekannt ist. Außerdem scheint es Probleme bei der Zuordnung der codes und label in dem Zufallsgenerator zu geben. Ich habe es wie oben beschrieben mit "Wort -> Code -> Item/Frage" versucht, ebenfalls auch mal die "->" durch "=" ersetzt. Egal wie ich es mache, im Zufallsgenerator wird automatisch nochmal ein Code vornedran gestellt der dann von "001" bis "050" durchläuft.

So kann ich aber nicht auf meine einzelnen Fragen zugreifen, da die ja "AB01_01" als id haben (und nicht AB01_001"). Ich hoffe ich konnte das Problem verständlich beschreiben.
by SoSci Survey (302k points)
Beim Zufallsgenerator gibt es ein kleines Missverständnis. Das was ich oben geschrieben habe, war zur Erklärung. Was tatsächlich im Zufallsgenerator steht, ist einfach ein Wort unter dem anderen. SoSci Survey schreibt dann beim Speichern noch ein 1=, 2=, ... davor.

> Ich bekomme dann alleridings die Fehlermeldung, dass die Funktion "question" (die ich zuvor bei der itemlösung problemlos anwenden konnte) nicht bekannt ist.

Posten Sie bitte den exakten Wortlaut der Fehlermeldung, danke.

> So kann ich aber nicht auf meine einzelnen Fragen zugreifen, da die ja "AB01_01" als id haben

Machen Sie sich um die führenden Nullen bitte keine Gedanken - die Funktion id() verwendet Zahlen, keine Texte. Und der Zufallsgenerator zeigt die Nullen auch nur der Übersichtlichkeit halber, auch er speichert nur Zahlen.
by s234647 (145 points)
Vielen Dank, das mit dem Zufallsgenerator war mir nicht klar.

Fehlermeldung ist folgende:

Fehler im Fragebogen: Im PHP-Code wurde in Zeile 13 eine Funktion   question() verwendet. Es gibt diese Funktion nicht.

PHP-Code

010 html('<h1>'.htmlspecialchars($wort).'</h1>');
011  
012 if ($code <= 50) {
013   question(id('A1', $code));
014   question(id('P1', $code));
015 }  else {
016   question(id('A2', $code - 50));
by SoSci Survey (302k points)
Könnten Sie bitte Ihren kompletten PHP-Code posten? Danke.

Meine vage Vermutung ist, dass beim Kopieren irgend etwas schief gelaufen ist, und dass da störende unsichtbare Zeichen vor dem question()-Befehl stehen. Ich würde nur gerne herausfinden, welche das sind.

Sie können (nach dem Posten des Codes) gerne versuchen, einfach mal die EInrückung vor dem question() zu entfernen. Wenn es dann funktioniert, hatte ich recht. Und Sie können dann natürlich wieder Leerzeichen oder ein Tab ergänzen.
by s234647 (145 points)
Vielen Dank, es klappt jetzt alles, tatsächlich hat das entfernen der Einrückung schon geholfen. 2 Dinge noch:

das folgende Codesnippet verursacht eine fehlermeldung:
$woerter = array_values(valueList('RG01', 'label'));

Die Fehlermeldung:

Fehler im Fragebogen (Seite 3)
Die Angabe label in der Funktion valueList() ist keine gültige Liste oder Angabe von Item-Kennungen.

durch auskommentieren kann ich den Fehler beheben (weil ich den html Teil sowieso nicht benötige), aber es wäre dennoch spannend zu wissen woher der Fehler kommt.

und abschließend habe ich noch eine letzte Frage zum Zufallsgenerator: Soll ich bei der Anzahl der zu ziehenden Zettel tatsächlich 20 angeben, oder die Gesamtzahl der Zettel? ich habe beim ausprobieren nämlich gerade festgestellt dass ich auch schon durch das anpassen der loopPages die Anzahl der präsentierten Zettel verändern kann. Daher bin ich nun unsicher, was die Einstellungen im Zufallsgenerator selber bewirken?

(noch einmal zur erläuterung: die 20 Zettel für einen Teilnehmer werden ohne zurücklegen gezogen. für den nächsten teilnehmer, liegen aber wieder alle 100 zettel im topf, und sollen auch wieder dieselbe ziehungswahrscheinlichkeit haben).
by SoSci Survey (302k points)
> Die Angabe label in der Funktion valueList() ist keine gültige Liste oder Angabe von Item-Kennungen.

Stimmt, es müsste heißen

$woerter = array_values(valueList('RG01', NULL, 'label'));

Ich hatte den zweiten Parameter vergessen, vgl. https://www.soscisurvey.de/help/doku.php/de:create:functions:valuelist

> Soll ich bei der Anzahl der zu ziehenden Zettel tatsächlich 20 angeben

Wenn Sie pro Interview nur 20 der 100 Zettel anzeigen wollen, dann ist die 20 genau richtig. Wenn Sie mehr ziehen als Sie anzeigen, dann kann der Zufallsgenerator nicht mer sicherstellen, dass alle Zettel gleich häufig abgefragt werden.

> für den nächsten teilnehmer, liegen aber wieder alle 100 zettel im topf

Nein, das möchten sie nicht ;) Sie möchten, dass für den zweiten nur noch 80 Zettel im Topf liegen. Sonst haben Sie bei 100 Zetteln am Ende nämlich sicher einige übrig, die nie oder fast nie gezogen wurden. Die Wahrscheinlichkeit der Ziehung ist über alle Teilnehmer:innen dadurch trotzdem gleich.
by s234647 (145 points)
Hallo nochmal,

Vielen Dank für die klasse Hilfe, es funktioniert nun alles wie geplant!
Eine Frage hätte ich zu der Anzeige der Items via :

if ($code <= 50) {
  question('AB01', $code);
  question('BB01', $code);
} else {
  question('AB02', $code - 50);
  question('BB02', $code - 50);
}

Mit diesem Code werden die Items jeweils separat auf einer Seite angeziegt, d.h. Probanden müssen nach jedem Item auf "weiter" klicken. Gibt es eine Möglichkeit, die Items zunächst in einer separaten Variable abzulegen, und dann mit "question" diese Variable zu rufen? Z.B. so, dass immer 5-10 Wörter auf einmal präsentiert werden?
by SoSci Survey (302k points)
Nur als Anregung: Die Auswahlfragen haben eine Einstellung, dass es nach Anklicken einer Antwort direkt zur nächsten Seite weitergeht.

> so, dass immer 5-10 Wörter auf einmal präsentiert werden?

Sie müssten die Anzahl der Wiederholungen in loopPage() auf 4 reduzieren und mit einer FOR-Schleife um den von Ihnen zitierten Code dann jeweils 5 Stück "abarbeiten", und zwar mit 5 * $i + $j, wobei $j die Zählvariable 1-5 wäre. Wenn Sie damit nicht direkt zum Ziel kommen, erstellen Sie bitte nochmal eine neue Frage mit dem Code, wie Sie ihn aktuell verwenden. Hier unten wird es langsam ein wenig unübersichtlich.
0 votes
by s234647 (145 points)

Ich möchte am Ende eigentlich 40 Variablen pro Person haben, d.h. die Bewertung von Max Mustermann zu Wort 1 aus Block A in Variable X abspeichern, und die Bewertung von Max Mustermann zu Wort 1 aus Block B in Variable Y abspeichern.

by SoSci Survey (302k points)
Bevor Sie das bauen: Stellen Sie sicher, dass Sie in der Auswertung auch damit umgehen können, wenn in IV01_01 einmal die Bewertung zu Wort 3 steht und einmal jene zu Wort 25. Wenn Sie sicher sind, dass Sie das wirklich wollen, dann fahre ich mit einer Antwort fort, wie man hier die Randomisierung umsetzen kann.
by s234647 (145 points)
Ich bin nicht sicher, ob ich den Bezug ihrer Antwort zu meiner angestrebten Datenstruktur verstehe. Am ende möchte ich die Daten wie folgt vorliegen haben:

Proband  | Wort1_A  | Wort2_A | Wort 3_A | ...| Wort1_B | Wort2_B | Wort3_B
--------------------------------------------------------------------------------------------------------
Pbn1       | x              |                |                 | ...| x              |                |                
Pbn2       |                 |  x            |                 | ...|                 | x             |               

usw


Inwiefern eine interne Variable dann zweimal bestückt wird, ist mir nicht ganz klar?
by SoSci Survey (302k points)
Wenn Sie 100 Wörter haben, dann hätten Sie mit dieser Struktur aber 2x100 = 200 Variablen und nicht 40. Aber so scheint es mir auf alle Fälle sinnvoller. Ich schreiben eine mögliche Lösung in eine separate Antwort.

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

...