====== Randomisierung mit Urnen ======

Die Verwendung der Urnen-Funktion erlaubt eine Zufallsziehung ohne Zurücklegen -- das gewährleistet z.B., dass Experimentalgruppen gleich groß werden.

Dieses Kapitel beschreibt Schritt für Schritt, wie man eine Urne anlegt und einen Zettel (z.B. eine Zufallszahl) aus der Urne zieht. Die Verwendung des gezogenen Zettels zur Randomisierung beschreibt das Kapitel [[randomization|Randomisierung]].

**Wichtig:** Für die meisten Anwendungsfälle ist ein [[:de:create:questions:random]] einfacher als Urnen. Wenn Sie die Teilnehmer eines Online-Experiments "einfach nur" in unterschiedliche Gruppen einteilen möchten, die dann unterschiedliche Fragen, Bilder oder Texte vorgelegt bekommen, dann lesen Sie bitte bei [[:de:create:randomization]] weiter.


==== Ziehung ohne Zurücklegen ====

Eine Zufallsziehung "ohne Zurücklegen" kann man sich als Ziehung aus einer Lostrommel ("Urne") vorstellen. Die Verwendung von Urnen in SoSci Survey garantiert annähernd gleich große Experimentalgruppen (wie auch der [[:de:create:questions:random]]). Im Kontext von Conjoint-Analysen kann eine Urne auch gewährleisten, dass vorgegebene Kombinationen gleich häufig gezogen werden.

**Hinweis:** Komplette Fragebögen lassen sich mit Urnen __nicht__ randomisieren. Man kann also mit einer Urne nicht zwischen unterschiedlichen Fragebögen "wählen". Damit man eine Urne verwenden kann, müssen alle Zufallsbedingungen mittels Filter in einem Fragebogen untergebracht werden (s. [[:de:create:randomization]]).

**Wichtig:** Prüfen Sie im technischen Pretest unbedingt, ob die Ziehungen in der Urne korrekt gezählt werden -- insbesondere dann, wenn Sie die Kombinationen manuell ablegen.

Die wesentlichen Schritte zur Ziehung einer Zufallszahl mittels Urne sind wie folgt:

  - Im **Fragenkatalog** eine neue Frage vom Typ [[:de:create:questions:internal|interne Variablen]] anlegen (z.B. mit der Kennung ''IV01'')
  - Unter **Spezialfunktionen** -> **Randomisierung mit Urnen** eine //Neue Urne anlegen//, z.B. mit der //Kennung// ("gruppe") und den Zetteln 1, 2, 3 und 4 (jeweils eine Zahl in einer Zeile)
  - Die eigentliche Zufallsziehung erfolgt dann mittels [[php|PHP-Code]].

<code php>
urnDraw('gruppe', 'IV01');
</code>

**Hinweis:** Bei der Funktion ''[[:de:create:functions:urndraw|urnDraw()]]'' wird als zweiter Parameter nur die Kennung der Frage angegeben, nicht die Kennung der Variablen. So kann SoSci Survey je nach Inhalt der Urne entscheiden, ob nur eine Variable verwendet wird (falls nur ein Wert auf jedem Zettel steht) oder mehrere Variablen (falls Sie mit Kombinationen arbeiten).

**Hinweis:** Sie können entscheiden, ob der gezogene Zettel sofort verworfen wird oder erst später. Lesen Sie dazu die Referenz zur PHP-Funktion ''[[:de:create:functions:urndraw|urnDraw()]]''.

**Hinweis:** Normalerweise wird die Urne wieder neu gefüllt, nachdem der letzte Zettel gezogen und abgelegt wurde. Falls Sie das nicht wünschen, können Sie es direkt bei der Ziehung unterbinden, s. ''[[:de:create:functions:urndraw|urnDraw()]]''.


===== Eine Urne anlegen =====

