1 puntos por GN⁺ 2025-04-16 | 1 comentarios | Compartir por WhatsApp
  • En cálculos con valores de entrada variables, como cambio de trabajo, viabilidad de un negocio o inversión, para decidir ayuda más el rango de resultados posibles que un solo número
  • Unsure Calculator permite ingresar rangos como 4~6 para calcular con valores inciertos, y 10~15 significa que se tiene 95% de confianza en que el valor real estará dentro de ese intervalo
  • El resultado no es un solo número, sino un rango, una distribución de probabilidad y percentiles; en el ejemplo de mudarse al extranjero por trabajo, muestra que el saldo mensual podría quedar entre -$60~+$220
  • Para mantener simples las entradas, se omitieron notaciones como tipos de distribución, niveles de confianza y covarianza, y los cálculos internos usan Monte Carlo, por lo que es lento y los mensajes de error no son amigables
  • No es una herramienta para expertos en estadística, sino para cálculos rápidos al reverso de una servilleta sobre ideas de negocio, ahorro de tiempo, riesgo de pandemia o ROI de marketing; para análisis complejos se necesitan herramientas especializadas

Poner números inciertos en los cálculos

  • Unsure Calculator es una versión inicial de una calculadora de incertidumbre para manejar números que no son seguros
  • Simplifica la estadística al problema de “quiero inferir cosas con números aunque esos números no sean seguros”
  • Incluso en cálculos cotidianos hay muchos valores de entrada inciertos, así que a veces se necesita calcular con incertidumbre sin ser experto en estadística

Cómo funciona la notación de rangos

  • Soporta no solo números normales como 4, 3.14, 43942, sino también entradas por rango como 4~6, 3.1~3.2, 40000~45000
  • ~ es la tilde entre dos valores extremos, y también está incluida en el teclado de la calculadora
  • La notación por rango significa “no sé el valor exacto, pero tengo 95% de confianza en que el valor real estará dentro de este rango”
  • 10~15 se puede leer como “de 10 a 15”
  • Sería posible añadir notaciones para otras distribuciones de probabilidad, otros niveles de confianza, truncamiento o covarianza, pero se excluyeron porque harían más difícil entenderla
    • La idea es que quien ya esté familiarizado con esos conceptos probablemente debería usar una herramienta más sofisticada
    • El objetivo es que una base amplia de usuarios pueda aprovechar fácilmente el poder de los cálculos estadísticos

La trampa de calcular con un solo número

  • Cuando uno se topa con valores inciertos, es fácil descartarlos pensando “como ninguno es seguro, no importa mucho”
  • Si eliges un número plausible y calculas con él, resulta tentadora la simplicidad de una sola respuesta, pero en realidad puede haber varios resultados posibles
  • Unsure Calculator incorpora múltiples resultados posibles en el cálculo para mostrar al mismo tiempo el riesgo y el margen de oportunidad

Ejemplo de cálculo financiero al mudarse al extranjero por trabajo

  • El punto de partida fue una situación en 2015: calcular el impacto financiero familiar de una oportunidad laboral en otro país
    • El salario solo se conoce después de pasar por casi todo el proceso de contratación
    • El costo de vida local variaba mucho entre lo que decían amistades y lo que se encontraba en internet
    • Tampoco era fácil fijar la tasa de impuestos con un solo porcentaje simple
  • Al principio se calculó con valores únicos que parecían conservadores
1500 * 0.6 - 650 - 150 - 30 - 20 = 50
  • Ese cálculo solo muestra un resultado: que sobran +$50 al mes
  • Si se vuelven a hacer las cuentas usando rangos, el resultado cambia
