1 Punkte von GN⁺ 2025-04-16 | 1 Kommentare | Auf WhatsApp teilen
  • Bei Berechnungen mit schwankenden Eingabewerten wie Jobwechsel, Geschäftspotenzial oder Investitionen hilft für Entscheidungen oft eine Spanne möglicher Ergebnisse mehr als eine einzelne Zahl
  • Unsure Calculator berechnet mit unsicheren Werten, die als Bereich wie 4~6 eingegeben werden, und 10~15 bedeutet, dass man mit 95% Sicherheit davon ausgeht, dass der tatsächliche Wert darin liegt
  • Das Ergebnis ist keine einzelne Zahl, sondern erscheint als Bereich, Wahrscheinlichkeitsverteilung und Perzentile; im Beispiel eines Umzugs für einen Job ins Ausland kann der monatliche Saldo zwischen -$60~+$220 liegen
  • Um die Eingabe einfach zu halten, wurden Angaben wie Verteilungsart, Konfidenzniveau oder Kovarianz weggelassen; intern basiert die Berechnung auf der Monte-Carlo-Methode, ist deshalb langsam und liefert wenig hilfreiche Fehlermeldungen
  • Das Tool ist nicht für Statistikexpert:innen gedacht, sondern für Überschlagsrechnungen auf der Serviettenrückseite zu Themen wie Geschäftsideen, Zeitersparnis, Pandemierisiko oder Marketing-ROI; für komplexe Analysen braucht es spezialisierte Werkzeuge

Unsichere Zahlen in Berechnungen einsetzen

  • Unsure Calculator ist eine frühe Version eines Unsicherheitsrechners für Zahlen, die nicht feststehen
  • Er vereinfacht Statistik auf das Problem: „Ich möchte mit Zahlen schlussfolgern, auch wenn diese Zahlen nicht sicher sind“
  • Auch in alltäglichen Rechnungen gibt es viele unsichere Eingabewerte, deshalb kann man Berechnungen mit Unsicherheit brauchen, ohne Statistikexpert:in zu sein

Schreibweise für Bereiche

  • Unterstützt werden nicht nur normale Zahlen wie 4, 3.14, 43942, sondern auch Bereichseingaben wie 4~6, 3.1~3.2, 40000~45000
  • ~ ist das Tilde-Zeichen zwischen zwei Extremwerten und ist auch auf dem Tastenfeld des Rechners enthalten
  • Die Bereichsschreibweise bedeutet: „Ich kenne den exakten Wert nicht, bin aber mit 95% Sicherheit überzeugt, dass der tatsächliche Wert in diesem Bereich liegt“
  • 10~15 kann einfach als „10 bis 15“ gelesen werden
  • Andere Wahrscheinlichkeitsverteilungen, andere Konfidenzniveaus, Trunkierung oder Kovarianz wären ebenfalls darstellbar, wurden aber weggelassen, weil es sonst schwerer verständlich würde
    • Dabei gilt die Annahme, dass Nutzer:innen, die mit solchen Konzepten vertraut sind, eher zu präziseren Tools greifen sollten
    • Das Ziel ist, einer breiten Nutzerschaft die Stärke statistischer Berechnungen leicht zugänglich zu machen

Die Falle einer Rechnung mit nur einer Zahl

  • Trifft man auf unsichere Werte, ist es leicht zu sagen: „Beides ist nicht sicher, also spielt es keine große Rolle“
  • Wenn man eine plausible Zahl auswählt und damit rechnet, wirkt die Einfachheit einer einzelnen Antwort verlockend, obwohl es in Wirklichkeit mehrere mögliche Ergebnisse geben kann
  • Unsure Calculator bezieht viele mögliche Ergebnisse in die Rechnung ein und zeigt so zugleich Risiken und Spielräume

Beispiel: Finanzrechnung bei einem Jobwechsel ins Ausland

  • Ausgangspunkt war 2015 die Situation, die finanziellen Auswirkungen einer Jobchance im Ausland für eine Familie abzuschätzen
    • Das Gehalt erfährt man oft erst, wenn der Bewerbungsprozess schon weit fortgeschritten ist
    • Die lokalen Lebenshaltungskosten, die von Freund:innen und aus dem Internet genannt wurden, gingen stark auseinander
    • Auch der Steuersatz lässt sich nicht einfach als einzelner Prozentwert festlegen
  • Zunächst wurde mit einzelnen, konservativ wirkenden Werten gerechnet
