O que é uma simulação de Monte Carlo?

Simulações de Monte Carlo em Python

Izzy Weber

Curriculum Manager, DataCamp

Simulações e simulações de Monte Carlo

Simulações:
  • Experimentos que tentam imitar a realidade
  • Geralmente usam programas de computador

 

Simulações de Monte Carlo:
  • Usadas para prever a probabilidade de diferentes resultados afetados por variáveis aleatórias
  • Dependem de amostragem aleatória repetida para obter resultados numéricos
  • Resultados são estocásticos, pois o modelo depende de amostragem aleatória
Simulações de Monte Carlo em Python

Exemplo de simulação

Lançando um dado de seis faces
  • Tom lança um dado justo de seis faces $n$ vezes
  • Após cada lance, registra o resultado
  • Em seguida, coloca o dado em uma bolsa e escolhe um novo para o próximo lance

Perguntas

  1. Quantos dados Tom terá após $n$ lances?
  2. Qual será a média dos resultados após $n$ lances?

 

uma mão lançando um dado

Simulações de Monte Carlo em Python

Simulando os resultados de Tom

  • total_dice: número de dados na bolsa de Tom após $n$ lances
  • mean_point_dice: média de todos os resultados após $n$ lances
import random
import numpy as np

def roll_dice(n, seed): random.seed(seed) total_dice = 0 point_dice = []
for i in range(n): total_dice += 1 point_dice.append(random.randint(1, 6))
mean_point_dice = np.mean(point_dice)
return([total_dice, mean_point_dice])
Simulações de Monte Carlo em Python

Resultados da simulação

Simulação Um:

seed=1231

print(roll_dice(10, seed))
print(roll_dice(100, seed))
print(roll_dice(1000, seed))
print(roll_dice(10000, seed))

Simulação Dois:

seed=3124
print(roll_dice(10, seed))
print(roll_dice(100, seed))
print(roll_dice(1000, seed))
print(roll_dice(10000, seed))

Resultados:

[10, 3.6]

[100, 3.5]
[1000, 3.495]
[10000, 3.503]

Resultados:

[10, 3.8]
[100, 3.28]
[1000, 3.474]
[10000, 3.5508]
Simulações de Monte Carlo em Python

Lei dos Grandes Números

À medida que aumenta o número de variáveis geradas aleatoriamente e com a mesma distribuição, sua média amostral se aproxima da média teórica.

Simulação Três (seed = 3124):

print(roll_dice(100000, seed))
print(roll_dice(500000, seed))
print(roll_dice(1000000, seed))

Resultados:

[100000, 3.51344]
[500000, 3.50428]
[1000000, 3.501995]
Simulações de Monte Carlo em Python

Vamos praticar!

Simulações de Monte Carlo em Python

Preparing Video For Download...