1400~1700 * 0.55~0.65 - 600~700 - 100~200 - 30 - 20 = -60~220
  • Si se tiene 95% de confianza en que el valor real de cada partida cae dentro de su rango, entonces también puede considerarse que el saldo mensual real estará entre -$60 y +$220
  • Esto es más útil que el valor único +$50 porque también deja ver la posibilidad de perder dinero
  • Los percentiles dan información más concreta para tomar decisiones
    • Si el percentil 10 es -$8, hay un 10% de probabilidad de que el saldo mensual sea -$8 o menos
    • A la inversa, el 90% de los resultados está por encima de -$8
    • También se puede considerar el 5% de riesgo de perder -$33 o más al mes
  • La decisión de aceptar ese riesgo depende de la familia y de la situación
    • La tolerancia al riesgo puede ser distinta si no se tienen hijos ni hipoteca, frente a si sí se tienen
    • Si no existe un plan de respaldo, una probabilidad de pérdida del 10% puede verse con más cautela

Ejemplo con la ecuación de Drake

  • Aunque apunta a cálculos prácticos, también usa como ejemplo la ecuación de Drake (Drake equation) para estimar la cantidad de civilizaciones extraterrestres
  • Esta ecuación es una fórmula astrofísica para estimar cuántas civilizaciones capaces de comunicarse podría haber en la galaxia
  • Los valores originales de Frank Drake en 1961 multiplicaban los siguientes factores
    • Cada año se forma 1 estrella en la galaxia
    • De ellas, 1/5 tiene alrededor de 3 planetas
    • El 100% de esos planetas desarrolla vida
    • El 100% de esa vida llega a ser inteligente
    • El 10% de ellas puede comunicarse
    • El estado de comunicación dura 1 millón de años
  • Al multiplicar esos valores, el resultado es 60,000, lo que implica que en cualquier momento debería haber 60 mil civilizaciones intentando comunicarse en la galaxia
  • Desde 1961, las estimaciones de cada parámetro han variado enormemente entre astrofísicos
  • Un ejemplo con estimaciones más recientes ingresadas como rangos es el siguiente
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
  • El resultado de Unsure Calculator muestra que la cantidad esperable de civilizaciones podría estar entre 0 y 450
  • La probabilidad está sesgada hacia el lado bajo, y el histograma también aparece más extendido hacia abajo
  • En el histograma pueden aparecer negativos como -5
    • Esa es una limitación de una herramienta que prioriza la simplicidad
    • Sin conocimiento adicional, la calculadora no puede saber que la cantidad de civilizaciones no puede ser negativa

Posibles casos de uso

  • Se puede calcular la viabilidad de una idea de negocio
    • Cuando el tamaño del mercado, la cuota de mercado, el ingreso mensual por persona y los costos operativos son inciertos
50000~80000 x 0.10~0.20 x 5~10 - 20000~50000
  • Se pueden estimar ingresos futuros
    • Cuando el ingreso mensual, la duración del contrato y la tasa impositiva son inciertos
1000~1500 x 10~12 x (30~50 / 100)
  • Se puede calcular el tiempo que ahorra una tecnología como el lavavajillas
    • Cuando son inciertos los usos por semana, el tiempo ahorrado por uso, la vida útil y el costo de instalación
(3~5 * 5~10 * 51 * 7~15) / 60 - 10~15
  • Se puede estimar el rendimiento total de una cuenta de inversión
    • Cuando son inciertos la tasa de interés y el plazo de inversión
5000 x (-2~5 / 100) x 5~10
  • Se puede calcular de forma aproximada la probabilidad de morir en una pandemia
    • Cuando son inciertos el porcentaje de infección y la tasa de letalidad
(10~30 / 100) * (0.1~1.0 / 100) * 100
  • Se puede estimar la altura de un edificio alto
    • Cuando son inciertos la distancia a la base del edificio y el ángulo al mirar la cima
100 x tan(70 ~ 80)
  • Se puede estimar el ROI de una campaña de marketing
    • Cuando son inciertos las visualizaciones, la tasa de clics, la tasa de conversión y el gasto
1000000 x (2~3 / 100) x (3~5 / 100) x (10~15)

Funciones compatibles

  • Aunque el teclado solo tiene +, -, x y /, incluso en esta etapa inicial soporta más cálculos
  • Algunos ejemplos de funciones y operaciones son los siguientes
    • 2~3 ^ 4: elevar a la cuarta potencia un valor entre 2 y 3
    • sqrt(10~12): raíz cuadrada de un valor entre 10 y 12
    • sin(90~95): seno de un valor entre 90 y 95 grados

