In der Anleitung ist vielfach von „Variablen“ die Rede. Dieses Kapitel erklärt, was es mit den unterschiedlichen Variablen auf sich hat.
In der Sozialwissenschaft hat man mit Variablen i.d.R. bei der statistischen Auswertung zu tun. Hierbei bezeichnet sie ein Merkmal der Untersuchungseinheit (z.B. Alter, Geschlecht). Variabel ist die Variable insofern, als man zwar weiß, dass es ein solches Merkmal gibt und was man damit in der Auswertung macht – aber die Ausprägung hängt vom konkreten Fall ab.
In der Programmierung ist eine Variable im Prinzip sehr ähnlich: Die Variable beschreibt einen veränderlichen Wert, den man verwendet. Das kann zum Beispiel eine Antwort des Teilnehmers sein – aber auch ein Wert, der sich schon mehrfach ändert, während die Fragebogen-Seite noch aufgebaut wird. Die Variable wird dabei stets als Platzhalter für veränderliche (Zahlen-)werte verwendet, so wie man Variablen aus der Mathematik kennt. Technisch ist eine Variable ein Speicherplatz für Daten (z.B. für eine Zahl oder einen Text).
In SoSci Survey können Sie auf die folgenden Arten von Variablen treffen:
$
), z.B. $alter
. PHP-Variablen werden weiter unten ausführlich beschrieben.value()
ausgelesen und z.B. für eine Filterfrage verwendet werden.Die meisten Fragen erzeugen eine Variable im Datensatz, darüber hinaus können mit dem Fragetyp Interne Variablen (s. unten) im Datensatz zusätzliche Variablen angelegt werden, die benutzerdefinierte Daten speichern.
Darüber hinaus gibt es im Datensatz zusätzliche Variablen mit Meta- und Paradaten zum jeweiligen Fall.
Die Variablen von Fragen erhalten beim Anlegen eine Kennung, die aus der Frage-Kennung (z.B. „AB01“) und (optional) einem Zusatz (z.B. „_01“ oder „x1“) besteht. Bei Fragen mit untergeordneten Items (z.B. Skalen) entspricht der Zusatz in aller Regel der Nummer des Items.
Im Karteireiter „Variablen“ einer Frage können Sie die Kennung einzelner oder mehrerer Variable ändern.
Klicken Sie auf das Bearbeiten-Symbol (), um die Kennung zu ändern. Tragen Sie die gewünschte neue Kennung für die Variable ein. Die Kennung muss folgenden Regeln folgen:
_
) verwendet werden. Das erste Zeichen muss ein Buchstabe sein.Wenn Sie in das Eingabefeld für die Kennung gar nichts eintragen, wird die automatische Kennung wiederhergestellt.
Zum Bestätigen der neue Kennung stehen zwei Knöpfe zur Verfügung:
Die geänderten Kennungen werden als Variablennamen beim Daten herunterladen verwendet und sie können in PHP-Filtern bzw. der Funktion value()
verwendet werden. Die automatisch zugewiesene Kennung bleibt zusätzlich gültig.
Um eine interne Variable anzulegen, erstellen Sie zunächst eine Frage vom Typ Interne Variablen. Innerhalb dieser Frage legen Sie nun eine oder mehrere Variablen an – so wie Sie in einer Auswahlfrage Auswahloptionen anlegen. Die Beschriftung, die Sie für eine Variable eintragen, erscheint später im Datensatz als Beschriftung für die Variable.
Wichtig: Die Kennung einer internen Variable ist 7-stellig, z.B. „IV01_01“ oder „AB02_03“ – wenn Sie unsicher sind, sehen Sie in der Variablen-Übersicht nach. Verwenden Sie die Kennung der übergeordneten Frage (z.B. „IV01“ oder „AB02“) nur dann, wenn Sie sich tatsächlich auf alle internen Variablen dieser Frage beziehen (z.B. bei urnDraw()
) und nicht auf eine einzelne interne Variable.
Interne Variablen haben unterschiedliche Funktionen: Sie können mit put()
, im Kontext einer Randomisierung mit Urnen oder in Verbindung mit eigenen Formularelementen verwendet werden.
Eine interne Variable kann einen Wert speichern, der im PHP-Code gewürfelt oder ermittelt wurde. Die Funktion put()
schreibt den Wert einfach in die Variable.
Im nachfolgenden Beispiel wird der Summenindex für die Skala „SK01“ berechnet und in der internen Variable SK02_01
gespeichert. Dies kann sinnvoll sein, wenn man mit seiner Statistik-Software auf Kriegsfuß steht – oder wenn man den Skalenindex noch im Fragebogen für die Filterführung verwenden möchte.
$sum = valueSum('SK01'); put('SK02_01', $sum);
Weiter unten finden Sie auch ein Beispiel, welches das Ergebnis einer Zufallsziehung mittels put()
für die Auswertung verfügbar macht.
Die Verwendung von Urnen ist ausführlich im Kapitel Randomisierung mit Urnen nachzulesen.
In einer Urne können Zettel mit mehreren Werten liegen – es müssen also u.U. mehrere Werte in mehrere interne Variablen gespeichert werden. Entsprechend erwartete die Funktion urnDraw()
die Kennung der Frage. Diese Frage muss wiederum genug Variablen enthalten, um die gezogene Kombination speichern zu können.
Der folgende PHP-Code zieht einen Zettel aus der Urne „urne“ und speichert die Kombination in den internen Variablen der Frage „IV01“.
urnDraw('urne', 'IV01');
Für den trivial und häufigsten Fall, dass in der Urne nur Zettel mit jeweils einer Zahl liegen, benötigt die Frage auch nur eine interne Variable. Die Funktion urnDraw()
verlangt dennoch nach der Frage- und nicht der Variablen-Kennung.
Zieht man eine Frage vom Typ „interne Variablen“ in den Fragebogen, so sieht man im Fragebogen zwar nichts davon, aber es hat trotzdem zwei Effekte:
type="hidden"
) Formularfelder mit den Kennungen der internen Variablen angelegt.Auf die versteckten Formularfelder kann man mittels JavaScript zugreifen. So kann man Antworten oder Messwerte, die mittels JavaScript erhoben wurden, bequem im Datensatz speichern.
Das folgende Beispiel geht davon aus, dass man eine Frage vom Typ „interne Variablen“ mit der Kennung „PC01“ angelegt hat und darin zwei Variablen, welche die Kennungen „PC01_01“ und „PC01_02“ haben. Auf das versteckte Formularelemente zur Variable „PC01_01“ kann man in JavaScript mittels document.getElementById("PC01_01")
zugreifen. Per JavaScript soll nun die Breite und Höhe des Bildschirms (in Pixeln) ermittelt und im Datensatz gespeichert werden.
Dazu wird die Frage „PC01“ in die Fragebogen-Seite hineingezogen – und darunter der folgende JavaScript-Code als Textbaustein platziert.
<script type="text/javascript"> <!-- document.getElementById("PC01_01").value = screen.width; document.getElementById("PC01_02").value = screen.height; // --> </script>
Variablen beginnen in PHP mit einem Dollar-Zeichen, z.B. $version
. Mit einem einfachen Gleichheitszeichen (=
) wird ihnen ein Wert zugewiesen. Mit einem doppelten Gleichheitszeichen (==
) wird dieser Wert mit einem anderen Wert verglichen.
Wichtig: Eine PHP-Variable gilt nur innerhalb eines PHP-Code Elements, sie ist flüchtig, wird also nicht dauerhaft gespeichert. Will man den Wert der Variable später in anderen PHP-Code Elementen verwenden, so muss man die Variable mittels registerVariable()
verfügbar machen. Benötigt man den Wert der Variable für die Auswertung, muss er mittels put()
in eine interne Variable gespeichert werden.
Im folgenden Beispiel würfelt die Funktion random()
die Zahl 1 oder 2. Das Ergebnis dieser Zufallsziehung wird in der Variable $version
abgelegt. Anschließend wird in einer IF-Konstruktion (Filterfragen und Filter) vergleichen, ob der Wert 1 ist (dann wird der Textbaustein „stimulus1“ angezeigt) oder nicht (dann wird „stimulus2“ angezeigt).
$version = random(1, 2); if ($version == 1) { text('stimulus1'); } else{ text('stimulus2'); }
Um den Inhalt einer Variable über das Interview hinaus im Datensatz zu speichern, verwenden Sie eine interne Variable (s. oben) in Verbindung mit der Funktion put()
.
Bei dem obigen Beispiel sieht man anhand des Datensatzen nicht, welcher Stimulus angezeigt wurde. Legen Sie eine interne Variable (z.B. „IV01_01“) an und verwenden Sie put()
, um das Ergebnis der Zufallsziehung im Datensatz zu speichern:
$version = random(1, 2); put('IV01_01', $version); if ($version == 1) { text('stimulus1'); } else{ text('stimulus2'); }
Mit Variablen kann man hervorragend rechnen. Im folgenden Beispiel wird dem Teilnehmer auf Seite 1 die Frage „AB01“ gestellt – eine offene Texteingabe für eine Zahl. Auf Seite 2 wird diese Antwort mittels value()
ausgelesen und in die Variable $nummer
gespeichert. Diese Variable wird mit 2 multipliziert (*
) und das Ergebnis in die Variable $ergebnis
gespeichert.
Anschließend wird die Variable $ergebnis
als Text (String) behandelt und mit zwei anderen Strings verknüpft (.
). Das Ergebnis dieser Verknüpfung wird an die Funktion html()
zur Anzeige im Fragebogen übergeben.
// Auf Seite 2 mit der angegeben Zahl rechnen $nummer = value('AB01'); // Zuweisen der angegeben Zahl zur Variable $nummer $nummer = (int)$nummer; // Sicherstellen, dass es eine Zahl ist $ergebnis = 2 * $nummer; // Zahl mit 2 multiplizieren // Als Text im Fragebogen anzeigen html('<p>Sie haben die Hälfte von '.$ergebnis.' angegeben</p>');
Mitunter ist es notwendig, eine PHP-Variable in mehreren PHP-Code Elementen zu verwenden. Im folgenden Beispiel sollten 10 Fernsehsender in zufälliger Reihenfolge abgefragt werden. In Frage AB01 soll angefragt werden, wie häufig man die Sender nutzt – in Frage AB02 soll erfragt werden, wie attraktiv man das Programmangebot beurteilt.
Nun ist es natürlich sinnvoll, dass die Sender in beiden Fragen in derselben Reihenfolge abgefragt werden. Dazu wird mittels random_items()
zunächst eine Liste (Array) der Item-Kennungen in zufälliger Reihenfolge erstellt. Diese Liste wird in der Variable $items
abgelegt.
Die Variable $items
wird nicht nur auf der aktuellen Seite benötigt, sondern auch auf der Folgeseite mit Frage „AB02“. Daher wird sie mittels registerVariable()
für künftige PHP-Code Elemente verfügbar gemacht. Anschließend wird die Frage „AB01“ mit der gemischten Reihenfolge angezeigt.
$items = random_items('AB01'); // Randomisierte Reihenfolge der Items in Frage AB01 registerVariable($items); question('AB01', $items); // Frage mit randomisierten Items stellen
Auf Seite 2 kann $items
dann einfach verwendet werden.
question('AB02', $items); // Frage mit randomisierten Items stellen