- Em cálculos com entradas incertas, como mudança de emprego, viabilidade de negócio ou investimento, a faixa de resultados possíveis ajuda mais na decisão do que um único número
- O Unsure Calculator permite inserir intervalos como
4~6 para calcular com valores incertos, e 10~15 significa que há 95% de confiança de que o valor real esteja dentro desse intervalo
- O resultado não sai como um número único, mas como faixa, distribuição de probabilidade e percentis; no exemplo de mudança para o exterior, mostra que o saldo mensal pode ficar entre
-$60~+$220
- Para manter a entrada simples, a ferramenta não mostra tipos de distribuição, nível de confiança ou covariância, e os cálculos internos usam o método de Monte Carlo, por isso são lentos e as mensagens de erro não são muito amigáveis
- Não é uma ferramenta para especialistas em estatística, e sim para contas de guardanapo sobre ideias de negócio, economia de tempo, risco de pandemia ou ROI de marketing; para análises complexas, são necessárias ferramentas profissionais
Colocando números incertos nos cálculos
- O Unsure Calculator é uma versão inicial de uma calculadora de incerteza para lidar com números que não são totalmente certos
- Ele simplifica a estatística para o problema de “quero tirar inferências com esses números mesmo que eles não sejam exatos”
- Mesmo cálculos do dia a dia têm muitos valores de entrada incertos, então às vezes é útil incluir incerteza nos cálculos mesmo sem ser especialista em estatística
Como funciona a notação por intervalo
- Além de números comuns como
4, 3.14, 43942, ele aceita entradas em intervalo como 4~6, 3.1~3.2 e 40000~45000
- O
~ é o til entre os dois extremos e também está incluído no teclado da calculadora
- A notação por intervalo significa “não sei o valor exato, mas tenho 95% de confiança de que o valor real esteja dentro desse intervalo”
10~15 pode ser lido como “de 10 a 15”
- Seria possível oferecer outras distribuições de probabilidade, outros níveis de confiança, truncamento ou covariância, mas isso foi deixado de fora para não dificultar o entendimento
- A premissa é que quem já está familiarizado com esses conceitos provavelmente preferirá usar uma ferramenta mais sofisticada
- O objetivo é permitir que um público mais amplo use o poder dos cálculos estatísticos com facilidade
A armadilha de calcular com um único número
- Ao encontrar valores incertos, é fácil pensar “os dois são incertos, então isso não importa tanto” e seguir em frente
- Se você escolhe um único número plausível para fazer a conta, é atraente pela simplicidade de uma resposta única, mas os resultados possíveis de verdade podem não ser apenas um
- O Unsure Calculator incorpora vários resultados possíveis ao cálculo para mostrar ao mesmo tempo risco e margem de ganho
Exemplo financeiro de mudança para o exterior
- O ponto de partida foi uma situação de 2015, calculando o impacto financeiro para a família diante de uma oportunidade de trabalho no exterior
- O salário só seria conhecido depois de avançar bastante no processo seletivo
- O custo de vida local variava muito entre o que amigos diziam e o que se encontrava na internet
- A alíquota de imposto também não era algo que desse para resumir em uma única porcentagem simples
- No começo, o cálculo foi feito com valores únicos que pareciam conservadores
1500 * 0.6 - 650 - 150 - 30 - 20 = 50
- Esse cálculo mostra apenas um resultado: sobrariam
+$50 por mês
- Ao colocar intervalos e recalcular, o resultado muda
1400~1700 * 0.55~0.65 - 600~700 - 100~200 - 30 - 20 = -60~220
- Se houver 95% de confiança de que o valor real de cada item esteja dentro do respectivo intervalo, então o saldo mensal real também pode ser visto como estando na faixa de
-$60 a +$220
- Isso é mais útil do que o valor único
+$50 porque revela até a possibilidade de perder dinheiro
- Os percentis dão informações mais concretas para a tomada de decisão
- Se o 10º percentil for
-$8, então há 10% de chance de o saldo mensal ser -$8 ou menor
- Em outras palavras, 90% dos resultados ficam acima de
-$8
- Também dá para considerar um risco de 5% de perder pelo menos
-$33 por mês
- A disposição para aceitar esse risco depende da família e da situação
- A tolerância ao risco pode ser diferente sem filhos e sem financiamento imobiliário, ou com ambos
- Se não houver plano de contingência, uma chance de 10% de prejuízo pode exigir mais cautela
Exemplo da equação de Drake
- Embora o foco seja cálculo prático, a equação de Drake (Drake equation), usada para estimar o número de civilizações extraterrestres, também aparece como exemplo
- Essa equação é uma fórmula de astrofísica para estimar quantas civilizações na galáxia poderiam ser capazes de se comunicar
- Os valores originais de Frank Drake, em 1961, consistiam em multiplicar os seguintes fatores
- Forma-se 1 estrela por ano na galáxia
- Dessas, 1/5 têm cerca de 3 planetas
- 100% desses planetas desenvolvem vida
- 100% dessa vida se torna inteligente
- 10% dela se torna capaz de se comunicar
- O estado comunicativo dura 1 milhão de anos
- Multiplicando esses valores, chega-se a
60,000, sugerindo que deveria haver 60 mil civilizações tentando se comunicar na galáxia em qualquer momento
- Desde 1961, as estimativas de cada parâmetro variaram muito entre os astrofísicos
- Um exemplo com estimativas mais recentes em forma de intervalo é o seguinte
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
- O resultado no Unsure Calculator mostra que o número esperado de civilizações pode ficar entre
0 e 450
- A probabilidade é inclinada para os valores mais baixos, e o histograma também aparece mais espalhado nessa parte inferior
- O histograma pode até mostrar valores negativos como
-5
- Isso é uma limitação da ferramenta por optar pela simplicidade
- Sem conhecimento adicional, a calculadora não consegue impor a restrição de que o número de civilizações não pode ser negativo
Casos de uso possíveis
- Dá para calcular a viabilidade de uma ideia de negócio
- Quando tamanho de mercado, participação de mercado, receita mensal por usuário e custo operacional são todos incertos
50000~80000 x 0.10~0.20 x 5~10 - 20000~50000
- Dá para estimar receita futura
- Quando renda mensal, duração do contrato e alíquota de imposto são incertas
1000~1500 x 10~12 x (30~50 / 100)
- Dá para calcular o tempo economizado por uma tecnologia como uma lava-louças
- Quando número de usos por semana, tempo economizado por uso, vida útil e custo de instalação são incertos
(3~5 * 5~10 * 51 * 7~15) / 60 - 10~15
- Dá para estimar o retorno total de uma conta de investimento
- Quando taxa de juros e prazo do investimento são incertos
5000 x (-2~5 / 100) x 5~10
- Dá para calcular por alto a probabilidade de morte em uma pandemia
- Quando taxa de infecção e taxa de letalidade são incertas
(10~30 / 100) * (0.1~1.0 / 100) * 100
- Dá para estimar a altura de um prédio alto
- Quando a distância até a base do prédio e o ângulo de visão até o topo são incertos
100 x tan(70 ~ 80)
- Dá para estimar o ROI de uma campanha de marketing
- Quando visualizações, taxa de cliques, taxa de conversão e gasto são incertos
1000000 x (2~3 / 100) x (3~5 / 100) x (10~15)
Funções suportadas
- O teclado mostra apenas
+, -, x e /, mas mesmo nesta fase inicial a ferramenta suporta mais tipos de cálculo
- Alguns exemplos de funções e operações são
2~3 ^ 4: elevar um valor entre 2 e 3 à quarta potência
sqrt(10~12): raiz quadrada de um valor entre 10 e 12
sin(90~95): seno de um valor entre 90 e 95 graus
Limitações e forma de compartilhamento
- Por ser um projeto de uma pessoa só, é preciso esperar que quebre às vezes
- O parser de fórmulas é frágil e as mensagens de erro não ajudam muito
- Os cálculos são bem lentos
- Para manter a flexibilidade, usa o método de Monte Carlo
- Para cada cálculo inserido, executa cerca de 250 mil avaliações baseadas em AST
- A interface é extremamente simples e não é bonita
- A única forma de compartilhar uma fórmula é montar a URL manualmente
range sempre usa distribuição normal
- O número menor fica 2 desvios-padrão abaixo da média
- O número maior fica 2 desvios-padrão acima da média
- Não há suporte a formas mais complexas de distribuição de probabilidade na entrada
- Não é uma ferramenta para especialistas em estatística
- O Unsure Calculator serve para contas de guardanapo
- Para trabalhos mais complexos, são necessárias ferramentas estatísticas gratuitas ou pagas, um ambiente completo de programação ou um especialista em estatística
Projeto e atualizações
- Quem quiser ajudar a melhorar a ferramenta ou obter uma versão de linha de comando pode usar github.com/filiph/unsure
- Segundo a atualização de 2025, essa notação e a ferramenta foram usadas por 5 anos e se tornaram parte essencial do fluxo de trabalho ao iniciar novos projetos
- Uma versão mais recente em formato de notebook pode ser vista aqui
- Ela é menos amigável para iniciantes, mas mais útil para usuários avançados
- Se houver interesse no projeto, é possível seguir Filip Hracek ou assinar a lista de e-mails
1 comentários
Opiniões do Hacker News
Gostei desta ferramenta. Mas, seguindo a tradição do HN, pegando uma única palavra do texto para falar de algo quase — mas na prática totalmente — tangencial, há pelo menos três pontos em que dá para se dar um tiro no pé nesse tipo de cálculo
A ferramenta e a implementação são boas, mas já vi muita gente que pegou estatística pela primeira vez perder um dedo
Mais de 90% das pessoas nem chegam a um intervalo de confiança de 70%. Dá para testar você mesmo: https://blog.codinghorror.com/how-good-an-estimator-are-you/
Eles gostaram muito da abordagem de especificar os tempos das tarefas como t_i ~ PERT(min, moda, max). É parecida com a forma como pensam e também lida com distribuições assimétricas comuns no mundo real
Para referência, PERT é apenas uma distribuição beta reparametrizada de forma amigável e intuitiva para o usuário: https://rpubs.com/Kraj86186/985700
O resultado de US$ 50 era bom, e, ao colocar uma faixa de mais/menos em cima disso, dá para sentir que está basicamente perto do ponto de equilíbrio. Por outro lado, dizer que “há 95% de chance de o saldo real ficar entre -US$ 60 e +US$ 220” cria a ilusão de que você obteve uma informação mais específica, quando em cada etapa apenas adicionou mais composição de incertezas
Se você não sabe se cada item é realmente 95%, nem quais são os verdadeiros valores mínimo/máximo, está apenas acrescentando mais palpites que podem estar errados. É por isso que também não gosto muito da equação de Drake. Cada etapa é uma acumulação de chutes grosseiros, e fico em dúvida se isso de fato produz um número útil
De qualquer forma, se você chegou ao ponto de querer levar esse tipo de coisa em conta, deveria estar fazendo estatística bayesiana de verdade
Também não sei de onde vem a afirmação de que “a distribuição normal precisa de algum fator restritivo que force os valores”. O que é necessário são erros não correlacionados, não “restrições” nem “feedback negativo”
Já criei uma ferramenta parecida
fermi para linha de comando: https://git.nunosempere.com/NunoSempere/fermi
Calculadora de distribuições para Android: https://f-droid.org/en/packages/com.nunosempere.distribution...
Talvez você também se interesse pela versão mais complexa, https://www.squiggle-language.com/. Ou pela versão em C, mais rápida, mas muito mais verbosa: <https://git.nunosempere.com/personal/squiggle.c>
a~b:^)Legal. Se você gostou do texto, o artigo “Dissolving the Fermi Paradox” também pode ser interessante. Ele se aprofunda mais em realmente multiplicar funções de densidade de probabilidade, em vez das estimativas pontuais comuns
De forma um tanto surpreendente, o resultado é que talvez estejamos simplesmente sozinhos
https://arxiv.org/abs/1806.02404
Eu criei uma ferramenta parecida, mas para linha de comando[1], com uma motivação semelhante, só que um pouco mais ambiciosa[2]
Gosto muito do fato de mais pessoas estarem pensando dessa forma. A capacidade de raciocinar sobre fontes de variação não é algo que todo mundo recebe treinamento para fazer ou desenvolve, mas está se tornando cada vez mais importante[3]
[1]: https://git.sr.ht/~kqr/precel
[2]: https://entropicthoughts.com/precel-like-excel-for-uncertain...
[3]: https://entropicthoughts.com/statistical-literacy
Os histogramas em ASCII art, ou mais precisamente em ANSI art, são legais. É um bom hack para fazer algo rapidamente
Se fosse eu, provavelmente teria perdido 5 vezes mais tempo tentando várias bibliotecas de gráficos e depois desistido
[1] https://github.com/stefanhengl/histogram
https://www.getguesstimate.com/ é a versão disso feita como uma planilha
Existe alguma forma de fazer multiplicação que não seja multiplicação escalar? Por exemplo, se eu quiser dizer “a soma de três rolagens de dado”, deixando de lado o fato de que não é uma distribuição normal, eu gostaria que
1~6 * 3 = 1~6 + 1~6 + 1~6 = 6~15Mas, na prática,
1~6 * 3 = 3~18. Isso torna muito difícil fazer cálculos como “quanto tempo levará para concluir 1000 tarefas, cada uma levando de 10~100?”Seria bom poder converter a saída de volta para um intervalo ou uma distribuição gaussiana
Observação: se você está se perguntando por que há um número negativo (-5) no histograma, isso é uma desvantagem inevitável da simplicidade do Unsure Calculator. Sem conhecimento adicional, a calculadora não tem como saber que valores negativos são impossíveis
A equação de Drake, ou equações que multiplicam probabilidades, também podem ser vistas no espaço logarítmico. Há incerteza na escala de cada probabilidade, e a probabilidade final passa a ser o resultado da multiplicação dos exponenciais das log-probabilidades. Assim, esse problema de números negativos não ocorre
100 / 4~6dá17~25como saídaNo começo parece um brinquedo, mas parece surpreendentemente útil. Se saísse como um app para usar ao lado da calculadora do dia a dia, eu certamente instalaria
Não consigo lembrar exatamente quando precisei disso, mas parece bem provável que, se eu o vinculasse a um atalho do teclado, começaria a encontrar usos para ele
Como também há funções trigonométricas, parece bom para fazer engenharia reversa de peças complexas a partir de medições simples. Por exemplo, volume de formas, ângulos de arestas, áreas de seção transversal e coisas assim
Seria bom ter suporte a distribuições multimodais, mas não é essencial. Funções trigonométricas inversas também seriam interessantes, mas são complicadas e não essenciais
De todo modo, esta ferramenta é mais conveniente do que abrir o Python toda vez que quero estimar um intervalo de resposta
Pedido de recurso: seria bom permitir especificar a distribuição de probabilidade. Por exemplo,
~para distribuição normal,_para distribuição uniforme, algo assimG(50, 1), uma distribuição exponencial negativa com λ=3 seriaN(3), uma distribuição uniforme entre 0 e 1 seriaU(0, 1), uma distribuição uniforme inteira de 1 a 6 seriaUI(1, 6), e assim por dianteParece muito mais flexível e também mais fácil de lembrar