Zunächst müssen Sie eine Urne anlegen. Eine Urne enthält mehrere Zettel -- und auf jedem Zettel kann ein Wert (normalerweise eine Zahl) oder eine Kombination mehrerer Werte stehen.

  * Wählen Sie im Menü **Spezialfunktionen** -> **Randomisierung mit Urnen**.
  * Klicken Sie auf **Urne anlegen**. Sie erhalten ein Formular, in dem Sie einen //Namen// (Kennung der Urne, z.B. "gruppe") für die neue Urne angeben können sowie deren Inhalt (//Kombinationen//).
  * Den Inhalt (//Kombinationen//) geben Sie wie folgt an: Für jeden Zettel eine Zeile -- und falls auf einem Zettel mehr als ein Wert stehen soll, dann trennen Sie die Werte durch Kommata oder Tabulator (nicht durch Leerzeichen!). **Tipp:** Für Kombinationen können Sie im Tabellenkalkulationsprogramm ihrer Wahl (z.B. OpenOffice Calc oder Excel) eine Tabelle anlegen, wobei die verschiedenen Werte (z.B. Alter, Vorname, Geschlecht) in den einzelnen Spalten stehen und in den Zeilen die Kombinationen. Markieren Sie die Zellen (nur die mit Inhalt, keine Überschriften) und kopieren Sie den Inhalt in das Texteingabefeld für //Kombinationen//.
  * Mit **Urne anlegen** wird die Urne gespeichert.
  * Notieren Sie sich die //Kennung// der Urne.

Am häufigsten werden Urnen für die Einteilung von Teilnehmern in Experimentalgruppen verwendet. In diesem Fall empfiehlt sich eine Zahl pro Zettel. Wenn Sie 4 Gruppen haben, sieht der Inhalt der Urne einfach aus wie folgt:

<code>1
2
3
4</code>

Eine Gewichtung erreichen Sie, indem Sie eine Zeile mehrfach in die Urne schreiben. Mit der folgenden Urne würden doppelt so viele Teilnehmer in Gruppe 1 landen wie in Gruppe 2 oder 3:

<code>1
1
2
3</code>

Wenn Sie 3 Gruppen haben, wobei innerhalb der dritten Experimentalgruppe noch ein zweiter Faktor variiert werden soll, sähe der Inhalt der Urne aus wie folgt (hierbei handelt es sich nun um Kombinationen):

<code>1, 0
1, 0
2, 0
2, 0
3, 1
3, 2</code>

**Hinweis:** Damit sich Interviewpartner nicht nach Belieben einen Zettel aussuchen können, wird pro Interview nur einmal gezogen. Das heißt, dass Sie beim Testen durch Aktualisieren (Taste F5 im Browser bzw. "Seite neu Laden") __immer den gleichen Zettel__ bekommen werden. Um einen neuen Zettel zu bekommen, müssen Sie ein neues Interview starten.


===== Interne Variablen anlegen =====

Der gezogene Zettel bzw. die gezogene Kombination muss im Datensatz gespeichert werden. Dafür benötigen Sie [[:de:create:variables|interne Variablen]].

  * Legen Sie im **Fragenkatalog** eine neue Frage vom //Typ// "Interne Variablen" an.
  * Legen Sie in dieser Frage ein oder mehrere Variablen (Items) an. Als //Beschreibung// (Text) für die internen Variablen tragen Sie das Label ein, das die Variablen später im Datensatz haben sollen, z.B. "Gruppe" oder "Zufallszahl".
    * Falls Sie auf jedem Zettel nur einen Wert stehen haben (nur eine Spalte in der Urne, wie im Beispiel oben), benötigen Sie nur __eine__ Variable (ein Item).
    * Falls Sie Kombinationen verwenden (mehrere Werte pro Zettel, also mehrere Spalten in der Urne), benötigen Sie so viele Variablen, wie die Kombinationen Werte haben. Wenn Sie beispielsweise 10 Zettel á 3 Werte in Ihrer Urne verwenden, benötigen Sie 3 Variablen in der Frage.
  * Notieren Sie sich die Kennung der Frage, die Sie gerade angelegt haben (z.B. ''IV01'').

**Wichtig:** Verwenden Sie diese Frage vom Typ "interne Variablen" ausschließlich für die Urne. Auch wenn Sie weitere Variablen in der Frage anlegen können: Speichern Sie dort keine Werte mittels ''put()'' hinein, sondern legen Sie dafür ggf. eine weitere Frage an. Die Urnen-Ziehung wird nicht ausgeführt, falls in einer der Variablen in der Frage bereits ein Wert gespeichert wurde.


===== Einen Zettel aus der Urne ziehen =====

Im Fragebogen wird nun [[php|PHP-Code]] verwendet, um einen Zettel aus der Urne zu ziehen. Dafür steht die Funktion ''[[:de:create:functions:urndraw|urnDraw()]]'' zur Verfügung. Der Inhalt des gezogenen Zettels (also eine einzelne Zufallszahl oder eine Kombination) wird in den internen Variablen abgelegt, die Sie vorab angelegt haben. Anschließend können Sie den/die gezogenen Wert/e in Filtern oder Platzhaltern verwenden (s. [[randomization|Randomisierung]]).

Beim Aufruf von ''urnDraw()'' benötigen Sie die Kennungen, die Sie oben notiert haben (Kennung der Urne, Kennung der "interne Variablen"-Frage). Außerdem müssen Sie entscheiden, wann der Zettel abgelegt wird. Normalerweise (keine Angabe oder '''now''') wird der Zettel sofort abgelegt. Wenn die Teilnehmer in einer Versuchsgruppe systematisch häufiger abbrechen, hätten Sie in dieser Gruppe weniger vollständige Fragebögen. Falls Sie hier mit Problemen rechnen, verwenden Sie '''end''' oder '''man''' (s. Referenz zu ''[[:de:create:functions:urndraw|urnDraw()]]'').

**Wichtig:** Falls Sie den Zettel einer Urne manuell ablegen möchten (dritter Parameter '''man'''), stellen Sie sicher, dass Sie auch die Funktion ''[[:de:create:functions:urnputaway|urnPutAway()]]'' verwenden.

<code php>
urnDraw('gruppe', 'IV01');
</code>

Zur Verwendung der so gezogenen Zufallszahl (oder Kombination) lesen Sie bitte das Kapitel [[randomization|Randomisierung]].


