Simulação de Monte Carlo no Excel, com ou sem suplemento
Há três formas de rodar uma simulação de Monte Carlo em um modelo do Excel: com fórmulas RAND() e uma tabela de dados, com um suplemento ou com uma ferramenta que roda a planilha fora do Excel. Em todas, o modelo é recalculado milhares de vezes, com as entradas incertas sorteadas de faixas, e os resultados são lidos como probabilidades: a chance de estourar o orçamento, o custo que você não ultrapassa com 80% de confiança, as entradas que mais influenciam o resultado.
Por que simular em vez de usar um único número
Uma planilha dá uma resposta para um conjunto de entradas. Quando as entradas são estimativas, essa resposta esconde o quanto ela pode errar, e muitas vezes é otimista: somar os custos mais prováveis ignora que o custo estoura com mais facilidade do que fica abaixo do previsto. No nosso exemplo de custo de projeto, a estimativa-base (a soma dos custos mais prováveis) é superada em 94,2% dos resultados simulados. Os casos melhor, base e pior não resolvem: são três respostas, sem dizer quão provável é cada uma.
1. Só com o Excel, sem suplemento: RAND() e uma tabela de dados
O Excel não tem um comando de simulação, mas as funções bastam para um modelo pequeno:
- Troque cada entrada incerta por um sorteio aleatório.
RAND()devolve um número uniforme entre 0 e 1; uma função de distribuição inversa transforma esse número em um valor da faixa desejada (fórmulas abaixo). - Repita o cálculo. Coloque as iterações de 1 a 5.000 em uma coluna e, na coluna seguinte, uma linha acima do primeiro número, uma referência à célula de saída. Selecione as duas colunas a partir dessa linha, escolha Dados › Teste de Hipóteses › Tabela de Dados (Data › What-If Analysis › Data Table) e informe qualquer célula vazia da mesma aba como Célula de entrada da coluna (Column input cell). Cada linha recalcula a planilha e recebe novos sorteios.
- Resuma a coluna.
AVERAGE,PERCENTILE.INCeCOUNTIF(dividida pelo número de iterações) dão a média, o P80 e a chance de superar uma meta; um histograma mostra o formato da distribuição.
| Entrada | Fórmula |
|---|---|
| Normal (média, desvio padrão) | =NORM.INV(RAND(), mean, sd) |
| PERT (mín., mais provável, máx.) | =BETA.INV(RAND(), 1+4*(ml-min)/(max-min), 1+4*(max-ml)/(max-min), min, max) |
| Triangular (mín., mais provável, máx.), com o sorteio em U | =IF(U<(ml-min)/(max-min), min+SQRT(U*(max-min)*(ml-min)), max-SQRT((1-U)*(max-min)*(max-ml))) |
| Evento de risco (probabilidade p, custo c) | =IF(RAND()<p, c, 0) |
Isso funciona, e é uma boa forma de aprender. Os limites aparecem em modelos reais:
- Uma tabela de dados recalcula a planilha inteira a cada iteração, então modelos grandes ficam lentos. Configurar o cálculo como “Automático, exceto tabelas de dados” (Automatic except for data tables) mantém a planilha utilizável nesse meio-tempo.
RAND()sorteia de novo a cada recálculo; por isso os resultados mudam toda vez que a planilha recalcula, a menos que você os cole como valores.- Para entradas correlacionadas, análise de sensibilidade e relatórios, é preciso montar as fórmulas e os gráficos por conta própria.
2. Um suplemento do Excel
Suplementos como @RISK, Crystal Ball, Analytic Solver e ModelRisk acrescentam funções de distribuição ao Excel (por exemplo, uma função PERT que você digita em uma célula), rodam as iterações por você e geram gráficos, análise de sensibilidade e relatórios. Funcionam dentro do Excel: cada pessoa precisa ter o Excel e o suplemento instalados, o que em muitas empresas exige um pedido à TI.
3. Uma ferramenta que roda a planilha fora do Excel
Uma terceira opção é uma ferramenta com motor de cálculo próprio, que lê o arquivo .xlsx e roda as iterações por conta própria. O xellstorm funciona assim, no navegador:
- Abra a planilha que você já tem; ela é calculada na aba do seu navegador e nunca é enviada. Uma verificação de compatibilidade compara as fórmulas com os valores que o Excel salvou e sinaliza toda célula que o motor não consegue calcular.
- Clique, no mapa do modelo, nas entradas incertas e defina as faixas; clique nos resultados que quer acompanhar. Se a planilha já usa
NORM.INV(RAND(), …)ou as funções de distribuição mais comuns do @RISK, do ModelRisk ou do Analytic Solver, as fórmulas compatíveis viram entradas, com os parâmetros ainda vinculados às células. A fórmulaBETA.INVde PERT acima também é convertida: os argumentos de forma, que são expressões aritméticas, continuam vinculados e são calculados antes de cada rodada (veja Distribuição PERT no Excel). - As rodadas usam uma semente: o mesmo modelo dá sempre os mesmos números e, na maioria das planilhas, só as células que uma iteração altera são recalculadas.
As três formas lado a lado
| Só o Excel | Suplemento do Excel | xellstorm | |
|---|---|---|---|
| Instalação | Nada | Um suplemento no Excel | Nada: roda no navegador |
| Distribuições | Montadas com fórmulas | Muitas, como funções | 48, incluindo tabelas próprias |
| Repetição das iterações | Uma tabela de dados, recalculando a planilha inteira | Incluída | Incluída, recalculando só o que muda na maioria das planilhas |
| Mesmos números na próxima vez | Não, a menos que sejam coladas como valores | Com uma semente fixa | Com uma semente, qualquer que seja o número de núcleos da CPU |
| Correlação, sensibilidade, relatórios | Fórmulas e gráficos feitos por você | Incluída | Incluída |
Como ler os resultados
- Média
- A média de todos os resultados simulados. Com entradas assimétricas, ela difere do resultado obtido com as entradas mais prováveis.
- Percentis (P10, P50, P80, P90)
- O valor que 10%, 50%, 80% ou 90% dos resultados não ultrapassam. P50 é a mediana; P80 e P90 são níveis de orçamento comuns (mais sobre os percentis).
- Probabilidade de uma meta
- A parcela dos resultados que atende a uma condição, como custo total acima do orçamento.
- Curva S
- A probabilidade acumulada em função do resultado: leia qualquer percentil ou a chance de ficar abaixo de qualquer valor.
- Gráfico de tornado
- Quanto o resultado se move quando cada entrada vai de um percentil baixo a um alto, com as demais na mediana; as barras mais largas são as entradas que mais influenciam (gráficos de tornado).
- CVaR (média dos 5% piores)
- A média dos 5% piores resultados: quão graves são os piores casos, e não só com que frequência acontecem (dimensionar uma reserva pelos piores resultados).
Quantas iterações?
O suficiente para que os números reportados parem de variar. O ruído de uma média simulada diminui com a raiz quadrada do número de iterações: com quatro vezes mais iterações, ele cai pela metade. Alguns milhares de iterações são um ponto de partida comum; percentis de cauda, como o P95, pedem mais que a média. O xellstorm pode rodar até que a média e os percentis se estabilizem dentro de uma tolerância escolhida.
Perguntas
Simulação de Monte Carlo é o mesmo que análise de cenários?
Não. A análise de cenários calcula alguns casos escolhidos, como melhor, base e pior, sem dizer quão provável é cada um. Uma simulação sorteia milhares de combinações a partir das faixas e diz quão provável é cada resultado.
Qual distribuição devo usar para uma estimativa?
Para estimativas de especialistas dadas como mínimo, mais provável e máximo, PERT ou triangular. Para quantidades que não podem ficar abaixo de zero e têm cauda longa à direita, lognormal. Para um evento que acontece ou não, uma probabilidade com o custo, se ocorrer. Com dados, ajuste uma distribuição a eles.
Preciso alterar a minha planilha?
No xellstorm, não: as distribuições ficam ao lado da planilha, não dentro dela, e podem ler os números de células que você já tem, como colunas de mínimo, mais provável e máximo; as fórmulas continuam como você as escreveu. No Excel puro ou com um suplemento, as faixas ficam na própria planilha, como fórmulas ou como definições do suplemento.
Como fazer uma distribuição PERT no Excel?
O Excel não tem função PERT, mas a distribuição PERT é uma beta reescalada para ir do mínimo ao máximo, e BETA.INV sorteia valores dela: =BETA.INV(RAND(), 1+4*(ml-min)/(max-min), 1+4*(max-ml)/(max-min), min, max), trocando mín., mais provável (ml) e máx. por referências a células. Sua média é (mín. + 4 × mais provável + máx.) / 6. Distribuição PERT no Excel a compara com a triangular.
Dá para rodar uma simulação de Monte Carlo no Excel sem suplemento?
Dá. Sorteie cada entrada incerta com uma fórmula como =NORM.INV(RAND(), mean, sd), repita o modelo com uma tabela de dados e resuma os resultados com AVERAGE, PERCENTILE.INC e COUNTIF. Ou abra a planilha no xellstorm, que roda as iterações no navegador, sem suplemento e sem precisar do Excel.
Veja também
- Guia
Distribuição PERT no Excel: fórmula, média e quando usar
Uma PERT é uma distribuição beta do mínimo ao máximo, com média (mín. + 4 × mais provável + máx.)/6. A fórmula BETA.INV do Excel e PERT x triangular. - Guia
P50, P80 e P90: o que significam e em qual nível orçar
P80 é o custo que 80% dos resultados simulados não ultrapassam. Seis itens de custo de uma obra têm P80 que, somados, dão 2.843, mas o P80 da soma deles é 2.756 (milhares de US$). - Guia
Gráfico de tornado e análise de sensibilidade: o que é e como ler
No xellstorm, o gráfico de tornado move cada entrada isoladamente, de P10 a P90 por padrão. Em uma estimativa de obra, um único risco muda o custo em 150 (milhares de US$). - Custo e cronograma de projetos
Quanta contingência um projeto de construção precisa?
Exemplo prático: os custos mais prováveis da estimativa de uma obra são superados em 94,2% dos resultados simulados. Dimensione a contingência de custos de construção com Monte Carlo.
O xellstorm é uma ferramenta de simulação de Monte Carlo para modelos do Excel, que roda no navegador: sem suplemento, e o arquivo nunca sai do seu computador.