Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
de:create:functions:statistic [20.11.2014 20:53] adminde:create:functions:statistic [01.04.2019 23:00] – [Teildatensätze auswerten] admin
Zeile 1: Zeile 1:
 ====== statistic() ====== ====== statistic() ======
  
-''mixed **statistic**(string //Statistik//, string //Variablen//, mixed //Option//, [boolean //AlleDaten//])''+''mixed **statistic**(string //Statistik//, array|string //Variablen//, mixed //Option//, [boolean //AlleDaten//])''
  
-Mit der Funktion statistic() kann man einige univariate Kennwerte bestimmen: Mittelwert, Modus oder Häufigkeiten.+Mit der Funktion statistic() kann man univariate Kennwerte aus dem Datensatz ermitteln (über alle bisherigen Interviews hinweg).
  
   * //Statistik//\\ Welche Statistik soll ermittelt werden?   * //Statistik//\\ Welche Statistik soll ermittelt werden?
Zeile 13: Zeile 13:
     * '''max''' -- Größter Wert.     * '''max''' -- Größter Wert.
     * '''mean''' -- Arithmetisches Mittel der Werte.     * '''mean''' -- Arithmetisches Mittel der Werte.
-  * //Variablen//\\ Legt fest, für welche Variable(n) die Statistik berechnet werden soll. Die Kennungen der einzelnen Variablen findet man in der **Variablen-Übersicht**.+    * '''groupmean''' -- Arithmetisches Mittel der Werte einer Teilgruppe, welche durch //Option// definiert wird, angegeben als Sting bestehend aus Variablenname und Code für die zu zählenden Fälle '''AB01=2'''
 +    * '''filter''' -- Legt fest, welche Fälle bei weiteren Aufrufen der Funktion ''statistic()'' verwendet werden sollen (Details s. [[#teildatensaetze_auswerten|unten]]). 
 + 
 +  * //Variablen//\\ Legt fest, für welche Variable(n) die Statistik berechnet werden soll. Die Kennungen der einzelnen Variablen findet man in der **Variablen-Übersicht**. Falls die Statistik mehrere Variabeln benötigt, können diese entweder als Komma-separierter String oder als Array angegeben werden.
   * //Option//\\ Einige Statistiken benötigen oder erlauben eine dritte Angabe, die mit diesem Parameter angegeben wird (s. unten).   * //Option//\\ Einige Statistiken benötigen oder erlauben eine dritte Angabe, die mit diesem Parameter angegeben wird (s. unten).
   * //AlleDaten//\\ Diese optionale Angabe legt fest, dass nicht nur die abgeschlossenen Interviews, sondern alle Interviews in die Statistik einfließen.   * //AlleDaten//\\ Diese optionale Angabe legt fest, dass nicht nur die abgeschlossenen Interviews, sondern alle Interviews in die Statistik einfließen.
  
-**Wichtig:** In die Berechnung der statistischen Werte werden nur abgeschlossene Interviews aufgenommen, wenn für den Parameter **allData** nicht explizit **true** angegeben wird.+===== Hinweise ===== 
 + 
 +**Wichtig:** In die Berechnung der statistischen Werte werden nur abgeschlossene Interviews aufgenommen, wenn für den Parameter //allData// nicht explizit ''true'' angegeben wird. 
 + 
 +**Wichtig:** Testdaten aus der Fragebogen-Entwicklung und dem Pretest werden nur dann mitgezählt, wenn das laufende Interview ebenfalls Teil des Tests ist. Wenn das Interview im Rahmen der regulären Datenerhebung durchgeführt wird, zählt ''statistic()'' nur Daten aus der regulären Datenerhebung. 
 + 
 +**Hinweis:** Die Daten aus dem aktuellen Interview liegen erst nach zweimaligem Klick auf "Weiter" zur Analyse bereit. Der Ablauf ist folgende: Zunächst wird die Frage gestellt. Nach dem Klick auf "Weiter" werden die Antworten eingelesen (aber noch nicht gespeichert), dann wird die nächste Seite aufgebaut und erst dann werden die Daten gespeichert. Auf der Seite, die einer Frage direkt folgt, ist die Angabe zur Frage in der Statistik daher noch nicht enthalten. 
 + 
 +**Tipp:** Die Funktion ''statistic()'' kann eingesetzt werden, um den Fragebogen nach erreichen einer vordefinierten Quote zu schließen ([[:de:survey:quota]]) und weiteren Teilnehmern entweder eine Meldung anzuzeigen oder sie zum Quotenstopp-Link eines Panel-Anbieters umzuleiten. 
 + 
 +**Tipp:** Möchte man nicht alle abgeschlossenen Interview zählen (z.B. wenn Abbrecher mittels ''[[:de:create:functions:redirect]]'' zu einer anderen Seite umgeleitet wurden), ist es sinnvoll, die zu zählende Variable weiter hinten im Fragebogen in eine [[:de:create:questions:internal]] zu kopieren. 
  
-**Wichtig:** Testdaten aus der Fragebogen-Entwicklung und dem Pretest werden nur mitgezählt, wenn das laufende Interview ebenfalls Teil des Tests ist. Wenn das Interview im Rahmen der regulären Datenerhebung durchgeführt wird, zählt ''statistic()'' nur Daten aus der regulären Datenerhebung. 
  
 ===== Häufigkeitsauszählung ===== ===== Häufigkeitsauszählung =====
  
-Als drittes Argument bei einer Häufigkeitsauszählung (count) kann man angeben, für welchen Wert man die Häufigkeit bestimmen möchte. Gibt man keinen dritten Wert an, wird die Anzahl gültiger Antworten ausgegeben. Fehlende Daten werden dabei nicht mitgezählt.+Als drittes Argument bei einer Häufigkeitsauszählung ('''count''') kann man angeben, für welchen Wert man die Häufigkeit bestimmen möchte. Gibt man keinen dritten Wert an, wird die Anzahl gültiger Antworten ausgegeben. Fehlende Daten werden dabei nicht mitgezählt.
  
-Hat man beispielsweise eine Auswahl für das Geschlecht (1=weiblich, 2=männlich, -9=keine Angabe), so kann man die Anzahl der Frauen mit Angabe des dritten Wertes 1 ermitteln:+Hat man beispielsweise eine Auswahl für das Geschlecht (1=weiblich, 2=männlich, -9=keine Angabe), so kann man die Anzahl der Frauen mit Angabe des dritten Wertes ''1'' ermitteln:
  
-**PHP-Code** 
 <code php> <code php>
-$anzahl_frauen = statistic('count', 'SD01', 1);  // Häufigkeit Frauen (1) +$anzahlFrauen = statistic('count', 'SD01', 1);  // Häufigkeit Frauen (1) 
-$anzahl_maenner = statistic('count', 'SD01', 2); // Häufigkeit Männer (2) +$anzahlMaenner = statistic('count', 'SD01', 2); // Häufigkeit Männer (2) 
-$anzahl_abgesch = statistic('count', 'SD01');    // Anzahl gültiger Daten  +$anzahlAbgesch = statistic('count', 'SD01');    // Anzahl gültiger Daten  
-$anzahl_all = statistic('count', 'SD01', false, true); // Alle Datensätze +$anzahlAlle = statistic('count', 'SD01', false, true); // Alle Datensätze 
 html(' html('
-  <p>Bisher haben an dieser Befragung '.$anzahl_all.' Personen+  <p>Bisher haben an dieser Befragung '.$anzahlAlle.' Personen
   eine Angabe zu Ihrem Geschlecht gemacht, allerdings wurde das   eine Angabe zu Ihrem Geschlecht gemacht, allerdings wurde das
-  Interview nur in '.$anzahl_abgesch.' Fällen auch abgeschlossen.</p>+  Interview nur in '.$anzahlAbgesch.' Fällen auch abgeschlossen.</p>
   <p>Die abgeschlossenen Interviews umfassen '.   <p>Die abgeschlossenen Interviews umfassen '.
-  $anzahl_frauen.' Frauen und '. +  $anzahlFrauen.' Frauen und '. 
-  $anzahl_maenner.' Männer.</p>+  $anzahlMaenner.' Männer.</p>
 '); ');
 question('SD01');  // Frage nach dem eigenen Geschlecht question('SD01');  // Frage nach dem eigenen Geschlecht
 </code> </code>
 +
  
 ===== Multivariate Häufigkeit ===== ===== Multivariate Häufigkeit =====
  
-Mit der //crosscount//-Statistik kann man (wie in einer Kreuztabelle) die Fälle auszählen, bei denen mehrere Variablen zutreffen.+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 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.+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.
  
-**PHP-Code** 
 <code php> <code php>
-$anzahl_junge_frauen = statistic('crosscount', 'SD01,SD02', '2,1');  // Variablen und Werte als Komma-Liste ... +$nYoungFemale = statistic('crosscount', 'SD01,SD02', '2,1');  // Variablen und Werte als Komma-Liste ... 
-$anzahl_erw_frauen = statistic('crosscount', array('SD01','SD02'), array(2,2));  // ... oder als Arrays+$nGrownFemale = statistic('crosscount', array('SD01','SD02'), array(2,2));  // ... oder als Arrays
 html(' html('
-  <p>Bisher haben an dieser Befragung '.$anzahl_junge_frauen.' Personen+  <p>Bisher haben an dieser Befragung '.$nYoungFemale.' Personen
   angegeben, weiblich und in Altersgruppe 1 (bis 18 Jahre) zu sein.   angegeben, weiblich und in Altersgruppe 1 (bis 18 Jahre) zu sein.
-  '.$anzahl_erw_frauen.' Frauen gaben ein Alter ab 19 Jahren an.</p>+  '.$nGrownFemale.' Frauen gaben ein Alter ab 19 Jahren an.</p>
 '); ');
 question('SD01');  // Frage nach dem eigenen Geschlecht question('SD01');  // Frage nach dem eigenen Geschlecht
 question('SD02');  // Frage nach dem eigenen Alter question('SD02');  // Frage nach dem eigenen Alter
 </code> </code>
 +
  
 ===== Gültige Prozent ===== ===== Gültige Prozent =====
Zeile 67: Zeile 80:
 Ausgegeben wird der Anteil eines Wertes an allen gültigen Angaben. Als drittes Argument muss der Wert angegeben werden, der gezählt werden soll. Ausgegeben wird der Anteil eines Wertes an allen gültigen Angaben. Als drittes Argument muss der Wert angegeben werden, der gezählt werden soll.
  
-**PHP-Code** 
 <code php> <code php>
-$anteil_frauen = statistic('percent', 'SD01', 1); // Anteil der Frauen+$anteilFrauen = statistic('percent', 'SD01', 1); // Anteil der Frauen
 html(' html('
   <p>Bisher haben an dieser Befragung '.   <p>Bisher haben an dieser Befragung '.
-  $anteil_frauen.' Frauen teilgenommen.</p>+  $anteilFrauen.' Frauen teilgenommen.</p>
 '); ');
 question('SD01');  // Frage nach dem eigenen Geschlecht question('SD01');  // Frage nach dem eigenen Geschlecht
 </code> </code>
 +
  
 ===== Modus, häufigster angegebener Wert ===== ===== Modus, häufigster angegebener Wert =====
Zeile 83: Zeile 96:
 Als drittes Argument (in diesem Fall vom Typ Boolean) kann man angeben, ob auch ungültige Werte (keine Antwort, etc.) mitgezählt werden. Als drittes Argument (in diesem Fall vom Typ Boolean) kann man angeben, ob auch ungültige Werte (keine Antwort, etc.) mitgezählt werden.
  
-**PHP-Code** 
 <code php> <code php>
 $modus = statistic('mode', 'AB01_02', true); $modus = statistic('mode', 'AB01_02', true);
Zeile 93: Zeile 105:
  ');  ');
 } else { } else {
-  // Texte der Antwortoptionen - zurückgegeben wird nur +  // Texte der Antwortoptionen (statistic() liefert nur den numerischen Code) 
-  // der numerische Code +  $text getValuetext('AB01_02', $modus);
-  $optionen array( +
-    1 => 'stimme gar nicht zu', +
-    2 => 'stimme eher nicht zu', +
-    3 => 'stimme eher zu', +
-    4 => 'stimme voll zu', +
-    -1 => 'kann ich nicht sagen' +
-  );+
   html('   html('
-    <p>Die häufigste Antwort auf diese Frage war: '. +    <p>Die häufigste Antwort auf diese Frage war: '.$text.'.</p>
-    $optionen[$modus].'</p>+
   ');   ');
 } }
 </code> </code>
  
-===== Mittelwert der gültigen Angaben ===== 
  
-Diese Statistik wird natürlich nur einen korrekten Wert berechnenwenn für die Frage numerische Werte vorliegen. Bei einer Texteingabe werden Angaben, die keine Zahlen sind, ignoriert.+===== MinMax und Mittelwert der gültigen Angaben =====
  
-Sind bisher keine gültigen Werte vorhanden, wird 0 zurückgegeben.+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''.
  
-**PHP-Code** 
 <code php> <code php>
 +$min = statistic('min', 'BB01_03');
 +$max = statistic('max', 'BB01_03');
 $mean = statistic('mean', 'BB01_03'); $mean = statistic('mean', 'BB01_03');
 html(' html('
   <p>Die Teilnehmer haben dem Programm bisher eine   <p>Die Teilnehmer haben dem Programm bisher eine
   Durchschnittsnote von '.$mean.' gegeben.</p>   Durchschnittsnote von '.$mean.' gegeben.</p>
 +  <p>Die Bewertungen liegen zwischen '.$min.' und '.$max.'.</p>
 '); ');
 +</code>
 +
 +
 +===== 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.
 +
 +<code php>
 +// Statistik nur über weibliche Teilnehmer (SD02 = 1)
 +// Die RT-Variablen werden gleich geladen, um Latenzzeiten zu reduzieren
 +$n = statistic('filter', array('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');
 +</code>
 +
 +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.
 +
 +<code php>
 +// Statistik nur über weibliche Teilnehmer (SD02 = 1) ab 35 Jahren (SD03 >= 35)
 +$n = statistic('filter', false, '(SD02==1) AND (SD03 >= 35)');
 +</code>
 +
 +Neben den Variablennamen können für den Filter auch ''QUESTNNR'', ''CASE'' und ''LANGUAGE'' verwendet werden.
 +
 +<code php>
 +// 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")');
 </code> </code>
de/create/functions/statistic.txt · Zuletzt geändert: 08.03.2024 10:57 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