Como erros são propagados?
Warning
A leitura desta parte da documentação não é obrigatória para o uso da biblioteca. Caso sinta que a matemática/estatística é muito complexa, sinta-se livre para pular. Mas, se quiser realmente entender como as coisas funcionam por baixo dos panos, esta seção é para você.
Nesta seção, explicarei em mais detalhes como a biblioteca propaga incertezas. O método usado é mais geral, mas ainda assim compatível na maioria dos casos com o da apostila (ler seção do sobre ). Nos testes unitários da biblioteca, comparamos os erros calculados pelo LabIFSC2 com as bibliotecas uncertainties e LabIFSC, chegando a um acordo geralmente de para erros pequenos em uma variável, onde os métodos devem ser equivalentes.
Apostila
A apostila se baseia principalmente no GUM (Guide to the Expression of Uncertainty in Measurement)1. O método é uma propagação linear baseada em uma série de Taylor.
Começamos com uma série de Taylor de uma função de variáveis, ou seja, uma boa aproximação para pequenas variações da função:
Note que o lado esquerdo nada mais é que o quadrado da variação da função . Se pegarmos o valor esperado, teremos a variância de ():
Supondo que tenha uma distribuição simétrica , os termos cruzados desaparecem (se supormos que são totalmente independentes).
Logo:
Se quisermos em termos do desvio padrão e não da variância, temos:
Essa é essencialmente a fórmula usada na apostila. Para o caso de uma variável, se reduz a . A diferença é que a apostila ignora a raiz quadrada na expressão de incertezas com mais de uma variável, superestimando assim o erro.
Pensando intuitivamente, erros não podem simplesmente se somar, visto que, pela sua natureza aleatória, é esperado que existam erros que acabem "compensando" outros.
Monte Carlo
Imagine que temos uma medida indireta que depende de um conjunto de medidas:
Cada variável tem sua PDF (probability density function), que é uma forma matemática de dizer que não temos certeza sobre seus valores. Por simplicidade, assumimos que medidas diretas têm distribuições gaussianas (centradas em uma média e uma variância ).
O Método Monte Carlo consiste em simular diversas medidas experimentais no computador (usando um gerador de números aleatórios com as respectivas PDFs). Dessa forma, geramos um histograma de possíveis valores de ; esse histograma é a PDF de .
O interessante desse método é que o histograma de não necessariamente é analítico (geralmente com formatos bem estranhos para incertezas grandes). Esse histograma é utilizado para diversas coisas na biblioteca:
- Ser usado como PDF para outra propagação de incerteza
- Cálculo do intervalo de confiança
- A média e o desvio padrão da PDF são respectivamente o valor nominal e a incerteza.
Exemplo com a gravidade
Retornando ao exemplo da estimativa da gravidade usando um pêndulo, mas agora com incertezas maiores em e (para que os efeitos fiquem mais visíveis).
A classe Medida possui um atributo chamado histograma, onde estão guardados os histogramas. No dia a dia, esse atributo deve ser raramente acessado, mas para fins didáticos ele é interessante.
pi = constantes.pi
L = Medida(15, 'cm',1)
T = Medida(780, 'ms',80)
gravidade = (4 * pi**2) * L / T**2
histograma_g = gravidade.histograma
histograma_L = L.histograma
histograma_T = T.histograma
Repare como e são gaussianas (, ) e (, ).

Já o histograma de é centralizado em , mas observe que ele possui uma cauda para a direita. A distribuição não é simétrica, logo, não é gaussiana. Se usássemos para outros cálculos, esse desvio de uma gaussiana provavelmente iria se amplificando. Esse fato não é observado no método GUM, que assume linearidade e basicamente tudo é uma gaussiana.
Tip
Por padrão, a biblioteca utiliza amostras. Acredito que esse seja um número que vá satisfazer a maioria das aplicações e não trazer problemas de performance para a biblioteca. Mas, caso queira alterar esse número, é só usar alterar_monte_carlo_sample. Por enquanto, Medidas com N diferentes não interagem corretamente (pense o que isso significa), então se quiser mudar esse número é recomendado alterar no começo do código ou as variáveis usadas só terem escopo dentro dessa alteração do N.
-
O método GUM é amplamente utilizado em metrologia e calibragem de equipamentos. Existem diversas referências para quem quiser aprender mais. Eu, pessoalmente, achei um material introdutório e interessante em:
Kirkup, L., Frenkel, R. B. (2006). An Introduction to Uncertainty in Measurement: Using the GUM (Guide to the Expression of Uncertainty in Measurement). Reino Unido: Cambridge University Press. ↩
-
O principal material usado na implementação do Monte Carlo foi o próprio material suplementar do GUM sobre Monte Carlo. É interessante notar que esse material explicitamente considera o método Monte Carlo como uma forma mais precisa de calcular incertezas:
“Evaluation of Measurement Data — Supplement 1 to the ‘Guide to the Expression of Uncertainty in Measurement’ — Propagation of Distributions Using a Monte Carlo Method,” 2008. https://doi.org/10.59161/JCGM101-2008. ↩