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

0 votes

Liebes SoSciSurvey-Team,

wir erstellen gerade ein Experiment, bei dem die TeilnehmerInnen immer zwei Satzanfänge und zwei Satzenden präsentiert bekommen und dann zuordnen sollen, welche am besten zusammenpassen. Dafür nutzen wir den Aufgabentyp „Rangordnung“. Jetzt haben wir 7 Itempaare (sicher-unsicher), von denen zufällig eins präsentiert werden soll.

Ich habe verschiedene Ansätze, stoße aber bei jedem auf ein Problem:

Ansatz 1. Ich habe im Fragenkatalog 14 Items (statt 2) jeweils mit einem Sicherheitswort erstellt.
Die Idee war es über random_items() aus den 7 unsicheren Wörtern eins zufällig zu ziehen und dann mit einem if-elseif
statement, abhängig vom gezogenen Wort, das richtige sichere Wort zu wählen. Ich habe 14 Interne Variablen abgespeichert, sehe also im Nachhinein welche Items gewählt wurden
Ich habe den Code einer Vorgängerversion stehen lassen, gehe aber davon aus, dass man das irgendwie integrieren muss)

// Code der Vorgängerversion
if (!isset($items_L111)) {
  $items_L111 = getItems('L111', 'all');
  shuffle($items_L111);
  registerVariable($items_L111);
}

// mein Code

$items_1 = random_items('1,3,5,7,9,11,13', 1); // zufällig ein Item ziehen


// Paar vervollständigen
if ($items_1 == '1') {
  $items_2 = '2 ';
} elseif ($items_1 == '3' ) {
  $items_2 = '4 ';
} elseif ($items_1 == '5 ') {
  $items_2 = '6 ';
} elseif ($items_1 == '7 ') {
  $items_2 = '8 ';
} elseif ($items_1 == '9') {
  $items_2 = '10 ';
} elseif ($items_1 == '11') {
  $items_2 = '12 ';
} else {
  $items_2 = '14 ';
};

question('L111', $items_1)

Die Probleme:
- wenn ich das so mache, wird nur ein Satz + 1 Item gezeigt, da ich $items_2 nicht an den question() Befehl übergebe
- wenn ich allerdings question('L111', [$items_1, $items_2]); versuche, geht es nicht weil kein Array verwendet werden darf. Tatsächlich bekomme ich dieses Problem nicht, wenn ich
if ($items_1 = '1') {
$items_2 = '2 ';
} (also nur ein = Zeichen) verwende, dann bekomme ich die richtigen Paare angezeigt aber das if-statement funktioniert nicht, ich bekomme immer das gleiche Paar.

Ansatz 2:
Hier habe ich nur 2 Items im Fragenkatalog und formuliere diese als Platzhalter: %sicher%; %unsicher%
Im PHP Code, erstelle ich eine Liste der unsicheren Wörter, ziehe davon zufällig eines und ersetze den Platzhalter dadurch. Im Endeffekt soll dann auch wieder ein if-elseif statement für die sicheren Wörter verwendet werden, da ich aber jetzt schon Probleme haben lasse ich erstmal eine Version. Das ganze funktioniert im Fragebogen wunderbar, ich sehe so aber im Datensatz nicht, welches Item gezogen wurde, das bringt ja nichts. Das Ganze soll auch über put abgespeichert werden, der Befehl nimmt allerdings keine arrays...

// Code der Vorgängerversion
if (!isset($items_L102)) {
  $items_L102 = getItems('L102', 'all');
  shuffle($items_L102);
  registerVariable($items_L102);
}

// Liste der unsicheren Wörter
$array = array('möglicherweise', 'unter Umständen', 'womöglich', 'gegebenenfalls', 'vermutlich', 'vielleicht','eventuell');
// zufällig eines davon ziehen
$a = array_rand($array);
// das Gezogene einsetzen
replace('%unsicher%', $array[$a]);
//vorläufige Version sicherer Wörter
replace('%sicher%', 'auf jeden Fall');

question('L102', $items_L102);

