0 votes
in SoSci Survey (dt.) by s359427 (120 points)
edited by SoSci Survey

Hallo zusammen,

ich möchte MaxDiff Fragen erstellen mit insgesamt 6 Items. Pro Teilnehmendem sollen 3 aufeinanderfolgende MaxDiff-Runden angezeigt werden, wobei in jeder Runde genau 4 unterschiedliche Items gezeigt werden. Zur Veranschaulichung: Es geht um 6 unterschiedliche Politikinstrumente, 4 davon sollen immer zur Auswahl stehen. Ziel ist es, die Präferenzen für die einzelnen Politikinstrumente zu ermitteln.

Um es noch etwas komplizierter zu machen: Es handelt sich auch noch um 3 unterschiedliche Sektoren. Jede:r Teilnehmer:in soll eine der drei Sektoren zu Auswahl bekommen.

Wichtig ist mir dabei:

  1. Die 4 Items pro Runde sollen zufällig sein.
  2. Idealerweise erscheint jedes Item gleich häufig (also jeweils 2-mal über die 3 Runden)

Mir ist nicht klar, wie ich das bewerkstelligen kann mit SoSci. Momentan versuche ich es so, ich habe einen Generator und danach folgendes:

if (value('PG01') == 1) {
  question('TR01', 'combine=TR04', 'gap=none');
} elseif (value('PG01') == 2) {
  question('TR05', 'combine=TR06', 'gap=none');
} elseif (value('PG01') == 3) {
  question('TR07', 'combine=TR08', 'gap=none');
}

