Simulação de Monte Carlo: por que a distribuição escolhida muda tudo

Um mesmo conjunto de dados de throughput semanal gera previsões completamente diferentes dependendo do modelo de distribuição escolhido, comparando distribuição uniforme, Weibull e simulação em Python.

Você vai encontrar centenas de quilobytes de material explicando sobre Simulação de Monte Carlo ao fazer uma simples pesquisa no Google.

Vai encontrar diversas planilhas, sites, aplicativos e ferramentas especializadas, gratuitas e pagas, que fazem Simulação de Monte Carlo.

Você escolherá alguma das opções que aparecerão na primeira página de itens recuperados na sua busca e que mais se ajustou aos seus critérios de escolha, possivelmente fará alguns testes e em seguida vai começar a utilizar.

Mas eu te pergunto: você sabe me dizer qual a base para geração dos dados do modelo de simulação escolhido? Você sabe como os seus dados se comportam? E se os seus dados são aderentes ao modelo escolhido?

Bom, vejamos os exemplos abaixo. Para o mesmo conjunto de dados de vazão (throughput) semanal, eu obtive dois resultados diferentes. Os dados utilizados foram estes:

2, 3, 12, 5, 7, 9, 17, 13, 10, 13, 19, 9, 9

O primeiro resultado utiliza a função randbetween() do Excel. As funções RAND e RANDBETWEEN do Excel geram números pseudoaleatórios a partir da distribuição uniforme, também conhecida como distribuição retangular, onde há probabilidade igual para todos os valores que uma variável aleatória pode assumir (ablebits.com). Além disto, a função randbetween() gera números aleatórios duplicados.

Percentis obtidos com distribuição uniforme (randbetween):

% confiança50%55%60%65%70%75%80%85%90%95%
Dias úteis99910101111121314

O gráfico a seguir foi gerado usando um modelo que faz o cálculo dos parâmetros SHAPE e SCALE da distribuição de dados, utilizando as equações da distribuição Weibull. Os valores foram estes, respectivamente:

  • Shape (K): 1,85
  • Scale (L): 11,31

Percentis obtidos com a distribuição Weibull:

% confiança50%55%60%65%70%75%80%85%90%95%
Dias úteis4444444555

O próximo gráfico é uma simulação feita em Python, que executou 1 milhão de cenários em 4 segundos:

  • Parâmetro de forma (shape): 2,56 (teve uma pequena diferença em relação ao cálculo do modelo Excel, 1,85)
  • Parâmetro de escala (scale): 11,83 (ficou muito próximo ao cálculo do modelo Excel, 11,31)

Dados estatísticos da amostra:

EstatísticaValor
count12,00
mean10,50
std4,62
min3,00
25%8,50
50%9,50
75%13,00
max19,00

Considerando que tenho um período de tempo, quantos itens de trabalho provavelmente serão concluídos neste período?

  • P15%: 3,0
  • P85%: 4,0

A diferença entre os percentis gerados pela distribuição uniforme e pela Weibull não é sutil — é da ordem de dobro ou mais em vários pontos da curva. Isso mostra, na prática, que a escolha do modelo de distribuição não é um detalhe técnico irrelevante: ela muda a resposta que você vai levar ao seu patrocinador, ao seu cliente ou à sua diretoria. Antes de confiar em qualquer ferramenta de Monte Carlo, vale a pena entender qual distribuição ela assume por padrão e se essa suposição é aderente ao comportamento real dos seus dados.