for ($i=0; $i<count($items_L102); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Inhalt des Elements (!) erstellen
  $id = id('IV02', $items_L102[$i]);
  // Hier den Rang speichern
  put($id, $i + 1);
}

Wie kann ich die Auswahl mithilfe put abspeichern?

Ansatz 3: Das Ganze über Urnenziehung durchführen, allerdings ist die Idee neu und ich habe noch nicht ganz verstanden wie es funktioniert.

Ich arbeite das erste Mal mit PHP und kann strukturelle Probleme gerade schwierig einschätzen und verbessern.
Ich hoffe, es sind alle Infos vorhanden und es ist verständlich beschrieben.
Vielen Dank für die Hilfe!

in SoSci Survey (dt.) by s146525 (110 points)
edited by SoSci Survey

1 Answer

0 votes

Als kleinen Tipp vorweg: Es gibt ziemlich neu einen Fragetyp "Lückentext (geschlossen)" ... womöglich passt dieser optisch besser zu Ihrer Aufgabenstellung als die Rangordnung.

Jetzt haben wir 7 Itempaare (sicher-unsicher), von denen zufällig eins präsentiert werden soll.

Gut, dann würde ich vorschlagen, dass Sie mit einem Zufallsgenerator starten, der einen von 7 Zetteln zieht. Alles andere erachte ich als unnötig komplex und entsprechend fehleranfällig.

Wenn Sie künftig zwei Werte randomisieren möchten, müssten Sie bitte konkretisieren, ob das "sicher" systematisch mit dem "unsicher" variiert wird (also immer fixe Paare) oder ob das ebenfalls untereinander randomisiert wird (also 7x7 = 49 Möglichkeiten).

Was die Verwendung des Zufallswertes angeht, würde ich es von hinten betrachten: Was möchten Sie denn am Ende auswerten? Es gibt hier zwei Möglichkeiten:

1) Sie brauchen im Wesentlichen das "sicher" v. "unsicher" und haben die Information, welches Wort dafür jeweils verwendet wurde nur als Kontrollvariable bzw. Covariate oder

2) Sie brauchen im Wesentlichen genau das Wort, das verwendet wurde, hätten das also gerne in einer einzigen Variable pro Option.

Im ersten Fall ist die Platzhalter-Lösung besser geeignet, um zweiten Fall würde Sie besser mittels question() die beiden passenden Items bzw. Optionen anzeigen. Ich empfehle, dass Sie sich genau ünberlegen, wie Sie die Auswertung rechnen möchten und in Abhängigkeit davon überlegen wir dann, wie die gewünschte Variablenstruktur am besten erhoben werden kann.

Natürlich können Sie beide Informationen auch jederzeit wieder ineinander umkodieren.

by SoSci Survey (250k points)
Erst einmal vielen Dank für die schnelle Antwort und auch den Tipp, ich überlege mir auf jeden Fall den Lückentext zu wählen, das scheint wirklich gut geeignet zu sein.
Bezüglich den Unklarheiten:
Es soll 7 fixe Paare sein, also immer die gleichen Wörter zusammen auftauchen.
In der Auswertung brauche ich auch das genau verwendete Wort, damit in der späteren Analyse festgestellt werden kann, ob alle Paare gleich gut funktioniert haben.
Vielen Dank auch für den Tipp mit dem Zufallsgenerator.
Ich habe jetzt diesen erstellt und 7 Zettel, einer pro Wortpaar.
1 = definitiv, eventuell
2 = fraglos, womöglich
3 = mit Sicherheit, unter Umständen
4 = ohne Frage, vermutlich
5 = sicher, vielleicht  
6 = zweifelsfrei , gegebenenfalls

aktuell komme ich auf diesen Code:
//speichern der gezogenen Zettel
$items_L167 = putList('IV02', value('Z101', 'csv'));

//präsentieren der gezogenen Zettel
replace('%sicher%', value('IV02_01'));
replace('%unsicher%', value('IV02_02'));

question('L167',$items_L167 );