pageCSS('
  td.s2col2 {
    text-align: center;
  }
'); 

Aber wie bekomme ich drei Runden?
Und wie die Auswahl aus den drei Sektoren?

Danke schon für die Hilfe!

Viele Grüße

1 Answer

0 votes
by SoSci Survey (370k points)

Fangen wir mal mit der Verteilung der 12 Items auf 3 Runden an. Ich würde hier empfehlen, dass Sie einen (zusätzlichen) Zufallsgenerator mit 12 Codes erstellen un daraus pro Interview 12 Codes ziehen (Einstellung im Zufallsgenerator).

Dadurch erhalten Sie eine Liste der 12 Zahlen in zufälliger Reihenfolge. Die ersten 4 nehmen Sie für Runde 1, die nächsten 4 für Runde 2 und die letzten 4 für Runde 3.

Damit das mit den Runden verlässlich funktioniert, brauchen Sie nun 3 Kopien der beiden Fragen. Eine pro Runde.

Und dann brauchen Sie alles mal 3 für die 3 Varianten. Macht insgesamt also 3x3 = 9 Fragen-Paare = 18 Fragen.

In Ihrem Code oben müssen Sie eigentlich nur noch ergänzen, dass die (z.B. ersten) 4 Items gezeigt werden sollen. Wenn der 12er-Zufallsgenerator RG01 heißt, könnte das so aussehen:

$items = array_values(valueList('RG01'));
$roundA = array_slice($items, 0, 4);

if (value('PG01') == 1) {
  question('TR01', $roundA, 'combine=TR04', 'gap=none');
} elseif (value('PG01') == 2) {
  question('TR05', $roundA, 'combine=TR06', 'gap=none');
} elseif (value('PG01') == 3) {
  question('TR07', $roundA, 'combine=TR08', 'gap=none');
}

pageCSS('
  td.s2col2 {
    text-align: center;
  }
'); 
by s359427 (120 points)
Danke hierfür, ich habe jetzt noch folgendes Problem: Ich habe die Fragen kopiert, und pro Seite wird jetzt eine Kombination aus 4 items angezeigt. Bis hierhin wunderbar. Allerdings wiederholen sich die Items öfters. Ich komme hier irgendwie nicht weiter. Zettel ziehen scheint auch keine Option zu sein, wie gehe ich vor?

Mein PhP Code schaut so aus:

if (value('GP01') == 1) {
  question('M901', 'combine=M904', 'gap=none');
} elseif (value('GP01') == 2) {
  question('M905', 'combine=M906', 'gap=none');
} elseif (value('GP01') == 3) {
  question('M907', 'combine=M908', 'gap=none');
} elseif (value('GP01') == 4) {
  question('M909', 'combine=M910', 'gap=none');
} elseif (value('GP01') == 5) {
  question('M911', 'combine=M912', 'gap=none');
} elseif (value('GP01') == 6) {
  question('M913', 'combine=M914', 'gap=none');
} elseif (value('GP01') == 7) {
  question('M915', 'combine=M916', 'gap=none');
} elseif (value('GP01') == 8) {
  question('M917', 'combine=M918', 'gap=none');
} elseif (value('GP01') == 8) {
  question('M919', 'combine=M920', 'gap=none');
} elseif (value('GP01') == 10) {
  question('M921', 'combine=M922', 'gap=none');
} elseif (value('GP01') == 11) {
  question('M923', 'combine=M924', 'gap=none');
} elseif (value('GP01') == 12) {
  question('M925', 'combine=M926', 'gap=none');
} elseif (value('GP01') == 13) {
  question('M927', 'combine=M928', 'gap=none');
} elseif (value('GP01') == 14) {
  question('M929', 'combine=M930', 'gap=none');
} elseif (value('GP01') == 15) {
  question('M931', 'combine=M932', 'gap=none');
}


pageCSS('
  td.s2col2 {
    text-align: center;
  }
');

PS: ich randomisiere jetzt den ganzen Fragebogen, weil wir verschieden Fragen zu Technologien haben. Jetzt sehen die Studienteilnehmer immer einen Technologiesektor, das passt besser.
by SoSci Survey (370k points)
> Allerdings wiederholen sich die Items öfters.

In Ihrem PHP-Code sehe ich nichts von der Randomisierung. Wo kommt GP01 denn her? Wird diese Seite mehrfach angezeigt? Auf welcher Seite wiederholt sich was?

> ich randomisiere jetzt den ganzen Fragebogen

Ob das eine gute Idee ist, kann ich ohne Kenntnis des Kontext nicht beurteilen. Und ohne Kenntnis des dafür verwendeten Codes kann ich auch nichts dazu sagen, ob diese Rotation korrekt erfolgt.
by s359427 (120 points)
Ja, Entschuldigung, das war zu kryptisch.
Ich habe 15 MaxDiff Kombinationen.
Von diesen sollen mehrere pro Interview gezogen werden (Ziel: 4 oder 5 mal).
Ich habe diese Fragen kopiert, momentan gibt es sie auf drei aufeinanderfolgenden Seiten. Die Randomisierung habe ich durch den Zufallsgenerator GP01 erstellt. Diesen Generator gibt es einmal, darauf folgen die drei Seiten. (Der Zufallsgenerator beinhaltet 15 Zettel.)
In der Praxis ist es aber dann so, dass der Zufallsgenerator auf jeder Seite (fast immer) die gleiche Frage (i.e. MaxDiff-Frage) zieht.

Ich denke, das könnte doch wahrscheinlich ganz anders gelöst werden? Vielleicht durch das Ziehen von Zetteln?
by s359427 (120 points)
Ich habs jetzt gelöst, ich hatte das mit den Zetteln vorher einfach nicht klar verstanden aus der Anleitung: Für 5 Seiten habe ich das jetzt genauso gemacht, GP01x01; 02; 03; 04; 05. Es funktionert ! Oder habe ich einen Fallstrick übersehen?

$d = value('GP01x01');


function showBlock($d) {
  if ($d == 1) {
    question('M401','combine=M402');
  }
  elseif ($d == 2) {
    question('M403','combine=M404');
  }
  elseif ($d == 3) {
    question('M405','combine=M406');
  }
  elseif ($d == 4) {
    question('M407','combine=M408');
  }
  elseif ($d == 5) {
    question('M409','combine=M410');
  }
  elseif ($d == 6) {
    question('M411','combine=M412');
  }
  elseif ($d == 7) {
    question('M413','combine=M414');
  }
  elseif ($d == 8) {
    question('M415','combine=M416');
  }
  elseif ($d == 9) {
    question('M417','combine=M418');
  }
  elseif ($d == 10) {
    question('M419','combine=M420');
  }
  elseif ($d == 11) {
    question('M421','combine=M422');
  }
  elseif ($d == 12) {
    question('M423','combine=M424');
  }
  elseif ($d == 13) {
    question('M425','combine=M426');
  }
  elseif ($d == 14) {
    question('M427','combine=M428');
  }
  elseif ($d == 15) {
    question('M429','combine=M430');
  }
}

pageCSS('
  td.s2col2 {
    text-align: center;
  }
');

$d = value('GP01x01'); // change per page!
showBlock($d);
by SoSci Survey (370k points)
Ich vermute, die Funktion ist unter "PHP-Funktionen" untergebracht - gut Idee, das nicht auf alle Seiten zu kopieren. Fallstricke sehe ich keine.
by s359427 (120 points)
da hat mir chatgpt geholfen. Um ehrlich zu sein habe ich das schon auf jede Seite kopiert und nur die Variable (GP01x01; GP01X02 etc) geändert. Geht das, oder ist das irgendwie fehleranfällig?
by SoSci Survey (370k points)
Also die Funktion sollten sie besser in den Karteireiter "PHP-Funktionen" verschieben. Alles was man kopiert ist insofern fehleranfällig als man irgendwann vielleicht mal etwas ändern will, und es dann schnell übersieht, es an allen Stellen gleich zu ändern.

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

...