Limitaciones y forma de compartir

  • Al ser un proyecto de una sola persona, hay que esperar que se rompa
  • El parser de fórmulas es frágil y los mensajes de error no ayudan mucho
  • Los cálculos son bastante lentos
    • Para mantener la flexibilidad, usa el método de Monte Carlo
    • Para cada cálculo ingresado ejecuta alrededor de 250 mil evaluaciones basadas en AST
  • La UI es muy simple y no se ve bien
  • La única forma de compartir una fórmula es construir la URL directamente
  • range siempre sigue una distribución normal
    • El número bajo está 2 desviaciones estándar por debajo de la media
    • El número alto está 2 desviaciones estándar por encima de la media
    • No soporta métodos más complejos desde la perspectiva de la distribución de probabilidad de entrada
  • No es una herramienta para expertos en estadística
    • Para cálculos rápidos al reverso de una servilleta, se puede usar Unsure Calculator
    • Para trabajos más complejos se necesitan herramientas estadísticas gratuitas o de pago, un entorno completo de programación o especialistas en estadística

Proyecto y actualizaciones

  • Si quieres ayudar a mejorar la herramienta o conseguir una versión de línea de comandos, puedes usar github.com/filiph/unsure
  • Según la actualización de 2025, esta notación y herramienta se han usado durante 5 años y se convirtieron en una parte esencial del flujo de trabajo al iniciar proyectos nuevos
  • Una versión más reciente de la app, en formato de notebook, puede verse aquí
    • Es menos amigable para principiantes, pero más útil para usuarios avanzados
  • Si te interesa el proyecto, puedes seguir a Filip Hracek o suscribirte a la lista de correo