for ($i=0; $i<count($items_L167); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Inhalt des Elements (!) erstellen
  $id = id('VV02', $items_L167[$i]);
  // Hier den Rang speichern
  put($id, $i + 1, );
}

Das ist jetzt eine erste Version, die auch anzeigt wie es aussehen solte.
Ich habe nur den Eindruck, dass ich mir den putList Befehl sparen kann, da auch die Variable Z101 (Zufallsgenerator) abgespeichert wird und mir angibt, welcher Zettel gezogen wurde.
Jetzt funktioniert der For-loop nur nicht mehr,
* Fehler im Fragebogen: count(): Parameter must be an array or an object that implements Countable*
Das heißt, die Antwort wird nicht im Datensatz gespeichert.
Außerdem war ursprünglich ja:
// Code der Vorgängerversion
if (!isset($items_L102)) {
  $items_L102 = getItems('L102', 'all');
  shuffle($items_L102);
  registerVariable($items_L102);
}
Durch die Veränderungen kann ich den Shuffle Befehl so nicht mehr anwenden. Eine ausbalancierte Rangordnung wäre aber praktisch, um Reihenfolge zu vermeiden.

Allgemein freue ich mich gerade sehr, dass ich durch Ihre Tipps ein Stück wieter gekommen bin, vielen Dank.
> Das ist jetzt eine erste Version, die auch anzeigt wie es aussehen solte.

Gut, das sind doch gute Fortschritte :)

> In der Auswertung brauche ich auch das genau verwendete Wort, damit in der späteren Analyse festgestellt werden kann, ob alle Paare gleich gut funktioniert haben.

Wie führen Sie die Analyse denn genau durch? Ich persönlich hätte bei "ob alle Paare gleich gut funktioniert haben" spontan an eine zweifaktorielle ANOVA gedacht, wo Sie das Paar und die Entscheidung in separaten Variablen brauchen - und sich dann die Interaktion ansehen.

> Ich habe nur den Eindruck, dass ich mir den putList Befehl sparen kann, da auch die Variable Z101 (Zufallsgenerator) abgespeichert wird und mir angibt, welcher Zettel gezogen wurde.

Ja, der Zufallsgenerator speichert den Code, das putList() sollte zusätzlich nochmal die Wörter dazu abspeichern. Redundant, schadet aber nicht. Wenn Sie das nicht verwenden möchten, müssten Sie das replace() natürlich ein wenig anpassen:

$words = value('Z101', 'csv');
replace('%sicher%', $words[0]);
replace('%unsicher%', $words[0]);

> Fehler im Fragebogen: count(): Parameter must be an array or an object that implements Countable*

Die Funktion putList() gibt nichts zurück, daher wird in $items_L167 einfach gar nichts gespeichert. Und Ränge haben Sie auch keine. Und Items auch nicht ... also alles ab question() scheint mir hier inhaltlich nicht ganz sinnvoll.

Wenn Sie mit replace() und Platzhaltern arbeiten, dann brauchen Sie nur eine feste Frage mit 2 Items.

Wenn Sie es auf die Items verteilen möchten (klären Sie vorher exakt, was Sie rechnen wollen!), dann schreiben Sie die ersten 7 Begriffe in die Items 1-7 und die anderen in die Items 8-14 und schreiben Sie...

$code = value('Z101');
question('L167', [$code, $code+7]);

Das ist schon alles :)
>Wie führen Sie die Analyse denn genau durch?
Es ist ein Mixed Effect Model geplant, in dem das Wortpaar zusätzlich herangezogen wird.

Dass das ganze jetzt so unkompliziert funktionier, hätte ich anfangs nicht gedacht. Vielen Dank für die schnelle Reaktion!
> Es ist ein Mixed Effect Model geplant

Meines Erachtens wäre die Lösung mit 2 separaten Variaben (eine für die Intensität, eine für die Zuordnung) dann besser für die Auswertung geeignet. Aber Sie können ja mal fix zwei Datensätze mit je 5 Fällen den unterschiedlichen Datenstrukturen basteln und prüfen, was Sie für die Auswertung wirklich brauchen.
...