Dies ist eine alte Version des Dokuments!
Eine Multi-Level Struktur liegt dann vor, wenn innerhalb eines Fragebogens die gleichen Fragen mehrfach beantwortet werden sollen, und zwar für unterschiedliche Personen oder Objekte. Beispiele sind:
Hinweis: Zur Verwendung von SoSci Survey im Rahmen mehrwelliger Erhebungen (welche ebenfalls Multi-Level-Daten erzeugen) siehe Mehrwellige Befragungen.
Wenn zu jedem genannten Element (Namen, Artikel, Objekt, …) nur eine oder wenige Eigenschaften abgefragt werden sollen, kann ein ganz „normaler“ Fragebogen ausreichend sein. In diesem Fragebogen sieht man eine bestimmte (maximale) Anzahl an Nennungen vor und legt eine entsprechende Anzahl Fragen oder Items an.
Wichtig: Bei dieser Variante werden die Daten für alle Elemente in einer einzigen Datenzeile in unterschiedlichen Variablen gespeichert.
Beispiel: Der Teilnehmer soll Namen seiner Kollegen eintragen und für jeden Kollegen bewerten, wie viel er mit diesem zusammenarbeitet und ob er ihn auch außerhalb der Arbeit privat trifft.
%name1%
bis %name20%
.Mit einem Filter wird ermittelt, welche der Eingabefelder ausgefüllt wurden. Außerdem werden die Namen in die Platzhalter gespeichert …
$items = getItems('NG01', 'valid'); foreach ($items as $item) { $varID = id('NG01', $item); $value = value($varID); replace('%name'.$item.'%', $value); } registerVariable($items);
… und anschließend (ggf. auch über mehrere Seiten verteilt) nur jene Items der folgenden Fragen angezeigt, zu denen auch ein Element eingetragen wurde.
question('FR01', $items); question('FR02', $items);
Tipp: Wenn man die Fragen zu den Elementen auf einzelnen Seiten abfragen möchte, bietet sich die Funktion loopPage()
an. Auf deren Basis kann man (a) jeweils ein einzelnes Item aus einer Frage anzeigen, (b) jeweils eine Frage aus einer Rubrik anzeigen (z.B. „RB01“ bis „RB20“) oder (c) jeweils aus einer eigenen Rubrik (z.B. „R0“ bis „R9“) bestimmte Fragen anzeigen (z.B. „R001, R002“ bis „R901, R902“).
Hinweis: Diese Variante setzt immer eine definierte Obergrenze für die Anzahl an Elementen voraus. Diese Obergrenze wird – je nach Anwendungsfall – zwischen 5 und 99 liegen, denn mehr als 99 Elemente sind mit dieser Lösung nur aufwändig zu realisieren. Theoretisch gibt es natürlich auch Fälle, wo diese Obergrenze nicht ausrecht. Umgekehrt darf man fragen, ob man wirklich jeden statistischen Ausreißer in den Daten abbilden muss. Meistens ist das nicht notwendig, um aussagekräftige Ergebnisse zu erhalten. Und praktisch ist es auch so, dass es den meisten Teilnehmer auch an Motivation mangelt, dieselben Fragen für mehr als eine Hand voll Elemente zu beantworten.
Möchte man die Daten für eine Multi-Level Analyse tatsächlich in unterschiedlichen Datenzeilen speichern, unterstützt SoSci Survey dies mit den folgenden PHP-Befehlen:
multiLevelDown()
– Startet innerhalb des Hauptfragebogens (Level 2) einen Teilfragebogen (Level 1) für das einzelne Element.multiLevelData()
– Liefert im Teilfragebogen die Daten, die evtl. mittels multiLevelDown()
übermittelt wurden.multiLevelReturn()
– Leitet den Teilnehmer vom Teilfragebogen zurück zum Hauptfragebogen und übergibt dabei (optional) Daten, z.B. einer Auswahlfrage, ob noch weitere Elemente folgen. Falls der Befehl nicht verwendet wird, springt der Teilfragebogen beim Erreichen der „letzten Seite“ automatisch zurück zum Hauptfragebogen (dabei werden keine Daten übermittelt).multiLevelResponse()
– Liefert im Hauptfragebogen die Daten, die evtl. von multiLevelReturn()
übermittelt wurden.Der Teilfragebogen speichert die Fallnummer (CASE) des Hauptfragebogens als Referenz (REF), sodass eine eindeutige Zuordnung von Teil- zu Hauptfragebögen möglich ist.
Hinweis: Das Multi-Levle-Design erlaubt es nicht, mittels Zurück-Knopf zu einer früheren Wiederholungen bzw. einem bereits bewerteten Stimulus zurück zu wechseln.
Im ersten Anwendungsfall sollen die Elemente im Teilfragebogen (Kennung „sub01“) abgefragt werden. Dafür wird als erste Frage im Teilfragebogen eine offene Texteingabe („NT01“) mit Ausweichoption „kein weiteres Element“ verwendet.
Der Hauptfragebogen hat zwei Aufgaben: Zum einen muss er den Teilnehmer an geeigneter Stelle zum Teilfragebogen schicken. Diese Seite benötigt eine Kennung, z.B. „subStart“.
multiLevelDown('sub01');
Zum anderen muss er auf der nächsten Seite überprüfen, ob der Teilfragebogen erneut vorgelegt werden soll (das wird erreicht, indem der Fragebogen zur Seite „subStart“ zurück springt). Dafür gibt der Teilfragebogen mittels multiLevelReturn()
entweder den Wert true
zurück (s. unten), falls ein Element eingetragen wurde oder false
, wenn die Ausweichoption „kein weiteres Element“ angegeben wurde. Diese Antwort wird mittels multiLevelResponse()
abgefragt und in einem Filter verwertet.
$rsp = multiLevelResponse(); // Falls $rsp den Wert true hat... if ($rsp) { // ... springt der Fragebogen zurück zur vorigen Seite "subStart" goToPage('subStart'); }
Der Teilfragebogen muss lediglich dafür sorgen, dem Hauptfragebogen den korrekten Wert (true
oder false
) mitzuteilen. Dafür wird vor der „letzten Seite“ eine zusätzliche Seite eingefügt, welche mittels überprüft, ob die Ausweichoption (nicht) angekreuzt wurde (Variable „NT01_01a“).
$gotName = (value('NT01_01a') != 2); multiLevelReturn($gotName);
Im obigen Beispiel wurde die Vergleichsbedingung direkt als Variable $gotName
gespeichert. Man kann es stattdessen auch als IF-Filter formulieren:
if (value('NT01_01a') != 2) { multiLevelReturn(true); } else { multiLevelReturn(false); }
Alternativ kann der Hauptfragebogen zunächst alle Element abfragen und dann den Teilfragebogen entsprechend oft starten. Dieses Beispiel geht davon aus, dass in einer Frage vom Typ Offene Nennungen (Kennung z.B. „NG01“) zunächst Elemente abgefragt wurden.
Im Hauptfragebogen wird zunächst eine Liste der genannten Elemente erstellt und die Seite, welche den Teilfragebogen mittels multiLevelDown()
aufruft entsprechend oft wiederholt. Die Nennung wird dabei an den Teilfragebogen übergeben.
// Eine Liste der ausgefüllten Textfelder im Namensgenerator ermitteln $items = getItems('NG01', 'valid'); if (count($items) > 0) { $item = loopPage($items); // Text der Nennung abrugen $element = value(id('NG01', $item)); // Teilfragebogen starten und Text der Nennung übergeben multiLevelDown('sub', $element); }
Im Hauptfragebogen sind dann keine weitere Anpassungen mehr erforderlich. Im Teilfragebogen sollte das Element mittels put
in einer internen Variable gespeichert werden. Es kann darüber hinaus sinnvoll sein, einen Platzhalter für die Nennung mittels replace
zu definieren.
$element = multiLevelData(); // Element im Teildatensatz speichern put('IV01_01', $element); // Platzhalter %element% definieren replace('%element%', $element);
Ein Rückgabewert vom Teilfragebogen an den Hauptfragebogen ist bei diesem Design in alle Regel nicht erforderlich.
Die Anleitung zu randomUse() zeigt den vollständigen PHP-Code für den Anwendungsfall, dass Teilnehmer 20 zufällig aus einem Pool ausgewählte Items bewerten müssen, diese aber auch auslassen können.
multiLevelDown()
an den Teilfragebogen übergeben und dort ein Platzhalter definiert werden.Tipp: Legen sie für den Teilfragebogen unter Fragebogen zusammenstellen → Karteireiter Einstellungen den Zugriffsmodus „Intern/gesperrt“ fest, damit der Fragebogen tatsächlich nur als Teilfragebogen und nicht direkt aufgerufen werden kann.