Wahrscheinlichkeit: Denken unter Unsicherheit
Ergebnisräume, bedingte Wahrscheinlichkeit, Erwartungswert und warum ein zu 99 Prozent genauer Test fast jedes Mal falsch liegen kann.
Bisher war jede Behauptung in diesem Kurs wahr oder falsch. Die Wahrscheinlichkeit braucht man, wenn die ehrliche Antwort eine Zahl dazwischen ist, und die Disziplin, die sie verlangt, ist einfach: schreiben Sie den Ergebnisraum auf, bevor Sie irgendetwas rechnen. Das ist die Liste alles dessen, was passieren kann, mit genau einem Eintrag pro Ergebnis. Bei zwei Münzwürfen hat der Raum unten vier Einträge, nicht drei. Der verlockende Fehler ist, zwei Wappen, ein Wappen, kein Wappen zu schreiben, was zwei verschiedene Ergebnisse zu einem verschmilzt und jede spätere Rechnung um den Faktor zwei verfälscht.
two fair coins
S = { HH, HT, TH, TT }
P(HH) = 1 / 4
P(at least one H) = 3 / 4
P(exactly one H) = 2 / 4
P(HH) + P(HT) + P(TH) + P(TT) = 1Hier zahlt sich die vorige Lektion aus. Wenn alle Ergebnisse im Raum gleich wahrscheinlich sind, ist eine Wahrscheinlichkeit einfach eine Anzahl geteilt durch eine Anzahl, und C von n und r sowie P von n und r erledigen die Arithmetik. Der ganze nächste Abschnitt besteht darin, günstige Ergebnisse zu zählen und durch die Größe des Raums zu teilen, deshalb kam die Kombinatorik zuerst.
/* independent */
P(A and B) = P(A) * P(B)
1/2 * 1/2 = 1/4
/* dependent, cards, no replacement */
P(first ace) = 4 / 52
P(second ace | first ace) = 3 / 51Zwei Ereignisse sind unabhängig, wenn das Wissen, dass eines eingetreten ist, nichts über das andere sagt, und nur dann multiplizieren sich ihre Wahrscheinlichkeiten. Zweimal eine Münze werfen ist unabhängig. Zwei Karten ohne Zurücklegen ziehen ist es nicht, denn die erste Karte hat die Karten aus dem Stapel entfernt: die Chance auf das zweite Ass ist drei von einundfünfzig, nicht vier von zweiundfünfzig. Die klassische Verwechslung ist, Unabhängigkeit für inhaltliche Zusammenhanglosigkeit zu halten. Das ist sie nicht, sie betrifft die Frage, ob das Erste die Zahlen für das Zweite geändert hat. In Programmen erscheint dieselbe Unterscheidung als Stichprobe mit und ohne Zurücklegen, und eine erstaunliche Zahl kaputter Simulationen entsteht daraus, ohne Zurücklegen zu ziehen und anzunehmen, man habe mit Zurücklegen gezogen.
P(A|B) = P(A and B) / P(B)
prevalence 1 / 1000 sensitivity 0.99 specificity 0.95
population 1000000
ill = 1000
healthy = 999000
ill and flagged = 1000 * 0.99 = 990
healthy and flagged = 999000 * 0.05 = 49950
flagged = 50940
P(ill | flagged) = 990 / 50940 = 0.019Und nun der Teil, den die meisten Menschen falsch machen, auch die meisten Ärztinnen und die meisten Entwickler. Lesen Sie den Block unten langsam. Eine Person von tausend ist krank. Der Test erkennt 99 von je 100 kranken Personen und markiert 5 von je 100 gesunden, was nach einem sehr guten Test klingt. Verfolgen Sie daran eine Million Menschen. Neunhundertneunzig der tausend Kranken werden korrekt markiert, und fast fünfzigtausend Gesunde werden fälschlich markiert. Zählen Sie nun: von etwa einundfünfzigtausend positiven Ergebnissen sind nur neunhundertneunzig echt. Das ist unter zwei Prozent. Der Test ist genau, und das Ergebnis ist trotzdem mit hoher Wahrscheinlichkeit falscher Alarm, und beide Aussagen sind gleichzeitig wahr.
P(positive | ill) = 0.99
P(ill | positive) = 0.019
ratio = 0.99 / 0.019 = 52
990 / 50940 = 0.019Der Grund ist keine Arithmetik, sondern dass zwei verschiedene Fragen stillschweigend vertauscht wurden. Die Sensitivität 0.99 ist die Wahrscheinlichkeit eines positiven Ergebnisses unter der Bedingung, dass Sie krank sind. Die Zahl, die für eine Patientin zählt, ist die umgekehrte: die Wahrscheinlichkeit, dass Sie krank sind, unter der Bedingung eines positiven Ergebnisses. Das sind nicht dieselben Zahlen, sie sind sich nicht einmal ähnlich, und hier unterscheiden sie sich um den Faktor etwa zweiundfünfzig. Diese Vertauschung hat einen Namen, den Basisratenfehler, und sie ist keine Prüfungskuriosität. Sie führt zu unnötiger Behandlung, überflüssiger Panik und schlechten Produktentscheidungen, und sie überlebt bei klugen Menschen, weil die richtige Antwort sich falsch anfühlt. Die allgemeine Lehre sollte man überall mittragen: wenn in einem Satz eine bedingte Wahrscheinlichkeit auftaucht, fragen Sie, welches Ereignis auf welcher Seite des Strichs steht und ob das Seltene im Zähler oder im Nenner liegt.
Wenn Sie der Arithmetik nicht glauben, simulieren Sie sie. Der Code unten schickt eine Million Menschen durch dieselben Zahlen und gibt den Anteil der positiven Ergebnisse aus, die wirklich krank sind. Er wird jedes Mal nahe bei 0.019 landen.
import random
ill = 0
flagged = 0
true_positive = 0
for _ in range(1000000):
sick = random.random() < 0.001
hit = random.random() < (0.99 if sick else 0.05)
if sick:
ill += 1
if hit:
flagged += 1
if sick:
true_positive += 1
print(true_positive / flagged)Monte-Carlo-Prüfung der Zahlen des medizinischen Tests: Prävalenz 0.001, Sensitivität 0.99, Falsch-Positiv-Rate 0.05.Der Erwartungswert ist die eine Zahl, die ein zufälliges Ergebnis zusammenfasst, und es ist der Durchschnitt, den man pro Versuch über viele Versuche erhielte. Multiplizieren Sie jedes Ergebnis mit seiner Wahrscheinlichkeit und addieren Sie. Das Lotterielos unten hat einen Erwartungswert von minus eins, und das ist die ehrliche Art zu sagen, dass das Los einen mehr kostet, als es im Mittel einbringt. Der Erwartungswert macht auch die frühere Testfrage konkret: ein Test lohnt sich nur, wenn der erwartete Nutzen eines richtigen Ergebnisses die Kosten der falschen Alarme überwiegt, die er erzeugt, und bei einer seltenen Krankheit mit unvollkommenem Test ist das eine echte Rechnung und keine Meinung.
/* lottery ticket, price 2 */
E = (1/1000000) * 1000000 + (999999/1000000) * 0 - 2
= 1 - 2
= -1Das hängt direkt an der Modellbewertung aus Tier 1, und es ist derselbe Fehler in anderer Kleidung. Genauigkeit ist eine bedingte Wahrscheinlichkeit, rückwärts gelesen: sie sagt, wie oft das Modell insgesamt recht hat, während man meist braucht, wie oft es recht hat, wenn es ja sagt. Bei einer seltenen Klasse gehen diese Zahlen weit auseinander, deshalb gibt es Precision und Recall und deshalb kann ein Modell mit 99 Prozent Genauigkeit wertlos sein. Die Basisrate ist kein Detail der Metrik, sie entscheidet, ob die Metrik überhaupt etwas bedeutet.
Praxis
Ein Screeningtest auf eine seltene Krankheit hat eine Sensitivität von 0.99, markiert also 99 von je 100 kranken Personen, und eine Falsch-Positiv-Rate von 0.05, markiert also 5 von je 100 gesunden. Eine Person von 1000 in der Bevölkerung ist krank. Ihr Test ist positiv. Welche Aussage stimmt?
Hinweise
- Schreiben Sie die beiden Ereignisse in der Reihenfolge auf, in der der Satz sie nennt, und benennen Sie jedes in Worten, bevor Sie Zahlen anfassen.
- Eine dieser Größen handelt von kranken Menschen, die andere von positiv getesteten. Das sind verschiedene Bevölkerungen.
Ordnen Sie jede Situation danach zu, ob die beiden Ereignisse unabhängig sind. Jede Antwort wird genau zweimal verwendet.
Hinweise
- Fragen Sie, ob das erste Ergebnis die Zahl der günstigen Ergebnisse für das zweite verändert.
- Erst das Zurücklegen der Karte in den Stapel lässt die nächste Ziehung die vorige vergessen.
Bringen Sie die Basisratenrechnung für eine Bevölkerung von 100000 Menschen in die richtige Reihenfolge. Prävalenz 1 von 1000, Sensitivität 0.99, Falsch-Positiv-Rate 0.05.
- 1Sensitivität 0.99 bedeutet, dass 100 * 0.99 = 99 Kranke positiv testen
- 2also stammen etwa 98 von je 100 positiven Ergebnissen von gesunden Menschen
- 31 von 1000 ist krank, also sind 100 krank und 99900 gesund
- 4mit 100000 Menschen beginnen
- 5P(krank | positiv) = 99 / 5094, das ist etwa 0.019
- 6die Gesamtzahl positiver Tests ist 99 + 4995 = 5094
- 7Falsch-Positiv-Rate 0.05 bedeutet, dass 99900 * 0.05 = 4995 Gesunde positiv testen
Hinweise
- Nehmen Sie eine runde Bevölkerung von 100000 Menschen, damit jede Gruppe eine ganze Zahl bleibt: 100 Kranke und 99900 Gesunde.
- Bauen Sie die Tabelle Zeile für Zeile aus den beiden Fehlerraten auf und teilen Sie erst dann die richtig Positiven durch die ganze positive Spalte.
Fragen zu dieser Lektion
Warum mit Logik und Mengen beginnen?
Weil alles andere darauf aufbaut. Datenbanken sind Mengen, Programme sind boolesche Entscheidungen, und „ist das schnell genug?“ ist die Mathematik des Wachstums. Wer das überspringt, erlebt spätere Fächer als Auswendiglernen.
Was sagt Big-O eigentlich aus?
Wie der Aufwand wächst, wenn die Eingabe wächst. Es ist keine Stoppuhr: Es sagt, ob sich die Zeit bei doppelten Daten verdoppelt oder vervierfacht. Dieser Unterschied entscheidet, ob ein Programm den echten Einsatz übersteht.
Ist das kostenlos?
Ja. Die erste Ebene jedes Fachs ist kostenlos und braucht kein Konto. Tiefere Ebenen und die höheren Stufen sind kostenpflichtig — genau das hält das Projekt am Leben.
Für welches Alter ist das gedacht?
Für neugierige Jugendliche ab etwa 12 Jahren und für Erwachsene, die bei null anfangen. Programmiererfahrung wird nicht vorausgesetzt; die Lektionen zu Netzwerken und Physik brauchen keine Mathematik über Schulniveau.
Muss ich schon programmieren können?
Nein. Logik, Physik und Netzwerke beginnen bei null. Code schreibst du im Bereich Programmiersprachen — und auch der fängt vorne an.
Muss ich etwas installieren?
Nein. Alles läuft im Browser: Theorie, Übungen und die interaktiven Simulationen. Es gibt nichts herunterzuladen und nichts einzurichten.
Wie lange dauert ein Fach?
Eine Lektion dauert 10 bis 15 Minuten. Eine Junior-Stufe umfasst etwa 12 bis 20 Lektionen, also einige Wochen regelmäßiger Übung statt eines Abends.
Muss ich der Reihenfolge folgen?
Innerhalb einer Stufe öffnen sich die Ebenen nacheinander, weil jede auf der vorherigen aufbaut. Zwischen den Fächern bist du frei: beginne mit Logik, Physik oder Netzwerken.