1 comentarios

 
GN⁺ 2025-04-16
Opiniones de Hacker News
  • Me gusta esta herramienta. Pero, siguiendo la tradición de HN de obsesionarse con una palabra del texto y hablar de algo casi —pero en la práctica totalmente— tangencial, en este tipo de cálculos hay al menos tres puntos donde te puedes pegar un tiro en el pie

    1. 95% es mucho más amplio de lo que suele pensar la gente. Las personas interpretan 95% como “más o menos esto debe estar bien”, pero en realidad se parece más a “me sorprendería bastante si no fuera esto”. En general, uno tiende a poner barras de error mentales demasiado estrechas
    2. Las probabilidades rara vez son verdaderamente independientes. Podríamos llamar a esto el proverbio de los “Mortgage Derivatives”. En el ejemplo de una familia, es muy probable que la renta esté correlacionada con el gasto en comida, y que si la renta es alta, el gasto en comida también sea alto. Eso deforma la distribución, y si lo modelas con una distribución uniforme sin ponderación, te sorprenderá lo “improbable” que parece el resultado real
    3. En general, la distribución normal es menos común de lo que la gente cree. Tiende a necesitar algún factor de restricción que obligue los valores. En la naturaleza aparece con frecuencia porque hay bucles de retroalimentación negativa por todos lados, pero cuando salimos del jardín relativamente ordenado de la Madre Naturaleza y entramos en el caos de los asuntos humanos, la distribución normal se vuelve bastante anormal
      La herramienta y la implementación están buenas, pero he visto a mucha gente perder un dedo cuando agarra estadísticas por primera vez
    • Estoy muy de acuerdo con esto, especialmente con el punto 1. Si le pides a la gente que estime un rango para una respuesta de la que está 90% segura, en promedio dan un rango que corresponde más o menos a un intervalo de confianza del 30%
      Más del 90% de las personas ni siquiera llegan a un intervalo de confianza del 70%. Puedes probarlo tú mismo: https://blog.codinghorror.com/how-good-an-estimator-are-you/
    • Una vez trabajé en un proyecto para modelar fechas estimadas de finalización de un gran diagrama de Gantt con stakeholders no técnicos. Algunas tareas eran nuevas y poco realistas de cuantificar con tiempos fijos, así que los stakeholders de negocio querían tiempos probabilísticos de finalización de tareas
      A los stakeholders les gustó mucho especificar las duraciones de las tareas como t_i ~ PERT(min, mode, max). Se parece a cómo piensan y además puede manejar distribuciones asimétricas comunes en la realidad
      Como referencia, PERT no es más que una distribución beta reparametrizada de forma amigable e intuitiva para el usuario: https://rpubs.com/Kraj86186/985700
    • Esto coincide con la impresión general que me dejó el artículo. A medida que aumentaban la complejidad y la dificultad de razonar sobre rangos, mi confianza en el resultado del cálculo de ejemplo más bien disminuía
      El resultado de $50 estaba bien, y si le agregas un rango de más/menos, en general puedes sentir que estás cerca del punto de equilibrio. En cambio, decir “hay un 95% de probabilidad de que el saldo real esté entre -$60 y +$220” crea la ilusión de haber obtenido información más concreta, cuando en cada paso solo se añadió más composición de incertidumbre
      Si no sabes si cada elemento realmente es 95%, ni cuáles son los mínimos y máximos reales, entonces solo estás agregando más suposiciones que podrían estar equivocadas. Por eso tampoco me gusta mucho la ecuación de Drake. Cada paso acumula estimaciones muy burdas, y me pregunto si de verdad produce un número útil
    • No estoy muy de acuerdo con que “es muy probable que la renta esté correlacionada con la comida, y que si la renta es alta, la comida también sea alta”. Un modelo donde la renta promedio se correlaciona con el gasto promedio en comida es razonable, pero una vez dados esos dos parámetros, las variaciones alrededor del promedio pueden modelarse como no correlacionadas
      En cualquier caso, si llegas al punto de querer considerar este tipo de cosas, deberías hacer estadística bayesiana de verdad
      Tampoco sé de dónde sale eso de que “la distribución normal necesita algún factor de restricción que fuerce los valores”. Lo que se necesita son errores no correlacionados; eso no es una “restricción” ni “retroalimentación negativa”
    • Nunca había pensado en la estadística como una herramienta eléctrica o un arma de fuego, pero la analogía de que “la gente pierde un dedo cuando agarra estadísticas por primera vez” encaja perfectamente
  • He creado herramientas parecidas
    fermi para línea de comandos: https://git.nunosempere.com/NunoSempere/fermi
    Calculadora de distribuciones para Android: https://f-droid.org/en/packages/com.nunosempere.distribution...
    También podría interesarte https://www.squiggle-language.com/, una versión más compleja. O también <https://git.nunosempere.com/personal/squiggle.c>, una versión en C más rápida pero mucho más verbosa

    • En particular, Fermi tiene la siguiente sintaxis
      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  
      
      La multiplicación se implica como operación predeterminada, y la distribución personalizada es log-normal
    • Otra herramienta de la misma familia es <https://carlo.app/>. Permite hacer este tipo de cálculos en Google Sheets
    • Sería un detalle genial si Squiggle soportara la sintaxis a~b :^)
    • Probé unsure calc y la app de Android, y parece que dan resultados distintos
  • Genial. Si te gustó el texto, el paper “Dissolving the Fermi Paradox” también podría resultarte interesante. Profundiza más en multiplicar funciones de densidad de probabilidad reales, en lugar de las estimaciones puntuales habituales.
    Un resultado un tanto sorprendente es que quizá simplemente estemos solos.
    https://arxiv.org/abs/1806.02404

    • Sinceramente, es un poco deprimente, pero casi todos los que están en este sitio deberían leerlo aunque sea por la metodología.
  • Creé una herramienta parecida; es para la línea de comandos[1] y la motivación es similar, aunque es un poco más ambiciosa[2].
    Me encanta que más gente piense de esta forma. La capacidad de razonar sobre las fuentes de variación no es algo en lo que todos reciban entrenamiento o que todos desarrollen, pero se está volviendo cada vez más importante[3].
    [1]: https://git.sr.ht/~kqr/precel
    [2]: https://entropicthoughts.com/precel-like-excel-for-uncertain...
    [3]: https://entropicthoughts.com/statistical-literacy

  • El histograma en arte ASCII, o más exactamente en arte ANSI, está muy bueno. Es un buen hack para resolver algo rápido.
    Yo probablemente habría perdido 5 veces más tiempo probando varias bibliotecas de gráficos y luego me habría rendido.

    • En una línea parecida, las ilustraciones toscas hechas a mano están bastante bien. Encajan con el tema de la “servilleta”.
    • Aquí [1] hay una implementación decente escrita en Awk. Es algo rústica, pero parece fácil de ampliar.
      [1] https://github.com/stefanhengl/histogram
  • https://www.getguesstimate.com/ es una versión de esto hecha como hoja de cálculo.

  • ¿Hay alguna forma de multiplicar que no sea multiplicación escalar? Por ejemplo, si quiero decir “la suma de tirar un dado tres veces”, dejando de lado que no es una distribución normal, quisiera que 1~6 * 3 = 1~6 + 1~6 + 1~6 = 6~15.
    Pero en realidad 1~6 * 3 = 3~18. Eso hace que cálculos como “¿cuánto tardaré en completar 1000 tareas que toman entre 10 y 100 cada una?” sean realmente difíciles.

  • Sería bueno poder convertir la salida nuevamente en un intervalo o en una distribución gaussiana.
    Nota: si te preguntas por qué hay un número negativo (-5) en el histograma, es una desventaja inevitable de la simplicidad de Unsure Calculator. Sin conocimiento adicional, la calculadora no puede saber que los valores negativos son imposibles.
    La ecuación de Drake, o las ecuaciones que multiplican probabilidades, también pueden verse en el espacio logarítmico. Hay incertidumbre en la escala de cada probabilidad, y la probabilidad final es el resultado de multiplicar los exponenciales de las log-probabilidades. Así no aparece este problema de números negativos.

    • El ejemplo básico 100 / 4~6 da 17~25 como salida.
  • Al principio suena como un juguete, pero sorprendentemente parece útil. Si saliera como una app para usar junto a la calculadora habitual, sin duda la instalaría.
    No se me ocurre exactamente cuándo la habría necesitado, pero si la asignara a un atajo del teclado, parece bastante probable que empezara a encontrar ocasiones para usarla.

    • Puse aquí los números —población × tasa de posesión × frecuencia de reemplazo × precio unitario— para estimar los ingresos anuales del mercado de smartphones, y quedó a solo unos pocos puntos porcentuales del valor real que aparece en internet.
      Como también tiene funciones trigonométricas, parece buena para hacer ingeniería inversa de piezas complejas a partir de mediciones simples. Por ejemplo, volumen de formas, ángulos de bordes o áreas de sección transversal.
      Sería bueno que soportara distribuciones multimodales, pero no es imprescindible. Las funciones trigonométricas inversas también serían interesantes, aunque complejas y no imprescindibles.
      En cualquier caso, esta herramienta es más cómoda que abrir Python cada vez que quiero estimar un rango de respuestas.
    • Si necesitas una app, vale la pena considerar https://f-droid.org/en/packages/com.nunosempere.distribution....
    • Como usa Dart como lenguaje principal, parece que crear una app en Flutter a partir de esto sería fácil.
  • Solicitud de función: sería bueno que permitiera especificar la distribución de probabilidad. Por ejemplo, que ~ sea una distribución normal y _ una distribución uniforme.

    • Creo que esto debería ser una función. Por ejemplo, una distribución gaussiana con µ=50 y σ=1 sería G(50, 1), una distribución exponencial negativa con λ=3 sería N(3), una distribución uniforme entre 0 y 1 sería U(0, 1), y una distribución entera uniforme de 1 a 6 sería UI(1, 6).
      Parece mucho más flexible y también más fácil de recordar.
    • Que esta función no exista es en sí una función. El artículo también lo dice así.