- Dans les calculs où les entrées fluctuent, comme un changement de poste, la viabilité d’un projet ou un investissement, la plage des résultats possibles aide davantage à décider qu’un seul chiffre
- Unsure Calculator permet d’entrer des plages comme
4~6 pour calculer avec des valeurs incertaines, et 10~15 signifie qu’on est sûr à 95 % que la vraie valeur se trouve dans cet intervalle
- Le résultat n’est pas un chiffre unique, mais une plage, une distribution de probabilités et des percentiles ; dans l’exemple d’un départ à l’étranger, cela montre que le solde mensuel peut se situer entre
-$60~+$220
- Pour garder une saisie simple, les notations sur le type de distribution, le niveau de confiance ou la covariance ont été exclues, et le calcul interne repose sur la méthode de Monte Carlo, donc c’est lent et les messages d’erreur sont peu utiles
- Ce n’est pas un outil pour statisticiens, mais pour des calculs rapides sur un coin de nappe autour d’une idée de business, d’un gain de temps, du risque pandémique ou du ROI marketing ; pour les analyses complexes, il faut des outils spécialisés
Mettre des nombres incertains dans un calcul
- Unsure Calculator est une première version d’un calculateur d’incertitude destiné à manipuler des nombres non certains
- Il simplifie les statistiques en les ramenant à la question : « je veux faire des inférences à partir de nombres, même si ces nombres ne sont pas certains »
- Même dans les calculs du quotidien, beaucoup d’entrées sont incertaines ; on peut donc avoir besoin de calculer avec de l’incertitude sans être spécialiste des statistiques
Notation par plage
- En plus des nombres ordinaires
4, 3.14, 43942, il prend en charge des entrées sous forme de plage comme 4~6, 3.1~3.2, 40000~45000
~ est le tilde placé entre deux valeurs extrêmes, et il est aussi présent sur le pavé de la calculatrice
- Cette notation signifie : « je ne connais pas la valeur exacte, mais je suis sûr à 95 % que la vraie valeur se trouve dans cette plage »
10~15 se lit simplement « de 10 à 15 »
- Il serait possible d’ajouter des notations pour d’autres distributions de probabilité, d’autres niveaux de confiance, des troncatures ou des covariances, mais cela rendrait l’ensemble plus difficile à comprendre
- L’idée est que les utilisateurs à l’aise avec ces concepts préféreront de toute façon des outils plus sophistiqués
- L’objectif est de permettre à un large public de profiter facilement de la puissance des calculs statistiques
Le piège du calcul avec un seul nombre
- Quand on se retrouve face à des valeurs incertaines, il est facile de balayer cela d’un « puisqu’aucune n’est certaine, ce n’est pas important »
- Choisir un seul chiffre plausible et calculer avec donne l’attrait de la simplicité d’une réponse unique, mais dans la réalité il peut y avoir plusieurs résultats possibles
- Unsure Calculator intègre plusieurs résultats possibles dans le calcul afin de montrer à la fois les risques et la marge de manœuvre
Exemple de calcul financier pour un emploi à l’étranger
- Le point de départ vient d’une situation en 2015 où il fallait évaluer l’impact financier pour une famille d’une opportunité professionnelle à l’étranger
- Le salaire n’est souvent connu qu’après avoir bien avancé dans le processus de recrutement
- Le coût de la vie sur place variait fortement selon les amis ou les informations trouvées en ligne
- Même le taux d’imposition se prêtait mal à un simple pourcentage unique
- Au départ, le calcul a été fait avec une valeur unique qui semblait prudente
1500 * 0.6 - 650 - 150 - 30 - 20 = 50
- Ce calcul ne montre qu’un seul résultat : il resterait
+$50 par mois
- Si on refait le calcul avec des plages, le résultat change
1400~1700 * 0.55~0.65 - 600~700 - 100~200 - 30 - 20 = -60~220
- Si l’on est sûr à 95 % que la valeur réelle de chaque poste se situe dans sa plage, on peut considérer que le solde mensuel réel se trouvera lui aussi entre
-$60 et +$220
- C’est plus utile que la valeur unique
+$50, car cela fait apparaître la possibilité de perdre de l’argent
- Les percentiles donnent des informations plus concrètes pour la prise de décision
- Si le 10e percentile est
-$8, cela signifie qu’il y a 10 % de chances que le solde mensuel soit inférieur ou égal à -$8
- Inversement, 90 % des résultats sont supérieurs à
-$8
- On peut aussi prendre en compte un risque de 5 % de perdre au moins
-$33 par mois
- L’acceptation du risque dépend de la famille et du contexte
- La tolérance au risque peut être différente selon qu’on a ou non des enfants et un crédit immobilier
- Sans plan de secours, on regardera peut-être avec plus de prudence une probabilité de perte de 10 %
Exemple avec l’équation de Drake
- Même si l’objectif est pratique, l’équation de Drake servant à estimer le nombre de civilisations extraterrestres fait aussi partie des exemples
- Cette équation est une formule d’astrophysique qui estime le nombre de civilisations potentiellement capables de communiquer dans la galaxie
- Les valeurs d’origine proposées par Frank Drake en 1961 consistaient à multiplier les facteurs suivants
- 1 étoile se forme chaque année dans la galaxie
- 1/5 d’entre elles possèdent environ 3 planètes
- 100 % de ces planètes développent la vie
- 100 % de cette vie devient intelligente
- 10 % deviennent capables de communiquer
- cet état de communicabilité dure 1 million d’années
- En multipliant ces valeurs, on obtient
60,000, ce qui conduit au résultat qu’il devrait y avoir 60 000 civilisations tentant de communiquer dans la galaxie à un instant donné
- Depuis 1961, les estimations de chaque paramètre ont fortement divergé parmi les astrophysiciens
- Un exemple avec des estimations plus récentes sous forme de plages est le suivant
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
- Le résultat d’Unsure Calculator montre que le nombre de civilisations attendu pourrait se situer entre
0 et 450
- La probabilité est tirée vers les valeurs basses, et l’histogramme est lui aussi plus étalé du côté inférieur
- Des valeurs négatives comme
-5 peuvent apparaître dans l’histogramme
- C’est une limite de l’outil, qui privilégie la simplicité
- Sans connaissance supplémentaire, le calculateur ne peut pas savoir qu’un nombre de civilisations ne peut pas être négatif
Cas d’usage possibles
- Il peut servir à calculer la viabilité d’une idée de business
- Quand la taille du marché, la part de marché, le revenu mensuel par personne et les coûts d’exploitation sont tous incertains
50000~80000 x 0.10~0.20 x 5~10 - 20000~50000
- Il peut servir à estimer un revenu futur
- Quand le revenu mensuel, la durée du contrat et le taux d’imposition sont incertains
1000~1500 x 10~12 x (30~50 / 100)
- Il peut servir à calculer le temps économisé par une technologie comme un lave-vaisselle
- Quand la fréquence d’utilisation hebdomadaire, le temps gagné par utilisation, la durée de vie et le coût d’installation sont incertains
(3~5 * 5~10 * 51 * 7~15) / 60 - 10~15
- Il peut servir à estimer le rendement total d’un compte d’investissement
- Quand le taux d’intérêt et la durée d’investissement sont incertains
5000 x (-2~5 / 100) x 5~10
- Il peut servir à estimer grossièrement la probabilité de décès lors d’une pandémie
- Quand le taux d’infection et le taux de létalité sont incertains
(10~30 / 100) * (0.1~1.0 / 100) * 100
- Il peut servir à estimer la hauteur d’un immeuble de grande hauteur
- Quand la distance jusqu’au pied du bâtiment et l’angle de visée vers le sommet sont incertains
100 x tan(70 ~ 80)
- Il peut servir à estimer le ROI d’une campagne marketing
- Quand le nombre de vues, le taux de clic, le taux de conversion et la dépense sont incertains
1000000 x (2~3 / 100) x (3~5 / 100) x (10~15)
Fonctions prises en charge
- Le pavé n’affiche que
+, -, x, /, mais même à ce stade initial il prend en charge davantage de calculs
- Voici quelques exemples de fonctions et d’opérations
2~3 ^ 4 : élève une valeur entre 2 et 3 à la puissance 4
sqrt(10~12) : racine carrée d’une valeur entre 10 et 12
sin(90~95) : sinus d’une valeur entre 90 et 95 degrés
Limites et partage
- Comme c’est un projet mené par une seule personne, il faut s’attendre à ce que ça casse
- L’analyseur d’expressions est fragile et les messages d’erreur n’aident pas beaucoup
- Les calculs sont assez lents
- Pour conserver de la flexibilité, l’outil utilise la méthode de Monte Carlo
- Chaque calcul saisi exécute environ 250 000 évaluations basées sur un AST
- L’interface est très simple et peu esthétique
- La seule façon de partager une formule est de construire directement l’URL
range correspond toujours à une distribution normale
- Le nombre bas se situe à 2 écarts-types sous la moyenne
- Le nombre haut se situe à 2 écarts-types au-dessus de la moyenne
- Des approches plus complexes du point de vue des distributions d’entrée ne sont pas prises en charge
- Ce n’est pas un outil pour spécialistes des statistiques
- On peut utiliser Unsure Calculator pour des calculs rapides sur un coin de nappe
- Pour des travaux plus complexes, il faut des outils statistiques gratuits ou payants, un environnement de programmation complet ou un spécialiste des statistiques
Projet et mises à jour
- Pour contribuer à l’amélioration de l’outil ou obtenir une version en ligne de commande, on peut utiliser github.com/filiph/unsure
- D’après une mise à jour de 2025, cette notation et cet outil sont utilisés depuis 5 ans et sont devenus un élément essentiel du flux de travail au démarrage d’un nouveau projet
- Une version plus récente sous forme d’application notebook est disponible ici
- Elle est moins accessible aux débutants, mais plus utile pour les utilisateurs avancés
- Si le projet vous intéresse, vous pouvez suivre Filip Hracek ou vous abonner à la mailing list
1 commentaires
Avis sur Hacker News
J’aime bien cet outil. Mais, dans la tradition de HN, en m’accrochant à un seul mot de l’article pour partir sur une discussion presque — mais en réalité totalement — tangente, il y a au moins trois pièges où l’on se tire une balle dans le pied avec ce genre de calculs
L’outil et son implémentation sont bons, mais j’ai vu beaucoup de gens qui découvraient les statistiques y laisser un doigt
Plus de 90 % des gens n’atteignent même pas un intervalle de confiance de 70 %. On peut le tester soi-même : https://blog.codinghorror.com/how-good-an-estimator-are-you/
Elles ont vraiment apprécié la façon de spécifier les durées de tâche sous la forme t_i ~ PERT(min, mode, max). C’est proche de leur manière de penser, et cela permet aussi de gérer les distributions asymétriques fréquentes dans la réalité
À noter que PERT n’est qu’une distribution bêta reparamétrée de façon conviviale et intuitive : https://rpubs.com/Kraj86186/985700
Le résultat de 50 $ était bien, et si on lui ajoute une plage plus ou moins, on peut globalement sentir qu’on est près du seuil de rentabilité. En revanche, dire « il y a 95 % de chances que le solde réel se situe entre -60 $ et +220 $ » donne l’illusion d’obtenir une information plus précise, alors qu’on n’a fait qu’ajouter à chaque étape une composition de l’incertitude
Si l’on ne sait pas si chaque élément est vraiment à 95 %, ni quels sont les vrais minimums et maximums, on ne fait qu’ajouter davantage de suppositions susceptibles d’être fausses. C’est aussi pour ça que je n’aime pas vraiment l’équation de Drake. Chaque étape est une accumulation d’estimations grossières, et je me demande si cela produit vraiment un nombre utile
Quoi qu’il en soit, dès qu’on a envie de prendre ce genre de choses en compte, il faut faire de vraies statistiques bayésiennes
Je ne vois pas non plus d’où vient l’affirmation selon laquelle « la distribution normale nécessite un facteur de contrainte qui force les valeurs ». Ce qu’il faut, ce sont des erreurs non corrélées, pas une « contrainte » ou une « rétroaction négative »
J’ai déjà créé des outils similaires
fermi pour la ligne de commande : https://git.nunosempere.com/NunoSempere/fermi
calculateur de distributions pour Android : https://f-droid.org/en/packages/com.nunosempere.distribution...
La version plus complexe https://www.squiggle-language.com/ pourrait aussi vous intéresser. Il existe aussi une version C plus rapide, mais bien plus verbeuse : <https://git.nunosempere.com/personal/squiggle.c>
a~b:^)Super. Si l’article vous a plu, l’article « Dissolving the Fermi Paradox » pourrait aussi vous intéresser. Il va plus loin en multipliant réellement des fonctions de densité de probabilité, plutôt que d’utiliser les habituelles estimations ponctuelles
De façon assez surprenante, le résultat suggère que nous pourrions tout simplement être seuls
https://arxiv.org/abs/1806.02404
J’ai créé un outil similaire, mais pour la ligne de commande[1], avec une motivation proche, quoique un peu plus ambitieuse[2]
J’aime vraiment le fait que davantage de gens pensent de cette manière. La capacité à raisonner sur les sources de variation n’est pas quelque chose que tout le monde apprend ou développe, mais elle devient de plus en plus importante[3]
[1]: https://git.sr.ht/~kqr/precel
[2]: https://entropicthoughts.com/precel-like-excel-for-uncertain...
[3]: https://entropicthoughts.com/statistical-literacy
Les histogrammes en ASCII art, ou plus exactement en ANSI art, sont chouettes. C’est un bon hack pour obtenir quelque chose rapidement
À leur place, j’aurais probablement perdu cinq fois plus de temps à essayer plusieurs bibliothèques de graphiques avant d’abandonner
[1] https://github.com/stefanhengl/histogram
https://www.getguesstimate.com/ est une version de cela sous forme de tableur
Existe-t-il un moyen de faire une multiplication qui ne soit pas une multiplication scalaire ? Par exemple, si je veux exprimer « la somme de trois lancers de dé », en laissant de côté le fait que ce n’est pas une distribution normale, je voudrais que
1~6 * 3 = 1~6 + 1~6 + 1~6 = 6~15Mais en réalité,
1~6 * 3 = 3~18. Cela rend vraiment difficile des calculs du type « combien de temps faudra-t-il pour terminer 1000 tâches qui prennent chacune entre 10 et 100 ? »Ce serait bien de pouvoir reconvertir la sortie en intervalle ou en distribution gaussienne
Remarque : si vous vous demandez pourquoi il y a une valeur négative (-5) dans l’histogramme, c’est un inconvénient inévitable dû à la simplicité d’Unsure Calculator. Sans connaissance supplémentaire, le calculateur ne peut pas savoir qu’une valeur négative est impossible
L’équation de Drake, ou les équations qui multiplient des probabilités, peuvent aussi être vues dans l’espace logarithmique. Il y a une incertitude sur l’échelle de chaque probabilité, et la probabilité finale est le produit des exponentielles des log-probabilités. Dans ce cas, ce problème de valeurs négatives ne se pose pas
100 / 4~6donne17~25en sortieAu début, ça ressemble à un jouet, mais ça semble étonnamment utile. Si ça sortait sous forme d’application à utiliser à côté de ma calculatrice habituelle, je l’installerais clairement
Je n’arrive pas à me rappeler exactement quand j’en aurais eu besoin, mais si je l’assignais à un raccourci clavier, il y a de fortes chances que je commence à lui trouver des usages
Comme il y a aussi des fonctions trigonométriques, ça pourrait être pratique pour rétroconcevoir des pièces complexes à partir de mesures simples. Par exemple des volumes de formes, des angles d’arêtes ou des aires de section
La prise en charge des distributions multimodales serait appréciable, mais pas indispensable. Les fonctions trigonométriques inverses seraient aussi intéressantes, mais complexes et non indispensables
En tout cas, cet outil est plus pratique que d’ouvrir Python chaque fois que je veux estimer une fourchette de réponse
Demande de fonctionnalité : ce serait bien de pouvoir spécifier une distribution de probabilité. Par exemple,
~pour une distribution normale,_pour une distribution uniforme, etc.G(50, 1), une distribution exponentielle négative de λ=3 seraitN(3), une distribution uniforme entre 0 et 1 seraitU(0, 1), une distribution uniforme entière de 1 à 6 seraitUI(1, 6), etc.Ce serait beaucoup plus flexible et aussi plus facile à mémoriser