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:points [01.10.2014 16:06] – Verbales Feedback ergänzt adminde:create:points [18.06.2018 12:27] – [Verschieden Punktwerte] dossants
Zeile 1: Zeile 1:
 ====== Punkte für Antworten zählen ====== ====== Punkte für Antworten zählen ======
  
-In den meisten sozialwissenschaftlichen Befragungen ist man an der Meinung der Teilnehmer interessiert -- nicht so, wenn man mit oFb ein Quiz baut. Hier gibt es i.d.R. richtige und falsche Antworten und man kann einen Punktwert ermitteln. Auch bei live-Auswertungen (z.B. einer Thurstone- oder Likert-Skala) darf man mitunter Punkte zählen.+In den meisten sozialwissenschaftlichen Befragungen ist man an der Meinung der Teilnehmer interessiert -- nicht so, wenn man Feedback zu einem Wissenstest geben möchte. Hier gibt es richtige und falsche Antworten und man kann einen Punktwert ermitteln. Auch bei live-Auswertungen (z.B. einer Thurstone- oder Likert-Skala) darf man mitunter Punkte zählen. So lässt sich als Incentive etwa eine Auswertung des Persönlichkeitstests am Ende des Fragebogens bauen.
  
-**Tipp:** Die PHP-Code Beispiele auf dieser Seite sehen sehr lang aus -- das liegt daran, dass jeder Schritt einzeln ausgeführt und kommentiert wurde. Lassen Sie sich von der Länge nicht erschrecken, es sind einfache und handliche Prozeduren.+**Tipp:** Die PHP-Code Beispiele auf dieser Seite sehen sehr lang aus -- das liegt daran, dass jeder Schritt einzeln ausgeführt und kommentiert wurde. Lassen Sie sich von der Länge nicht erschrecken
 + 
 +**Tipp:** Lesen Sie zum Verständnis der Code-Beispiele die Kapitel [[:de:create:php|Einführung in PHP-Code]] und [[:de:create:array|Einführung in Arrays]]. 
 + 
 +**Tipp:** Wenn Sie für eine Auswertung lediglich [[:de:general:indices|Skalenindizes]] berechnen möchtenstehen dafür die Funktionen ''[[:de:create:functions:valuesum|valueSum()]]'' und ''[[:de:create:functions:valuemean|valueMean()]]'' zur Verfügung.
  
-**Tipp:** Lesen Sie zum Verständnis der Code-Beispiele die Kapitel [[php|Einführung in PHP-Code]] und  [[array|Einführung in Arrays]]. 
  
 ===== Richtige und falsche Antworten ===== ===== Richtige und falsche Antworten =====
  
-Die einfachste Anwendung, bei der man Punkte zählt ist ein Quiz. Hier gibt es eine Reihe von Auswahl-Fragen und es ist jeweils eine der Optionen richtig.+Die einfachste Anwendung, bei der man Punkte zählt ist ein Quiz bzw. Wissentest. Hier gibt es eine Reihe von Auswahl-Fragen und es ist jeweils eine der Auswahloptionen richtig.
  
