0 votes
in SoSci Survey (dt.) by s101517 (135 points)

Liebes SoSci-Team

ich möchte eine Reihe von Paarvergleichen abfragen, um die Präferenzordnungen hinsichtl. politischen Parteien zu ermitteln. Das Bild zeigt exemplarisch, wie die Frage dargestellt werden soll. Ich bin nicht auf eine bestimmte Darstellung beschränkt. Die Antwortmöglichkeiten sollen jedoch in einer Reihe positioniert sein.

Insgesamt sollen 6 Parteien jeweils miteinander verglichen werden, was zu insgesamt 15 Fragen führt. Folgende Punkte müssten dabei jedoch beachtet werden:

  1. Die Reihenfolge, in der die Paarvergleich abgefragt werden (1. CSU vs. SPD, 2. CSU vs. FDP, ...) soll zufällig erfolgen

  2. Die Reihenfolge, in der die Parteien dargestellt werden (CSU vs SPD, SPD vs. CSU), soll zufällig erfolgen

  3. Die Ausweichkategorien (Beide gleich, Keine, Weiß nicht) sollen nicht rotieren

  4. Die Werte der Parteien soll für alle Fragen gleich sein, d.h.:

CSU = 1
SPD = 2
FDP = 3

ergibt für die Paarvergleiche:
1. CSU vs. SPD: 1 vs. 2
2. CSU vs. FDP: 1 vs. 3
3. FDP vs. SPD: 2 vs. 3 usw.

Ich bin für jeden Hinweis dankbar!

Liebe Grüße

1 Answer

0 votes
by SoSci Survey (327k points)
selected by s101517
 
Best answer

Bevor Sie alles Rotieren, klären Sie bitte, ob das tatsächlich sinnvoll ist im Rahmen Ihrer Studie: https://www.soscisurvey.de/help/doku.php/de:create:rotation#sinn_und_unsinn_der_rotation

Die Reihenfolge, in der die Parteien dargestellt werden (CSU vs SPD, SPD vs. CSU), soll zufällig erfolgen

Ich fange einmal hiermit an. Diese Anforderung disqualifiziert die "Auswahlabfolge", die vieles andere vereinfacht hätte. Dort kann man nicht einfach einige Optionen "festpinnen" und andere variieren.

Stattdessen kommt eine Auswahl zum Einsatz. Diese wird in der Darstellungsvariante "Kärtchen" angelegt und die Kärtchen sollten 5-spaltig dargestellt werden. In der Frage kann man dann die Rotation für die Auswahloptionen aktivieren ("Sortierung der Items/Auswahloptionen") und bei den 3 "fixen" Optionen setzt man das Kreuzchen, dass diese nicht rotiert werden sollen.

Die Werte der Parteien soll für alle Fragen gleich sein, d.h.:

Da müssen Sie ein wenig schummeln und in den Auswahlfragen erstmal alle (!) möglichen Optionen eintragen. Und wenn die Codes dann vergeben sind, löschen Sie die überflüssigen wieder.

Oder anders gesagt: Sie legen erstmal eine Auswahlfrage mit allen Parteien + 3 Zusatzoptionen an, dann optimieren Sie alles, dann erstellen Sie 15 Kopien der Frage und dann löschen Sie.

Eine Extra-Kopie schadet nicht, sollte man sich irgendwo "verlöschen" :)

Die Reihenfolge, in der die Paarvergleich abgefragt werden (1. CSU vs. SPD, 2. CSU vs. FDP, ...) soll zufällig erfolgen

Fragen in zufällige Abfolge anzuzeigen ist dann wieder trivial und in der Anleitung Rotation erklärt.

by s101517 (135 points)
Super, vielen Dank für die Anleitung. Es funktioniert wie gewünscht.

Ergänzend dazu zwei weitere Fragen:

Gibt es die Möglichkeit, die Reihenfolge in der...
1. die Fragen angezeigt werden, abzuspeichern?
2. die Parteien innerhalb einer Frage angezeigt werden, abzuspeichern?
by SoSci Survey (327k points)
ad 1) https://www.soscisurvey.de/help/doku.php/de:create:functions:put#beispielrandomisierung_i - Sie müssen sich zwischen dem Abspeichern der Reihenfolge als Rang oder als Nummer entscheiden.

ad 2) Da Sie in jeder Frage ohnehin nur 2 Parteien anzeigen/zur Auswahl bieten, kann ich hier noch nicht ganz den Sinn Ihres Anliegens erfassen?!
by s101517 (135 points)
zu 1) vielen Dank! Ich werde es probieren, umzusetzen.

