Übersetzungen dieser Seite:
 

Variablen in SoSci Survey

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:

  • PHP-Variablen sind Bestandteil der Programmiersprache PHP. Sie tauchen direkt im PHP-Code (also ein Element PHP-Code beim Zusammenstellen des Fragebogens) auf und beginnen mit einem Dollar-Zeichen ($), z.B. $alter. PHP-Variablen werden weiter unten ausführlich beschrieben.
  • Daten-Variablen speichern die Antworten des Befragten – sie stehen später im Datensatz als Variablen für die Auswertung zur Verfügung. Jedes Interview erzeugt einen neuen Fall im Datensatz. Eine Liste aller Daten-Variablen eines Befragungsprojekts liefert die Variablen-Übersicht. Der aktuelle Wert einer Daten-Variable, also zum Beispiel die Antwort, die ein Befragter gegeben hat, kann mit der Funktion value() ausgelesen und z.B. für eine Filterfrage verwendet werden.
  • Interne Variablen sind spezielle Daten-Variablen. Sie dienen dazu, Werte im Datensatz verfügbar zu machen, die mittels PHP-Code berechnet oder gewürfelt wurden. Weiterhin können interne Variablen die Antworten speichern, die mit eigenen Formularelementen erhoben wurden.

Daten-Variablen

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.

Individuelle Variablen-Namen

Im Karteireiter „Variablen“ einer Frage können Sie die Kennung einzelner oder mehrerer Variable ändern.

Karteireiter Variablen in einer Frage

Klicken Sie auf das Bearbeiten-Symbol (Knopf zum Beabeiten), um die Kennung zu ändern. Tragen Sie die gewünschte neue Kennung für die Variable ein. Die Kennung muss folgenden Regeln folgen:

  • Es können die Buchstaben A bis Z (groß oder klein, keine Umlaute), die Ziffern 0 bis 9 und der Unterstrich (_) verwendet werden. Das erste Zeichen muss ein Buchstabe sein.
  • Die Kennungen dürfen maximal 64 Zeichen lang sein.
  • Um mögliche Überschneidungen mit den automatisch zugewiesenen Kennungen zu vermeiden, dürfen das dritte und vierte Zeichen nicht beide Zifferns ein. Die Kennungen „var01“, „v01“ oder „age“ sind also möglich, nicht aber „va00“, „v001“ oder „xy123“.

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:

  • Mit dem Knopf Knopf zum Bestätigen speichern Sie die Kennung nur für die eine Variable.
  • Mit dem Knopf Knopf zum Bestätigen für alle nachfolgenden Variablen speichern Sie die Kennung zusätzlich für alle nachfolgenden Variablen, wobei SoSci Survey eine Zahl am Ende automatisch hochzählt. Wenn Sie z.B. bei der ersten Variable die Kennung „sus01“ eintragen, erhalten die weiteren Variablen die Kennungen „sus02, „sus03“ u.s.w.

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.

Interne Variablen

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.

Verwendung mit put()

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.

Verwendung mit Urnen

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.

Verwendung mit JavaScript

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:

  1. Auf der Fragebogen-Seite werden versteckte (type="hidden") Formularfelder mit den Kennungen der internen Variablen angelegt.
  2. Beim Abschicken der Seite mit „Weiter“ werden die Werte aus den versteckten Formularfeldern ausgelesen und im Datensatz gespeichert.

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>

PHP-Variablen

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');
}

Im Datensatz speichern

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 arbeiten

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>');

Variablen dauerhaft verwenden

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
de/create/variables.txt · Zuletzt geändert: 13.07.2020 21:51 von admin
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 4.0 International
Driven by DokuWiki