-Der folgende PHP-Code definiert zunächst, welche Fragen ausgewertet werden und wie die richtige Antwort lautet. Dafür wird ein verschachteltes Array verwendet: Jeder Eintrag in dem Array ist wiederum ein Array, das die Kennung der (Auswahl-)Frage und die korrekte Antwort (bzwderen Code) enthält. Anschließend werden alle Fragen in einer FOR-Schleife geprüft -- das ist wesentlich kompakter als dutzende IF-Konstruktionen.+Der folgende PHP-Code definiert zunächst, welche Fragen ausgewertet werden und wie die richtige Antwort lautet. Dafür wird ein [[:de:create:array|assoziatives Array]] verwendet: Als Schlüssel für jeden Eintrag im Array wird die Kennung der Variable (bei Auswahlfragen entsprechend der Frage-KennungverwendetAls Wert wird jener Antwortcode zugewiesen, der als "richtig" gezählt werden soll. 
 + 
 +Anschließend werden alle Fragen in einer FOR-Schleife geprüft -- das ist wesentlich kompakter als dutzende IF-Konstruktionen.
  
 <code php> <code php>
 // Definition der Fragen und der korrekten Antworten // Definition der Fragen und der korrekten Antworten
 $fragen = array( $fragen = array(
-  array('AB01'3),  // In Frage AB01 ist die richtige Antwort die 3 +  'AB01' => 3,  // In Frage AB01 ist die richtige Antwort die 3 
-  array('AB02'1),  // In AB02 hat die richtige Antwort den Code 1 +  'AB02' => 1,  // In AB02 hat die richtige Antwort den Code 1 
-  array('AB03'4),  // Bei AB03 versteckt sich die richtige Antwort hinter dem Code 4 +  'AB03' => 4,  // Bei AB03 versteckt sich die richtige Antwort hinter dem Code 4 
-  array('AB04'2)+  'AB04' => 2, 
-  array('AB05'1)+  'AB05' => 1
   // u.s.w.   // u.s.w.
 ); );
Zeile 28: Zeile 33:
  
 // Prüfung aller Fragen in einer Schleife // Prüfung aller Fragen in einer Schleife
-$anzahl = count($fragen); +foreach ($fragen as $variable=>$correct) { 
-for ($i=0; $i<$anzahl; $i++) { +  // Die Antwort des Teilnehmers abrufen 
-  $frage = $fragen[$i][0]; // Die Kennung ist jeweils im ersten Eintrag gespeichert (Index 0) +  $answer = value($variable);
-  $richtig = $fragen[$i][1]; // Die richtige Antwort jeweils im zweiten Eintrag (Index 1) +
-  // Jetzt die Antwort des Teilnehmers abrufen +
-  $antwort = value($frage);+
   // Überprüfen und ggf. einen Punkt zählen   // Überprüfen und ggf. einen Punkt zählen
-  if ($antwort == $richtig) {+  if ($answer == $correct) {
     $points++;  // Gleichbedeutend mit $points = $points + 1     $points++;  // Gleichbedeutend mit $points = $points + 1
   }   }
 } }
  
-// Das Ergebnis anzeigen oder anderweitig verarbeiten+// Das Ergebnis anzeigen ...
 html('<p>Sie haben '.$points.' Punkte erzielt.</p>'); html('<p>Sie haben '.$points.' Punkte erzielt.</p>');
 +// ... oder in einer internen Variable speichern
 +put('IV01_01', $points);
 </code> </code>
  
-Anstatt der FOR-Schleife kann man etwas eleganter auch eine FOREACH-Schleife verwenden. Hier eine kompaktere Programmierung des Zähl-Teils:+Eine kompaktere Programmierung des Zähl-Teils sieht wie folgt aus:
  
 <code php> <code php>
Zeile 50: Zeile 54:
  
 // Prüfung aller Fragen in einer Schleife // Prüfung aller Fragen in einer Schleife
-// Die foreach-Schleife kopiert jedes Array-Element (hier ja wieder ein Array) in eine Variable (hier $info) +foreach ($fragen as $variable=>$correct) { 
-foreach ($fragen as $info) { +  if (value($variable) == $correct) { 
-  if (value($info[0]) == $info[1]) { +    $points++;
-    $points++;  // Gleichbedeutend mit $points = $points + 1+
   }   }
 } }
Zeile 61: Zeile 64:
 </code> </code>
  
-===== Verschieden Punktwerte ===== 
  
-Bei einer Skala nach Thurstone hat jede Antwort einen anderen Wert - auch dies lässt sich in einer Array-Struktur gut abbilden. Dabei wird zu jeder Frage ein Array mit Antwort-Werten gespeichert. Beachten Sie, dass das Array hier nicht einfach eine fortlaufende Liste ist (Index 0, 1, 2, ...), sondern dass sowohl die Frage-Kennungen als auch die Antwort-Codes als Schlüssel fungieren (sog. assozitative Arrays) -- in PHP wird dies durch die Zeichenfolge ''%%=>%%'' erreicht.+===== Verschiedene Punktwerte ===== 
 + 
 +Bei einer Skala nach Thurstone hat jede Antwort einen anderen Wert -- auch dies lässt sich in einer Array-Struktur gut abbilden. Dabei wird zu jeder Frage ein Array mit Antwort-Werten gespeichert. 
  
 <code php> <code php>
Zeile 80: Zeile 84:
  
 // Mittels foreach kann man einfach die Schlüssel-Wert-Paare durchlaufen // Mittels foreach kann man einfach die Schlüssel-Wert-Paare durchlaufen
-foreach ($fragen as $kennung => $werte) {+foreach ($fragen as $variable => $values) {
   // Antwort des Teilnehmers abrufen   // Antwort des Teilnehmers abrufen
-  $antwort = value($kennung); +  $answer = value($variable); 
-  // Prüfen, ob für diese Antwort ein Wert vorliegt +  // Prüfen, ob für diese Antwort ein Wert vorliegt (sonst keinen Punkt vergeben) 
-  if (isset($werte[$antwort])) {+  if (isset($values[$answer])) {
     // Zählen des Wertes     // Zählen des Wertes
-    $points += $werte[$antwort];+    $points += $values[$answer];
   }   }
 } }
Zeile 93: Zeile 97:
 html('<p>Sie haben '.$points.' Punkte erzielt.</p>'); html('<p>Sie haben '.$points.' Punkte erzielt.</p>');
 </code> </code>
 +
  
 ===== Skalen mit gedrehten Items ===== ===== Skalen mit gedrehten Items =====