1500 * 0.6 - 650 - 150 - 30 - 20 = 50
  • Diese Rechnung zeigt nur ein einziges Ergebnis: Jeden Monat bleiben +$50 übrig
  • Setzt man stattdessen Bereiche ein und rechnet neu, sieht das Ergebnis anders aus
1400~1700 * 0.55~0.65 - 600~700 - 100~200 - 30 - 20 = -60~220
  • Wenn man mit 95% Sicherheit annimmt, dass die tatsächlichen Werte aller Posten in den jeweiligen Bereichen liegen, kann auch der tatsächliche monatliche Saldo zwischen -$60 und +$220 liegen
  • Das ist nützlicher als der Einzelwert +$50, weil auch die Möglichkeit sichtbar wird, Geld zu verlieren
  • Perzentile liefern noch konkretere Informationen für Entscheidungen
    • Wenn das 10. Perzentil -$8 ist, liegt die Wahrscheinlichkeit bei 10%, dass der monatliche Saldo -$8 oder darunter beträgt
    • Umgekehrt liegen 90% der Ergebnisse über -$8
    • Ebenso lässt sich ein 5%-Risiko berücksichtigen, monatlich -$33 oder mehr zu verlieren
  • Ob man dieses Risiko akzeptiert, hängt von Familie und Situation ab
    • Ohne Kinder und Hypothek kann die Risikobereitschaft anders sein als mit Kindern und Immobilienkredit
    • Ohne Backup-Plan wird man eine 10%ige Verlustwahrscheinlichkeit womöglich vorsichtiger bewerten

Beispiel: Drake-Gleichung

  • Obwohl das Ziel praktische Berechnungen sind, dient auch die Drake equation zur Abschätzung der Zahl außerirdischer Zivilisationen als Beispiel
  • Diese Gleichung ist eine astrophysikalische Formel zur Schätzung der Zahl kommunikationsfähiger Zivilisationen in einer Galaxie
  • Die ursprünglichen Werte von Frank Drake aus dem Jahr 1961 wurden über folgende Faktoren miteinander multipliziert
    • In der Galaxie entsteht pro Jahr 1 Stern
    • Davon hat 1/5 ungefähr 3 Planeten
    • 100% dieser Planeten entwickeln Leben
    • 100% dieses Lebens wird intelligent
    • Davon sind 10% kommunikationsfähig
    • Der Zustand der Kommunikationsfähigkeit hält 1 Million Jahre an
  • Multipliziert man diese Werte, ergibt sich 60,000, also das Resultat, dass es zu jedem Zeitpunkt 60.000 Zivilisationen in der Galaxie geben müsste, die zu kommunizieren versuchen
  • Seit 1961 haben sich die Schätzungen für die einzelnen Parameter unter Astrophysiker:innen stark auseinanderentwickelt
  • Ein Beispiel mit neueren Schätzungen als Bereiche sieht so aus
1.5~3 x 0.9~1.0 x 0.1~0.4 x 0.1~1.0 x 0.1~1.0 x 0.1~0.2 x 304~10000
  • Das Ergebnis von Unsure Calculator zeigt, dass die zu erwartende Zahl der Zivilisationen zwischen 0 und 450 liegen kann
  • Die Wahrscheinlichkeit ist zu kleineren Werten hin verzerrt, und auch das Histogramm ist nach unten hin breiter
  • Im Histogramm können negative Werte wie -5 auftauchen
    • Das ist eine Grenze des Tools, das zugunsten der Einfachheit gestaltet wurde
    • Ohne zusätzliches Wissen kann der Rechner die Einschränkung nicht erkennen, dass die Zahl der Zivilisationen nicht negativ sein kann

Mögliche Einsatzfälle

  • Man kann die Tragfähigkeit einer Geschäftsidee berechnen
    • Wenn Marktgröße, Marktanteil, Monatsumsatz pro Person und Betriebskosten alle unsicher sind
50000~80000 x 0.10~0.20 x 5~10 - 20000~50000
  • Man kann künftige Einnahmen schätzen
    • Wenn Monatseinnahmen, Vertragsdauer und Steuersatz unsicher sind
