$anzahlFrauen = statistic('count', 'SD01', 1); // Häufigkeit Frauen (1)
$anzahlMaenner = statistic('count', 'SD01', 2); // Häufigkeit Männer (2)
$anzahlAbgesch = statistic('count', 'SD01'); // Anzahl gültiger Daten
$anzahlAlle = statistic('count', 'SD01', false, true); // Alle Datensätze
html('
Bisher haben an dieser Befragung '.$anzahlAlle.' Personen
eine Angabe zu Ihrem Geschlecht gemacht, allerdings wurde das
Interview nur in '.$anzahlAbgesch.' Fällen auch abgeschlossen.
Die abgeschlossenen Interviews umfassen '.
$anzahlFrauen.' Frauen und '.
$anzahlMaenner.' Männer.
');
question('SD01'); // Frage nach dem eigenen Geschlecht
===== Häufigkeitsauszählung II =====
Die ''%%'frequencies'%%''-Statistik liefert alle möglichen Werte mit einem Aufruf.
**Hinweis:** Beachten Sie, dass das Array nur Einträge zu den Antwortcodes beinhaltet, deren Antworten im Datensatz mindestens einmal vorliegen. Prüfen sie daher, ob der Aray-Schlüssel vorhanden ist. Dies ist z.B. mit dem ''??'' Operator möglich.
$freq = statistic('frequencies', 'SD01'); // Häufigkeiten
$anzahlFrauen = ($freq[1] ?? 0);
$anzahlMaenner = ($freq[2] ?? 0);
html('
Die abgeschlossenen Interviews umfassen '.
$anzahlFrauen.' Frauen und '.
$anzahlMaenner.' Männer.
');
question('SD01'); // Frage nach dem eigenen Geschlecht
===== Multivariate Häufigkeit =====
Mit der '''crosscount'''-Statistik kann man (wie in einer Kreuztabelle) die Fälle auszählen, bei denen mehrere Variablen zutreffen.
Anstatt einer einzelnen Variable gibt man hier 2 oder mehr Variablen als Array oder durch ein Komma ('','') getrennt an. Als dritten Parameter //Option// gibt man an, welche Werte für jede Variable gezählt werden. Gezählt werden nur Fälle, die für die erste Variable den ersten Wert, für die zweite Variable den zweiten Wert, u.s.w. angegeben haben.
$nYoungFemale = statistic('crosscount', 'SD01,SD02', '2,1'); // Variablen und Werte als Komma-Liste ...
$nGrownFemale = statistic('crosscount', ['SD01','SD02'], [2,2]); // ... oder als Arrays
html('
Bisher haben an dieser Befragung '.$nYoungFemale.' Personen
angegeben, weiblich und in Altersgruppe 1 (bis 18 Jahre) zu sein.
'.$nGrownFemale.' Frauen gaben ein Alter ab 19 Jahren an.
');
question('SD01'); // Frage nach dem eigenen Geschlecht
question('SD02'); // Frage nach dem eigenen Alter
===== Gültige Prozent =====
Ausgegeben wird der Anteil eines Wertes an allen gültigen Angaben. Als drittes Argument muss der Wert angegeben werden, der gezählt werden soll.
$anteilFrauen = statistic('percent', 'SD01', 1); // Anteil der Frauen
html('
Bisher haben an dieser Befragung '.
$anteilFrauen.' Frauen teilgenommen.
');
question('SD01'); // Frage nach dem eigenen Geschlecht
===== Modus, häufigster angegebener Wert =====
Gibt den Wert zurück, der bisher am häufigsten ausgewählt wurde. Wenn mehrere Werte gleich häufig ausgewählt wurden, dann werden diese durch ein Komma getrennt zurückgegeben.
Als drittes Argument (in diesem Fall vom Typ Boolean) kann man angeben, ob auch ungültige Werte (keine Antwort, etc.) mitgezählt werden.
$modus = statistic('mode', 'AB01_02', true);
$modi = explode(',', $modus); // Mehrere Werte trennen
if (count($modi) > 1) {
// Mehrere häufigst genannte Werte
html('
Mehrere Antworten wurden gleich oft gewählt.
');
} else {
// Texte der Antwortoptionen (statistic() liefert nur den numerischen Code)
$text = getValuetext('AB01_02', $modus);
html('
Die häufigste Antwort auf diese Frage war: '.$text.'.
');
}
===== Min, Max und Mittelwert der gültigen Angaben =====
Die Statistiken '''min''', '''mean''' und '''max''' werden nur einen korrekten Wert berechnen, wenn für die Frage numerische Werte vorliegen. Bei einer Texteingabe werden Angaben, die keine Zahlen sind, ignoriert -- es sei denn, als dritter Parameter wird angegeben (''true''), dass auch ungültige Werte in die Statistik einfließen sollen.
Sind bisher keine gültigen Werte vorhanden, wird für '''mean''' 0 zurückgegeben, for '''min''' und '''max''' der Wert ''false''.
$min = statistic('min', 'BB01_03');
$max = statistic('max', 'BB01_03');
$mean = statistic('mean', 'BB01_03');
html('
Die Teilnehmer haben dem Programm bisher eine
Durchschnittsnote von '.$mean.' gegeben.
Die Bewertungen liegen zwischen '.$min.' und '.$max.'.
');
===== Teildatensätze auswerten =====
Mittels ''statistic('filter', ...)'' kann ein Filter gesetzt werden, der für alle weiteren Aufrufe von ''statistic()'' angewendet wird. Als zweiter Parameter können zur Beschleunigung (optional) //Variablen// angegeben werden, die in nachfolgenden Aufrufen benötigt werden.
Zurückgegeben wird die Anzahl der Fälle, welche dem Filter entsprechen. Der vierte Parameter //AlleDaten// hat nur Auswirkungen auf den Rückgabewert, nicht aber auf die weitere Zählung.
// Statistik nur über weibliche Teilnehmer (SD02 = 1)
// Die RT-Variablen werden gleich geladen, um Latenzzeiten zu reduzieren
$n = statistic('filter', ['RT02_01', 'RT02_02', 'RT02_03'], 'SD02==1');
// Mittelwert der Ratings (nur Frauen)
$mean1 = statistic('mean', 'RT02_01');
$mean2 = statistic('mean', 'RT02_02');
$mean3 = statistic('mean', 'RT02_03');
Der Filter erlaubt gängige Vergleichsoperatoren (''>'', ''>='', ''<'', ''%%<=%%'', ''!='', ''==''), Klammern und und Bool'sche Operatoren (''AND'', ''&&'', ''OR'', ''||'', ''NOT'', ''!'').
**Hinweis:** Vergleiche sind jeweils nur zwischen einer Variable und einem konstanten Wert (eine Zahl oder ein String) möglich, z.B. ''SD02==2'', Vergleiche zwischen zwei Variablen (''SD03>SD04'') werden nicht unterstützt.
// Statistik nur über weibliche Teilnehmer (SD02 = 1) ab 35 Jahren (SD03 >= 35)
$n = statistic('filter', false, '(SD02==1) AND (SD03 >= 35)');
Neben den Variablennamen können für den Filter auch ''QUESTNNR'', ''CASE'' und ''LANGUAGE'' verwendet werden.
// Statistik nur über weibliche Teilnehmer (SD02 = 1) ab 35 Jahren (SD03 >= 35) in der deutschen Sprachversion
$n = statistic('filter', false, '(SD02==1) AND (SD03 >= 35) AND (LANGUAGE == "ger")');
Für den Vergleich mit Texten müssen selbige in Anführungszeichen stehen. Folgender Code würde z.B. alle Fälle betrachten, welche dieselbe Referenz (REF) haben wie das aktuelle Interview.
$n = statistic('filter', false, 'REF=="'.reference().'"');
Der Punkt fügt hier das ''%%REF=="%%'' mit der aktuellen Referenz und einem schließenden Anführungszeichen zusammen. Wenn das aktuelle Inteview mit der Referenz ''ABC'' gestartet wurde, wird der dritte Parameter also zu ''%%REF="ABC"%%'' berechnet.