void put(string ItemKennung, mixed Wert)
Es existiert ein Fragetyp Interne Variablen. Diese Fragen können im Fragebogen nicht angezeigt werden – sie sind einzig darauf ausgelegt, Werte in ihren Items abzuspeichern. Der Unterschied zu „normalen“ Items: Nicht der Befragte bestimmt ihren Wert durch seine Antwort, sondern es wird ein Wert mittels put()
abgespeichert.
Sinnvoll ist die Anwendung von put()
, wenn im Fragebogen ein Wert berechnet wird – und man diesen in der Auswertung benötigt. Wenn also beispielsweise der Stimulus einer Frage zufällig variiert wird, dann muss man für die Auswertung freilich wissen, wozu der Befragte sich geäußert hat.
Interne Variablen werden wie Eingabefelder als Texte (Strings) behandelt.
Tipp: Sie können die Items einer Frage vom Typ „Interne Variablen“ auch verwenden, um Werte aus einem JavaScript zu speichern. Binden Sie die Frage dafür ganz normal im Fragebogen ein und schreiben Sie die Antworten in die versteckten Eingabefelder, die dabei erzeugt werden. Die HTML-IDs der Items entsprechen den Item-Kennungen, also z.B. IV01_01
.
html('<p>Bitte beurteilen Sie folgenden Markennamen:</p>'); // Eine Münze werfen und den zugehörigen Markennamen anschreiben $nummer = random(1,2); $namen = array( 1 => 'Hutzewurtz', 2 => 'Mirsewinsch' ); html('<p><b>'.$namen[$nummer].'</b></p>'); // Die gewürfelte Zahl im Datensatz abspeichern put('IV01_01', $nummer); // Frage IV01 muss den Typ "Interne Variablen" haben // Frage stellen question('AB01_01'); // Bewertung des Begriffs
int random(int min, int max)
Gibt eine Zahl zwischen min und max zurück.
// Direkte Anzeige einer Zufallszahl (wenig sinnvoll) html('<p>Der Würfel zeigt die Zahl '.random(1,6).'</p>'); // Speichert zufällig die Zahl 1 oder 2 in der Variable $version $version = random(1,2); // Stellt - je nach gewürfelter Zahl - eine von 2 Fragen if ($version == 1) { question('AA01'); } else { question('AA02'); }
Hinweis: Siehe auch Randomisierung.
Tipp: Um Items zu randomisieren, aktivieren Sie einfach die entsprechende Option in der Frage.
Tipp: Um eine Zufallsauswahl ohne Zurücklegen zu realisieren, verwenden Sie Urnen.
mixed random_p(array Verteilung)
Gibt eine Zahl aus der Verteilung zurück. Jeder Zahl kann dabei eine individuelle Wahrscheinlichkeit zugeordnet werden. Die Verteilung wird als Array übergeben, wobei jeweils der Zahl eine Wahrscheinlichkeit zugeordnet wird (Zahl ⇒ Wahrscheinlichkeit).
Im ersten Beispiel wird eine Zahl zwischen 1 und 4 gewürfelt. Die 1 und 3 haben dabei eine Chance von je 20 %, die 2 eine Chance von 50 % und die 4 eine Chance von 10 %. Die Zuordnungen im Array können auch direkt nebeneinander (statt untereinander) geschrieben werden. Die Wahrscheinlichkeiten können auch als Fließkommazahlen (mit Punkt als Dezimaltrenner) oder als absolute Anteile angegeben werden. Alle drei Zufallszahlen im ersten Beispiel haben die selbe Zufallsverteilung.
// Beispiel A // Verteilung definieren $verteilung1 = array( 1 => 20, 2 => 50, 3 => 20, 4 => 10 ); // Zahl zwischen 1 und 4 würfeln $zahl1 = random_p($verteilung1); // Beispiel B // Wahrscheinlichkeiten als Fließkommazahlen $verteilung2 = array(1=>0.2, 2=>0.5, 3=>0.2, 4=>0.1); $zahl2 = random_p($verteilung2); // Beispiel C // Wahrscheinlichkeiten als Verhältnis $verteilung3 = array(1=>3, 2=>10, 3=>4, 4=>0.1, 5=>2); $zahl3 = random_p($verteilung3);
Das zweite Beispiel demonstriert, wie eine Zufallsauswahl abhängig von den Antworten des Benutzers getroffen werden kann.
// In Frage PS_19 wurden 7 TV-Sender abgefragt // Für die Zufallsauswahl sollen nur jene in Frage kommen, // die häufiger als nie (Wert 1) genutzt werden $alle = array(1,2,3,4,5,6,7); // Eine Liste anlegen, in der alle genutzten Sender auftauchen $genutzt = getItems('PS19', 'min', 2); // Wenn kein Sender genutzt wurde, ist die Befragung zu Ende if (count($genutzt) < 1) { goToPage('end'); } // Wahrscheinlichkeiten für die verschiedenen Sender definieren // Hier aus einer Vorbefragung ermittelt, welche häufiger genutzt werden $wahrsch_alle = array( 1 => 11, 2 => 19, 3 => 10, 4 => 10, 5 => 19, 6 => 24, 7 => 7 ); $wahrsch = array(); // Für alle genutzten Sender wird der Eintrag aus $wahrsch_alle kopiert foreach ($genutzt as $sender) { $wahrsch[$sender] = $wahrsch_alle[$sender]; } // Gewichtete Zufallsauswahl aus den genutzten Sendern $fokus = random_p($wahrsch); // Der Sender Fokus wird nun weiter untersucht // Abspeichern des Untersuchungsgegenstands put('PS20_01', $fokus);
string random_items(string Items|FrageKennung, [int Anzahl])
Wählt aus einer Liste von Items oder aus allen Items einer Frage zufällig Anzahl Items aus.
Hinweis: In aller Regel ist die Aktivierung der Item-Rotation direkt in der Frage der Funktion random_items()
vorzuziehen. Diese Funktion bietet nur dann einen sinnvollen Mehrwert, wenn dieselbe Zufallsauswahl in einer späteren Frage nochmals benötigt wird oder wenn nicht alle Items angezeigt werden sollen.
Vorsicht: Beachten Sie, dass die Items immer anhand ihrer Kennung – nicht ihrer Position – angegeben werden! Um die korrespondieren Items zweier Fragen aufzurufen, müssen 2 zusammengehörige Items jeweils die selbe Item-Kennung tragen (z.B. AB01_01 gehört zu AB02_01)!
// Beispiel A // 3 Items aus den Items 1,2,3,4,8 und 9 zufällig auswählen $items = random_items("1,2,3,4,8,9", 3); // Die Frage AB01 mit den 3 zufällig ausgewählten Items stellen question("AB01", $items); // Beispiel B // Die Items 1,2,3,4,8 und 9 zufällig mischen $items = random_items("1,2,3,4,8,9"); question("AB01", $items); // Beispiel C // 3 Items der Frage AB01 zufällig auswählen $items = random_items("AB01", 3); question("AB01", $items); // Beispiel D // 3 Items der Frage AB01 zufällig auswählen - nur einfacher question("AB01", "random=3"); // Beispiel E // Items der Frage AB01 zufällig in 2 Pakete einteilen $items = getItems('AB01'); $part1 = random_items($items, 5); $part2 = array_diff($items, $part1); // Die Fragen können nun beispielsweise auf unterschiedlichen // Seiten angezeigt werden, dann muss man die Variablen $part1/2 // allerdings via registerVariable() oder mit set()/get() mitnehmen // (vgl. nächstes Beispiel unten) question('AB01', $part1); question('AB01', $part2);
Gleiche Itemfolge auf mehreren Seiten
// Seite 1 // 3 Items aus den Items 1,2,3,4,8 und 9 zufällig auswählen $items = random_items('1,2,3,4,8,9', 3); // Die Frage AB01 mit den 3 zufällig ausgewählten Items stellen question('AB01', $items); // Die Frage AB02 mit den 3 korrespondierenden Items stellen question('AB02', $items); // Die Items zwischenspeichern für eine spätere Seite set($items, "itemliste");
// Seite 2 // Dieselben Items wieder laden $items = get('itemliste'); // Eine weitere Frage mit den korrespondierenden Items stellen question('AB03', $items);
void urnDraw(string UrnenKennung, string FrageKennung, [string Ablegen])
Mit urnDraw() entnehmen Sie einen Zettel (eine Kombination) aus einer Urne. Wenn alle Zettel aus der Urne gezogen und abgelegt wurden, dann wird die Urne von Neuem gefüllt.
Details zur Verwendung von Urnen finden Sie im Kapitel Urnen.
'now
' Die Kombination wird sofort abgelegt'end
' Die Kombination wird abgelegt, wenn/falls der Teilnehmer die letzte Seite des Fragebogens erreicht'man
' Die Kombination wird manuell durch Aufruf von urnPutAway()
abgelegt'no
' Die Kombination wird gar nicht abgelegt – es wird eine Ziehung mit Zurücklegen durchgeführtHinweis: Falls innerhalb eines Interviews mehrere Kombinationen aus derselben Urne gezogen werden sollen, müssen unterschiedliche Frage-Kennungen angegeben werden.
Hinweis: In den internen Variablen dürfen vor der Ziehung noch keine Werte gespeichert worden sein, z.B. via put()
.
Hinweis: Damit sich Interviewpartner nicht nach Belieben eine Kombination auswählen können, wird pro Interview nur einmal gezogen und – falls die Person die Seite mit der Ziehung nochmals aufruft – diese Ziehung auch beibehalten. Das heißt, dass Sie beim Testen durch Aktualisieren der Browser-Ansicht immer den gleichen Zettel bekommen werden. Um einen neuen Zettel zu bekommen, müssen Sie den Fragebogen neu starten.
// Einen Zettel aus der Urne "Personen" ziehen und // die gezogene Kombination in den Variablen von IV01 speichern urnDraw('Personen', 'IV01'); // Anzeigen der gezogenen Kombination (testweise) html('<p>Auf dem Zettel steht die Kombination '.value('IV01_01').' - '.value('IV01_02').'</p>');
Hinweis: Im einfachsten Fall besteht eine Kombination nur aus einem einzigen Wert.
void urnPutAway([string FrageKennung])
Falls Sie die Funktion urnDraw()
mit dem Wert 'man
' für den dritten Parameter (Ablegen) aufgerufen haben, bestimmen Sie mittels urnPutAway(), wann die Kombination abgelegt werden soll.
Hinweis: So lange, bis der Zettel entwertet wurde können andere Interviewpartner denselben Zettel ziehen. Dadurch kann es kurzfristig zu minimalen Ungleichverteilungen kommen, die aber automatisch wieder korrigiert werden.
Tipp: Lassen Sie urnPutAway()
weg, um eine Zufallsauswahl mit Zurücklegen zu realisieren, wenn Sie eine Kombination (also nicht nur eine Zahl) ziehen möchten.