1000~1500 x 10~12 x (30~50 / 100)
  • Man kann berechnen, wie viel Zeit Technik wie eine Spülmaschine spart
    • Wenn Nutzung pro Woche, Zeitersparnis pro Nutzung, Lebensdauer und Installationskosten unsicher sind
(3~5 * 5~10 * 51 * 7~15) / 60 - 10~15
  • Man kann den Gesamtertrag eines Investmentkontos schätzen
    • Wenn Zinssatz und Anlagedauer unsicher sind
5000 x (-2~5 / 100) x 5~10
  • Man kann grob die Todeswahrscheinlichkeit in einer Pandemie berechnen
    • Wenn Infektionsrate und Fallsterblichkeit unsicher sind
(10~30 / 100) * (0.1~1.0 / 100) * 100
  • Man kann die Höhe eines Hochhauses schätzen
    • Wenn die Entfernung bis zum Fuß des Gebäudes und der Blickwinkel zur Spitze unsicher sind
100 x tan(70 ~ 80)
  • Man kann den ROI einer Marketingkampagne schätzen
    • Wenn Aufrufe, Klickrate, Conversion-Rate und Ausgaben unsicher sind
1000000 x (2~3 / 100) x (3~5 / 100) x (10~15)

Unterstützte Funktionen

  • Auf dem Tastenfeld gibt es nur +, -, x, /, aber schon in dieser frühen Phase werden mehr Berechnungen unterstützt
  • Beispiele für Funktionen und Operationen sind
    • 2~3 ^ 4: einen Wert zwischen 2 und 3 hoch 4
    • sqrt(10~12): die Quadratwurzel eines Werts zwischen 10 und 12
    • sin(90~95): der Sinus eines Werts zwischen 90 und 95 Grad

Grenzen und Teilen von Formeln

  • Da es ein Ein-Personen-Projekt ist, sollte man mit Bruchstellen rechnen
  • Der Formel-Parser ist fragil und Fehlermeldungen helfen kaum weiter
  • Die Berechnung ist ziemlich langsam
    • Um flexibel zu bleiben, wird die Monte-Carlo-Methode verwendet
    • Für jede eingegebene Berechnung werden ungefähr 250.000 AST-basierte Auswertungen ausgeführt
  • Die UI ist sehr schlicht und nicht besonders ansehnlich
  • Der einzige Weg, Formeln zu teilen, ist das direkte Erzeugen einer URL
  • range ist immer normalverteilt
    • Die kleine Zahl liegt 2 Standardabweichungen unter dem Mittelwert
    • Die große Zahl liegt 2 Standardabweichungen über dem Mittelwert
    • Komplexere Ansätze aus Sicht der Eingabe-Wahrscheinlichkeitsverteilung werden nicht unterstützt
  • Das Tool ist nicht für Statistikexpert:innen gedacht
    • Für Überschlagsrechnungen auf der Serviettenrückseite kann man Unsure Calculator verwenden
    • Für komplexere Aufgaben braucht es kostenlose oder kostenpflichtige Statistiktools, eine vollständige Programmierumgebung oder Statistikexpert:innen

Projekt und Updates

  • Wer bei der Verbesserung des Tools mithelfen oder eine Kommandozeilenversion bekommen möchte, kann github.com/filiph/unsure nutzen
  • Stand des Updates von 2025 werden diese Notation und das Tool seit 5 Jahren verwendet und sind zu einem unverzichtbaren Teil des Workflows beim Start neuer Projekte geworden
  • Eine neuere App-Version im Notebook-Stil gibt es hier
    • Sie ist weniger anfängerfreundlich, hilft Power-Usern aber stärker
  • Wer am Projekt interessiert ist, kann Filip Hracek folgen oder die Mailingliste abonnieren