Zeile 117: Zeile 122:
 foreach ($items as $item) { foreach ($items as $item) {
   // Die Frage-Kennung muss man noch zusammenbauen   // Die Frage-Kennung muss man noch zusammenbauen
-  $kennung = 'AB01_'.$item;+  $kennung = 'AB01_'.sprintf('%02d', $item);
   // Antwort des Teilnehmers abrufen   // Antwort des Teilnehmers abrufen
   $antwort = value($kennung);   $antwort = value($kennung);
Zeile 131: Zeile 136:
 </code> </code>
  
-Die Codes reichen in oFb jeweils von 1 bis zum Skalenniveau. Falls man statt des Wertebereichs 1-5 lieber 0-4 aufaddieren möchte, muss man lediglich bei jeder Antwort 1 subtrahieren:+Die Codes reichen in SoSci Survey jeweils von 1 bis zum Skalenniveau. Falls man statt des Wertebereichs 1-5 lieber 0-4 aufaddieren möchte, muss man lediglich bei jeder Antwort 1 subtrahieren:
  
 <code php> <code php>
Zeile 179: Zeile 184:
 html('<p>Sie haben '.$points.' Punkte erzielt.</p>'); html('<p>Sie haben '.$points.' Punkte erzielt.</p>');
 </code> </code>
 +
  
 ===== Multiple Choice Antwortmuster ===== ===== Multiple Choice Antwortmuster =====
  
-Mitunter müssen für die Überprüfung einer Antwort mehrere Bedingungen kombiniert werden. Hat man zum Beispiel eine Mehrfachauswahl mit 4 Antwortvorgaben und will prüfen, ob die ersten beiden Optionen ausgewählt wurden, die letzten beiden aber nicht, so könnte man das mittels IF-Konstruktion wie folgt lösen:+Mitunter müssen für die Überprüfung einer Antwort mehrere Bedingungen kombiniert werden. Hat man zum Beispiel eine Mehrfachauswahl mit 4 Antwortvorgaben und will prüfen, ob die ersten beiden Optionen ausgewählt wurden, die letzten beiden aber nicht, so könnte man das mittels IF-Konstruktion wie folgt lösen.
  
 <code php> <code php>
Zeile 198: Zeile 204:
 </code> </code>
  
-Die Verwendung Bool'scher Operatoren (UND bzw. ODER) wird im Kapitel [[filter-boolean|Mehrere Bedingungen verknüpfen]] genauer beschrieben. Falls man aber mehrere Fragen dieses Typs hat und jeweils unterschiedliche Antwortmuster überprüfen will, kann man auch dies mit einem Array und einer Schleife recht elegant lösen. Folgender Code zählt für Multiple Choice-Fragen á 4 Antwortvorgaben jeweils einen Punkt für jede vollkommen korrekt beantwortete Frage.+Die Verwendung Bool'scher Operatoren (UND bzw. ODER) wird im Kapitel [[filter-boolean|Mehrere Bedingungen verknüpfen]] genauer beschrieben. Falls man aber mehrere Fragen dieses Typs hat und jeweils unterschiedliche Antwortmuster überprüfen will, kann man auch dies mit einem Array und einer Schleife eleganter lösen. Folgender Code zählt für Multiple Choice-Fragen á 4 Antwortvorgaben jeweils einen Punkt für jede vollkommen korrekt beantwortete Frage.
  
 <code php> <code php>
Zeile 243: Zeile 249:
 html('<p>Sie haben '.$points.' Punkte erzielt.</p>'); html('<p>Sie haben '.$points.' Punkte erzielt.</p>');
 </code> </code>
 +
  
 ===== Bewertungstexte anzeigen ===== ===== Bewertungstexte anzeigen =====
  
-In Abhängigkeit vom erreichten Punktwert können Sie auch unterschiedliches Feedback geben. Folgender Code zeigt im Bereich von 0 bis 9 Punkten den Textbautein "feedback1", 10-19 Punkte den Textbaustein "feedback2" und darüber "feedback3".+In Abhängigkeit vom erreichten Punktwert können Sie auch unterschiedliches Feedback geben. Folgender Code zeigt im Bereich von 0 bis 9 Punkten den Textbautein "feedback1", für 10-19 Punkte den Textbaustein "feedback2" und darüber "feedback3".
  
 <code php> <code php>
Zeile 258: Zeile 265:
 </code> </code>
  
-Natürlich lässt sich do auch mehrdimensionales Feedback erstellen. Im folgenden Beispiel werden für die beiden Skalen ''AB01'' und ''AB02'' zwei getrennte Punktwerte berechnet und entsprechend Textbausteine angezeigt.+Natürlich lässt sich so auch mehrdimensionales Feedback erstellen. Im folgenden Beispiel werden für die beiden Skalen ''AB01'' und ''AB02'' zwei getrennte Punktwerte berechnet und entsprechend Textbausteine angezeigt.
  
 <code php> <code php>
de/create/points.txt · Zuletzt geändert: 30.03.2022 15:27 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