zu 2) Ich weiß zwar, für welche Partei man sich entschieden hat, jedoch soll ebenfalls erfasst werden, in an welcher Position (links, rechts bzw. oben, unten in der mobilen Version) die Parteien erscheinen. Bspw. kommt es vor, dass tatsächlich nur 2 Parteien in Frage kommen, z.B. SPD und Grüne. Eine Rangfolge ist aus den Vergleichen mit den anderen Parteien nicht abzuleiten. Die einzige Information, welche Partei präferiert wird, entstammt dem direkten Vergleich. Um zu verhindert, dass eine Partei präferiert wird, nur weil sie zuerst genannt wurde, sollen alle, die nur die beiden Parteien in Erwägung ziehen, auf Basis der Rangfolge in Vergleichgruppen sortiert werden.
by SoSci Survey (327k points)
Nun, in diesem Fall müssen Sie sich um die Rotation der Antwortoptionen selbst kümmern und die Abfolge mittels put() abspeichern.

Für die manuelle Rotation erstellen Sie zunächst ein Array mit den verfügbaren Optionen - hier hilft getItems('...', 'all') - entfernen die fixen Optionen, mischen mit shuffle(), speichern mit put() - s. Anleitung zu put() - ergänzen dann wieder die fixen Optionen in dem Array und zeigen dann erst die Frage an.
by s101517 (135 points)
edited by s101517
Nochmals zum Abspeichern der Fragenreihenfolge (Punkt 1) von oben):

Ich habe 15 Fragen, deren Reihenfolge randomisiert sein soll. Die zufällig generierte Reihenfolge soll abgespeichert werden.

Gemäß folgender Anleitung haben ich...

https://www.soscisurvey.de/help/doku.php/de:create:functions:put#beispielrandomisierung_i

1. Eine interne Variable mit 15 Ausprägungen erstellt
2. Je eine Seite pro Frage erstellt
3. Eine Seite vor den 15 Frage-Seiten erstellt, auf der ich folgenden Code (gemäß der Anleitung) platziert habe.

$pages = array('CM01','CM02','CM03','CM04','CM05','CM06','CM07','CM08', 'CM09', 'CM10', 'CM11', 'CM12', 'CM13', 'CM14', 'CM15');
// Die Seiten nicht direkt mischen, sondern deren Positionen
$indices = array_keys($pages);
shuffle($indices);
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $random speichern
$random = array();
for ($i=0; $i<count($indices); $i++) {
  // Rang speichern wie oben
  $id = id('CM18', $indices[$i] + 1);
  put($id, $i + 1);
  // Seite in der Abfolge speichern
  $random[$i] = $pages[$indices[$i]];
}
// Neue Seitenabfolge setzen
setPageOrder($random);

CM01-15 stehen für die jeweiligen Seiten, CM18 ist meine interne Variable.

Leider erreiche ich das Ergebnis nur teilweise: Die 15 Fragen werden nun zufällig dargestellt. Wird jedoch nicht CM15 (die letzte Seite) tatsächlich auch als letzte Seite angezeigt, werden die Fragen entsprechend der aufsteigenden Seitenreihenfolge angezeigt.

Randomisierung mit CM15 als letzte Frage:
(Seite) (Frage)
(1) 14
(2) 06
(3) 05
(...) ...
(15) 15 -> Frage endet

Randomisierung mit CM15 nicht als letzte Frage:
(Seite) (Frage)
(1) 14
(2) 06
(3) 05
(...) ...
(15) 10 -> Frage endet nicht und die bereits gezeigten Fragen 11 bis 15 werden erneut dargestellt
(16) 11
(17) 12
(18) 13
(19) 14
(20) 15
by SoSci Survey (327k points)
> Leider erreiche ich das Ergebnis nur teilweise: Die 15 Fragen werden nun zufällig dargestellt. Wird jedoch nicht CM15 (die letzte Seite) tatsächlich auch als letzte Seite angezeigt, werden die Fragen entsprechend der aufsteigenden Seitenreihenfolge angezeigt.

In Ihrem Code fehlt beim setPageOrder() noch die Seite, wo es anschließend weitergehen soll. Dies war tatsächlich ein Fehler in der Anleitung, der nun behoben ist. Bitte geben Sie der Seite nach CM15 noch eine Kennung und tragen Sie diese in setPageOrder() ein.
by s101517 (135 points)
Zunächst einmal vielen Dank für die Hilfe! Das Abspeichern der Reihenfolge hat super geklappt.

Um nun die Itemreihenfolge zu speichern, habe ich jeweils eine Kopie der Frage erstellt und die Reihenfolge händisch angepasst.

Nun habe ich für jede es Befragungspaar eine Seite erstellt, auf der ich per random() zufällig eine Frage der Paarung ziehen lasse.

Leider führt dies dazu, dass die Seiten unendlich oft wiederholt werden und somit die zufällig gezogenen Fragen mehrfach angezeigt werden.