1 Kommentare

 
GN⁺ 2025-04-16
Hacker-News-Kommentare
  • Mir gefällt dieses Tool. Allerdings, ganz in HN-Tradition, wenn ich mich an einem einzelnen Wort im Beitrag festbeiße und eine fast – aber praktisch vollständig – nebensächliche Bemerkung dazu mache: Bei solchen Berechnungen gibt es mindestens drei Stellen, an denen man sich selbst ins Bein schießt.

    1. 95 % ist viel breiter, als die meisten Leute denken. Menschen verstehen 95 % als „das wird wohl ungefähr stimmen“, tatsächlich liegt es aber näher an „ich wäre ziemlich überrascht, wenn es nicht das ist“. Im Allgemeinen setzt man die Fehlerbalken im Kopf viel zu eng an.
    2. Wahrscheinlichkeiten sind nur selten wirklich unabhängig. Man könnte das die „Mortgage-Derivatives-Maxime“ nennen. Im Familienbeispiel ist die Miete wahrscheinlich mit den Lebensmittelkosten korreliert, und wenn die Miete hoch ist, sind die Lebensmittelkosten wahrscheinlich ebenfalls hoch. Dadurch verzieht sich die Verteilung, und wenn man sie als ungewichtete Gleichverteilung modelliert, ist man überrascht, wie „unwahrscheinlich“ das tatsächliche Ergebnis aussieht.
    3. Im Allgemeinen sind Normalverteilungen seltener, als viele denken. Sie treten eher dann auf, wenn es irgendeinen einschränkenden Faktor gibt, der Werte erzwingt. In der Natur sieht man sie oft, weil es überall negative Rückkopplungsschleifen gibt; verlässt man aber den relativ geordneten Garten der Natur und begibt sich ins Chaos menschlicher Angelegenheiten, wird die Normalverteilung ziemlich unnormal.
      Das Tool und die Implementierung sind gut, aber ich habe schon oft gesehen, wie Leute, die zum ersten Mal Statistik in die Hand nehmen, dabei einen Finger verlieren.
    • Stimme dem stark zu, besonders Punkt 1. Wenn man Leute bittet, den Bereich anzugeben, in dem sie mit 90 % Sicherheit glauben, dass die Antwort liegt, nennen sie im Durchschnitt einen Bereich, der ungefähr einem 30-%-Konfidenzintervall entspricht.
      Mehr als 90 % der Leute erreichen nicht einmal ein 70-%-Konfidenzintervall. Man kann es selbst testen: https://blog.codinghorror.com/how-good-an-estimator-are-you/
    • Ich habe einmal an einem Projekt gearbeitet, bei dem wir mit nichttechnischen Stakeholdern die erwarteten Fertigstellungstermine eines großen Gantt-Diagramms modelliert haben. Einige Aufgaben waren neu und ließen sich nicht realistisch als feste Zeitdauer quantifizieren, daher wollten die Business-Stakeholder probabilistische Bearbeitungszeiten.
      Den Stakeholdern gefiel der Ansatz sehr, Aufgabenzeiten als t_i ~ PERT(min, mode, max) anzugeben. Das entsprach ihrer Denkweise und konnte außerdem die in der Realität häufigen asymmetrischen Verteilungen abbilden.
      Zur Einordnung: PERT ist lediglich eine benutzerfreundliche und intuitive Reparametrisierung der Betaverteilung: https://rpubs.com/Kraj86186/985700
    • Das passt zu meinem Gesamteindruck vom Artikel. Mit zunehmender Komplexität und Schwierigkeit, über Bereiche nachzudenken, nahm mein Vertrauen in das Beispielergebnis eher ab.
      Das Ergebnis von 50 $ war gut, und wenn man eine Plus/Minus-Spanne daran hängt, bekommt man im Großen und Ganzen das Gefühl, dass man ungefähr am Break-even liegt. Dagegen erzeugt die Formulierung „mit 95 % Wahrscheinlichkeit liegt der tatsächliche Kontostand zwischen -60 $ und +220 $“ den Eindruck, man habe spezifischere Information gewonnen, obwohl man in jedem Schritt nur eine Zusammensetzung von Unsicherheit hinzugefügt hat.
      Wenn man nicht weiß, ob jeder Posten wirklich 95 % abdeckt oder was die echten Mindest- und Höchstwerte sind, fügt man nur weitere möglicherweise falsche Schätzungen hinzu. Deshalb mag ich auch die Drake-Gleichung nicht besonders. Jeder Schritt ist eine Anhäufung grober Schätzungen, und ich frage mich, ob dabei wirklich eine nützliche Zahl herauskommt.
    • Ich stimme nicht wirklich zu, dass „die Miete sehr wahrscheinlich stark mit den Lebensmittelkosten korreliert und dass bei hoher Miete wahrscheinlich auch die Lebensmittelkosten hoch sind“. Ein Modell, in dem die durchschnittliche Miete mit den durchschnittlichen Lebensmittelkosten korreliert, ist plausibel; wenn diese beiden Parameter aber gegeben sind, kann man die Schwankungen um den Mittelwert als unkorreliert modellieren.
      Wenn man an dem Punkt ist, solche Dinge berücksichtigen zu wollen, sollte man ohnehin echte Bayes-Statistik betreiben.
      Auch die Aussage „Normalverteilungen brauchen irgendeinen einschränkenden Faktor, der Werte erzwingt“ – keine Ahnung, woher das kommt. Was man braucht, sind unkorrelierte Fehler, nicht „Einschränkungen“ oder „negative Rückkopplung“.
    • Ich habe Statistik nie wie Elektrowerkzeuge oder Schusswaffen betrachtet, aber die Metapher „Leute, die zum ersten Mal Statistik in die Hand nehmen, verlieren einen Finger“ passt wirklich gut.
  • Ich habe einmal ein ähnliches Tool gebaut.
    fermi für die Kommandozeile: https://git.nunosempere.com/NunoSempere/fermi
    Verteilungsrechner für Android: https://f-droid.org/en/packages/com.nunosempere.distribution...
    Vielleicht ist auch die komplexere Version https://www.squiggle-language.com/ interessant. Oder die schnellere, aber deutlich ausführlichere C-Version unter <https://git.nunosempere.com/personal/squiggle.c>.

    • Insbesondere Fermi hat folgende Syntax:
      5M 12M # number of people living in Chicago  
      
      beta 1 200 # fraction of people that have a piano  
      
      30 180 # minutes it takes to tune a piano, including travel time  
      
      / 48 52 # weeks a year that piano tuners work for  
      
      / 5 6 # days a week in which piano tuners work  
      
      / 6 8 # hours a day in which piano tuners work  
      
      / 60 # minutes to an hour  
      
      Multiplikation wird als Standardoperation implizit angenommen, und die benutzerdefinierte Verteilung ist eine Lognormalverteilung.
    • Ein weiteres Tool aus derselben Richtung ist <https://carlo.app/>. Es ermöglicht Berechnungen dieser Art in Google Sheets.
    • Es wäre ein schönes Detail, wenn Squiggle die Syntax a~b unterstützen würde :^)
    • Ich habe unsure calc und die Android-App ausprobiert, und sie scheinen unterschiedliche Ergebnisse zu liefern.
  • Cool. Wenn dir der Artikel gefallen hat, könnte auch das Paper „Dissolving the Fermi Paradox“ interessant sein. Es geht ausführlicher darauf ein, statt der üblichen Punktschätzungen tatsächlich Wahrscheinlichkeitsdichtefunktionen zu multiplizieren.
    Etwas überraschend kommt dabei heraus, dass wir vielleicht einfach allein sind.
    https://arxiv.org/abs/1806.02404

    • Ehrlich gesagt etwas deprimierend, aber fast alle hier dürften es schon wegen der Methodik lesenswert finden.
  • Ich habe ein ähnliches Tool gebaut, allerdings für die Kommandozeile[1] und mit ähnlicher Motivation, aber etwas ambitionierter[2].
    Ich finde es großartig, dass mehr Leute auf diese Weise denken. Die Fähigkeit, über Quellen von Varianz nachzudenken, ist nicht etwas, worin alle geschult werden oder was alle entwickeln, wird aber immer wichtiger[3].
    [1]: https://git.sr.ht/~kqr/precel
    [2]: https://entropicthoughts.com/precel-like-excel-for-uncertain...
    [3]: https://entropicthoughts.com/statistical-literacy

  • Die ASCII-Art-Histogramme, genauer gesagt ANSI-Art-Histogramme, sind klasse. Ein guter Hack, um schnell etwas hinzubekommen.
    Ich hätte wahrscheinlich fünfmal so viel Zeit damit verbracht, diverse Chart-Bibliotheken auszuprobieren, und dann aufgegeben.

    • In ähnlicher Weise sind die groben handgezeichneten Illustrationen ziemlich gut. Passt gut zum „Servietten“-Thema.
    • Hier [1] gibt es eine ordentliche Implementierung in Awk. Etwas rau, wirkt aber leicht erweiterbar.
      [1] https://github.com/stefanhengl/histogram
  • https://www.getguesstimate.com/ ist im Grunde eine Spreadsheet-Version davon.

  • Gibt es eine Möglichkeit, eine Multiplikation zu machen, die keine skalare Multiplikation ist? Wenn ich zum Beispiel „Summe aus drei Würfen eines Würfels“ ausdrücken will, dann möchte ich — abgesehen davon, dass es keine Normalverteilung ist — dass 1~6 * 3 = 1~6 + 1~6 + 1~6 = 6~15 ergibt.
    Tatsächlich wird daraus aber 1~6 * 3 = 3~18. Damit werden Berechnungen wie „Wie lange dauert es, 1000 Aufgaben abzuschließen, die jeweils 10~100 dauern?“ wirklich schwierig.

  • Es wäre schön, wenn man die Ausgabe wieder in ein Intervall oder eine Gauß-Verteilung umwandeln könnte.
    Hinweis: Falls du dich fragst, warum im Histogramm negative Werte (-5) auftauchen: Das ist ein unvermeidlicher Nachteil, der aus der Einfachheit des Unsure Calculator folgt. Ohne zusätzliches Wissen kann der Rechner nicht wissen, dass negative Werte unmöglich sind.
    Die Drake-Gleichung oder Gleichungen, die Wahrscheinlichkeiten multiplizieren, kann man auch im Log-Raum betrachten. Es gibt Unsicherheit auf der Skala jeder Wahrscheinlichkeit, und die endgültige Wahrscheinlichkeit ist das Produkt der Exponentialwerte der Log-Wahrscheinlichkeiten. Dann tritt dieses Problem mit negativen Werten nicht auf.

    • Das Basisbeispiel 100 / 4~6 liefert als Ausgabe 17~25.
  • Zuerst klingt es wie ein Spielzeug, aber es wirkt überraschend nützlich. Wenn es als App herauskäme, die man neben dem normalen Taschenrechner verwenden kann, würde ich sie definitiv installieren.
    Mir fällt gerade nicht genau ein, wann ich sie gebraucht hätte, aber wenn man sie auf einen Tastatur-Shortcut legt, ist die Chance ziemlich hoch, dass man anfängt, Einsatzfälle dafür zu finden.

    • Ich habe hier Zahlen eingesetzt — also Bevölkerung × Besitzquote × Austauschhäufigkeit × Stückpreis —, um den Jahresumsatz des Smartphone-Markts zu schätzen, und lag nur ein paar Prozentpunkte von den im Internet genannten Ist-Werten entfernt.
      Da auch trigonometrische Funktionen vorhanden sind, dürfte es sich auch gut eignen, um komplexe Bauteile anhand einfacher Messwerte zu reverse-engineeren. Zum Beispiel Formvolumen, Kantenwinkel oder Querschnittsflächen.
      Unterstützung für multimodale Verteilungen wäre schön, ist aber nicht zwingend. Arkusfunktionen wären ebenfalls interessant, aber komplex und nicht zwingend nötig.
      Jedenfalls ist dieses Tool bequemer, als jedes Mal Python zu öffnen, wenn man den Bereich einer Antwort abschätzen will.
    • Wenn du eine App brauchst, wäre https://f-droid.org/en/packages/com.nunosempere.distribution... eine Überlegung wert.
    • Da Dart als Hauptsprache verwendet wird, dürfte es hier leicht sein, eine Flutter-App zu bauen.
  • Feature-Wunsch: Es wäre schön, wenn man Wahrscheinlichkeitsverteilungen angeben könnte. Zum Beispiel ~ für Normalverteilung, _ für Gleichverteilung und so weiter.

    • Ich denke, so etwas sollte über Funktionen laufen. Etwa G(50, 1) für eine Gauß-Verteilung mit µ=50 und σ=1, N(3) für eine negative Exponentialverteilung mit λ=3, U(0, 1) für eine Gleichverteilung zwischen 0 und 1 oder UI(1, 6) für eine diskrete Gleichverteilung der ganzen Zahlen von 1 bis 6.
      Das wirkt deutlich flexibler und leichter zu merken.
    • Dass diese Funktion fehlt, ist selbst ein Feature. Der Artikel sagt das auch so.