Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
de:create:points [31.01.2014 10:10] – [Punkte für Antworten zählen] Link zu Arrays admin | de:create:points [16.01.2015 12:02] – Aktualisierung admin | ||
---|---|---|---|
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. | + | 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, | + | **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 [[: | ||
+ | |||
+ | **Tipp:** Wenn Sie für eine Auswertung lediglich [[: | ||
- | **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 | + | 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 [[: | ||
- | 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 (bzw. deren Code) enthält. | + | 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( | ||
- | | + | ' |
- | | + | ' |
- | | + | ' |
- | | + | ' |
- | | + | ' |
// 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 |
- | for ($i=0; $i< | + | // Die Antwort des Teilnehmers abrufen |
- | | + | $answer |
- | $richtig = $fragen[$i][1]; | + | |
- | // Jetzt die Antwort des Teilnehmers abrufen | + | |
- | $antwort | + | |
// Überprüfen und ggf. einen Punkt zählen | // Überprüfen und ggf. einen Punkt zählen | ||
- | if ($antwort | + | if ($answer |
$points++; | $points++; | ||
} | } | ||
Zeile 44: | Zeile 46: | ||
</ | </ | ||
- | 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 |
<code php> | <code php> | ||
Zeile 50: | Zeile 52: | ||
// 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=> |
- | foreach ($fragen as $info) { | + | if (value($variable) == $correct) { |
- | if (value($info[0]) == $info[1]) { | + | $points++; |
- | $points++; | + | |
} | } | ||
} | } | ||
Zeile 60: | Zeile 61: | ||
// ... | // ... | ||
</ | </ | ||
+ | |||
===== Verschieden Punktwerte ===== | ===== 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 '' | + | 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 82: | ||
// 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 | + | foreach ($fragen as $variable |
// Antwort des Teilnehmers abrufen | // Antwort des Teilnehmers abrufen | ||
- | $antwort | + | $answer |
- | // Prüfen, ob für diese Antwort ein Wert vorliegt | + | // Prüfen, ob für diese Antwort ein Wert vorliegt |
- | 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 95: | ||
html('< | html('< | ||
</ | </ | ||
+ | |||
===== Skalen mit gedrehten Items ===== | ===== Skalen mit gedrehten Items ===== | ||
Auch für Likert-Skalen bzw. Teilskalen benötigt man hin und wieder einen Punktwert. Das Aufaddieren aller Items einer Skala ist trivial: | Auch für Likert-Skalen bzw. Teilskalen benötigt man hin und wieder einen Punktwert. Das Aufaddieren aller Items einer Skala ist trivial: | ||
+ | |||
+ | <code php> | ||
+ | $points = valueSum(' | ||
+ | |||
+ | // Das Ergebnis anzeigen oder anderweitig verarbeiten | ||
+ | html('< | ||
+ | </ | ||
+ | |||
+ | Man kann die Items natürlich auch einzeln abfragen, wie folgendes Beispiel zeigt: | ||
<code php> | <code php> | ||
Zeile 108: | Zeile 120: | ||
foreach ($items as $item) { | foreach ($items as $item) { | ||
// Die Frage-Kennung muss man noch zusammenbauen | // Die Frage-Kennung muss man noch zusammenbauen | ||
- | $kennung = ' | + | $kennung = ' |
// Antwort des Teilnehmers abrufen | // Antwort des Teilnehmers abrufen | ||
$antwort = value($kennung); | $antwort = value($kennung); | ||
Zeile 122: | Zeile 134: | ||
</ | </ | ||
- | 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 |
<code php> | <code php> | ||
Zeile 129: | Zeile 141: | ||
Nur minimal komplizierter wird es, wenn man eine Teilskala aufsummieren will oder die Items " | Nur minimal komplizierter wird es, wenn man eine Teilskala aufsummieren will oder die Items " | ||
+ | |||
+ | **Tipp:** Definieren Sie gedrehte Items gleich als solche (Item im **Fragenkatalog** auswählen -> // | ||
<code php> | <code php> | ||
Zeile 168: | Zeile 182: | ||
html('< | html('< | ||
</ | </ | ||
+ | |||
===== 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 187: | Zeile 202: | ||
</ | </ | ||
- | Die Verwendung Bool' | + | Die Verwendung Bool' |
<code php> | <code php> | ||
Zeile 231: | Zeile 246: | ||
// Das Ergebnis anzeigen oder anderweitig verarbeiten | // Das Ergebnis anzeigen oder anderweitig verarbeiten | ||
html('< | html('< | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== 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 " | ||
+ | |||
+ | <code php> | ||
+ | if ($points < 10) { | ||
+ | text(' | ||
+ | } elseif ($points < 20) { | ||
+ | text(' | ||
+ | } else { | ||
+ | text(' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Natürlich lässt sich so auch mehrdimensionales Feedback erstellen. Im folgenden Beispiel werden für die beiden Skalen '' | ||
+ | |||
+ | <code php> | ||
+ | $typ = valueMean(' | ||
+ | $use = valueMean(' | ||
+ | |||
+ | if ($typ < 1.5) { | ||
+ | text(' | ||
+ | } elseif ($typ <= 4.5) { | ||
+ | text(' | ||
+ | } else { | ||
+ | text(' | ||
+ | } | ||
+ | if ($use < 2.0) { | ||
+ | text(' | ||
+ | } elseif ($use < 4.0) { | ||
+ | text(' | ||
+ | } else { | ||
+ | text(' | ||
+ | } | ||
</ | </ |