Hier ein Beispiel mit 6 zufällig zu rotierenden Seiten:
R01: Frage1 oder 2
R02: Frage3 oder 4
R03: Frage5 oder 6
R04: Frage6 oder 8
R05: Frage9 oder 10
R06: Frage11 oder 12

Auf der ersten Seite findet sich folgender Code zur Rotation der Seiten:

$pages = array('R01','R02','R03','R04','R05','R06');

// Die Seiten nicht direkt mischen, sondern deren Positionen

$indices = array_keys($pages);
shuffle($indices);
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $random speichern
$random = array();
for ($i=0; $i<count($indices); $i++) {
  // Rang speichern wie oben
  $id = id('CM34', $indices[$i] + 1);
  put($id, $i + 1);
  // Seite in der Abfolge speichern
  $random[$i] = $pages[$indices[$i]];
}
// Neue Seitenabfolge setzen
setPageOrder($random, 'AF');

// Zufällige Anzeige einer aus zwei Fragen:

// Eine ganze Zahl zwischen 1 und 2 würfeln
$zahl = random(1,2);
// Die gewürfelte Zahl im Datensatz abspeichern
put('CM33_01', $zahl);
// Und davon abhängig Textbaustein "text1" oder "text2" anzeigen
if ($zahl == 1) {
  question('CM01');
} else {
  question('CM02');
}

Es funktioniert leider immer nur eine Rotation.
by SoSci Survey (327k points)
Der Code "Zufällige Anzeige einer aus zwei Fragen" steht auf jeder der Seiten R01 bis R06?

Warum gibt es pro Seite gleich nochmal 2 mögliche Fragen?
by s101517 (135 points)
Es werden Paarvergleiche abgefragt:

Welche Partei bevorzugen Sie, wenn Sie sich entscheiden müssten?
Paar 1:
Variante1: CSU vs. SPD
Variante2: SPD vs. CSU

Paar2:
Variante1: CSU vs. Grüne
Variante2: Grüne vs. CSU

Daraus ergeben sich 15 Paare à 2 Fragen. Aus jedem Paar wird nur eine Variante der Frage gestellt und die Reihenfolge der Paare soll randomisiert sein.

Es soll sowohl die Reihenfolge in der die Paare erscheinen, abgespeichert werden, sowie welche Variante des Vergleichs abgefragt wird.

Den genannten Fehler konnte ich beheben, indem ich den Teil der Randomisierung der Paare (im Beispiel nur 6 Stück) auf eine Seite vor allen anderen Seiten gestellt habe:

$indices = array_keys($pages);
shuffle($indices);
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $random speichern
$random = array();
for ($i=0; $i<count($indices); $i++) {
  // Rang speichern wie oben
  $id = id('CM34', $indices[$i] + 1);
  put($id, $i + 1);
  // Seite in der Abfolge speichern
  $random[$i] = $pages[$indices[$i]];
}
// Neue Seitenabfolge setzen
setPageOrder($random, 'AF');

Für die zweite Randomisierung habe ich den jeweiligen Code auf die Seiten R01-R06 angelegt, sodass jeweils eine Variante der Frage gezogen wird. Hier das Beispiel für R01

// Eine ganze Zahl zwischen 1 und 2 würfeln
$zahl = random(1,2);
// Die gewürfelte Zahl im Datensatz abspeichern
put('CM33_01', $zahl);
// Und davon abhängig Textbaustein "text1" oder "text2" anzeigen
if ($zahl == 1) {
  question('CM01');
} else {
  question('CM02');
}

Mittlerweile funktionieren beide Randomisierungen.

Allerdings gibt es nun ein neues Problem: Wenn eine der Fragen nicht beantwortet wird (eine Antwort muss gegeben werden), wird die Seite neu geladen und von neuem ausgelost, welche Frage angezeigt wird.

Beispielsweise:
Es wird mir folgender Variante des Paarvergleichs angezeigt:

CSU vs. SPD

Ich gebe keine Antwort woraufhin ein Hinweis erscheint, dass ich die Frage beantworten muss. Durch das erneute Laden wird mir nun jedoch die andere Variante angezeigt:

SPD vs. CSU

Derselbe Fehler besteht, wenn ich mit den Zurück-Button betätige. D.h. wie lässt es sich bewerkstelligen, dass nur einmal ausgelost wird, welche Frage auf einer Seite erscheint?
by s101517 (135 points)
Vielen Dank für die bisherige Hilfe und die geduldigen Erklärungen!

Das Problem habe ich durch einen Zufallsgenerator gelöst, den ich auf jede Seite, wo eine der beiden Varianten einer Frage ausgewählt werden soll, gelegt habe. Der gezogene Wert wird dann in eine interne Variable übergeben!

Problem kann als gelöst markiert werden.

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

...