“Como não sabemos a probabilidade teórica p , nós não podemos usar a fórmula do Erro Padrão diretamente no início.
A solução estatística para isso é usar a nossa melhor estimativa atual, que chamamos de p̂. A cada lote de simulações, nós pegamos a probabilidade que calculamos até aquele momento, colocamos na fórmula no lugar de p , e vemos se o erro já está pequeno o suficiente.
A fórmula se torna uma ferramenta dinâmica que se ajusta à medida que nossa simulação se torna mais precisa.”
Rodar um experimento que ignora a probabilidade teórica — como fizemos no artigo Como ter certeza da assertividade da resposta da simulação sem comparar com probabilidade teórica? — interessado em ter um resultado com significancia cria uma preocupação extra: confiabilidade.
Para uma simulação de Monte Carlo que não sabe qual a probabilidade teórica do evento que esta analisando essa preocupação leva estabelecer padrões altos para o experimento.
1- parametro de erro exigente.
2- estimativa de probabilidade plausivel.
2- iterar por populações cada vez maiores .
3- Repetir o experimento para validar precisão.
Veja só que problema interessante. Para saber o erro padrão você precisa da probabilidade, mas a probabilidade é exatamente o que você esta tentando descobrir!
Sua Probabilidade teórica é
SE=sqrt(p(1−p)/n)
Mas como disse antes, não sabemos p . Solução? Usar uma estimativa de probabilidade plausivel. Em estatística, chamamos essa estimativa de p̂ (p-chapéu).
SEestimado≈ sqrt(p̂(1−p̂)/n)
Uma curiosidade aqui é que o simbolo ^ é um simbolo padrão para indicar um valor estimado de algo.
No nosso caso utilizei p=0.25 por que esse é o valor máximo possível para a variância (p(1−p)p(1−p)) de uma distribuição binomial.
Se p = 0.1 -> 0.1 * 0.9 = 0.09
Se p = 0.9 -> 0.9 * 0.1 = 0.09
Se p = 0.3 -> 0.3 * 0.7 = 0.21
Se p = 0.5 -> 0.5 * 0.5 = 0.25
A formula é a mesma mas agora voce chama ela de estimativa e ao inves de utilizar p para validar o resultado voce usa o resultado para validar p̂.
Conforme itera na sua simulação aumentando n o seu p̂ vai ficando cada vez mais próximo do p teórico (foi o que me disse a lei dos grandes números). Cada iteração recalcula o Erro Padrão (SE) usando a estimativa.
Para validar p̂ de maneira a poder acreditar nele voce precisa definir o que é aceitavel pra você e no caso abaixo o aceitavel era ter uma margem de erro menor que 0.00014. Isso significava que era aceitavel ter 3 digitos precisos e uma variacao a partir do 4 digito.
Esse definição de erro permite que o intervalo da resposta seja [0.31236, 0.31264] e
para chegar nessa margem de erro são 42 milhoes de simulacoes. Isso com um nível de confiança de 95%.
É isso que faço em flipCoin3on5_notheoricalknowledge.go. O resultado de algumas iterações você pode ver abaixo.
Tamanho Amostragem: 10000000
Estimativa : 0.312603 | Margem de erro : 0.0003
[NOK] Margem de Erro 0.000287 > 0.000140.
----------
Tamanho Amostragem: 11000000
Estimativa : 0.312533 | Margem de erro : 0.0003
[NOK] Margem de Erro 0.000274 > 0.000140.
----------
Tamanho Amostragem: 12000000
Estimativa : 0.312575 | Margem de erro : 0.0003
[NOK] Margem de Erro 0.000262 > 0.000140.
----------
Tamanho Amostragem: 13000000
Estimativa : 0.312560 | Margem de erro : 0.0003
[NOK] Margem de Erro 0.000252 > 0.000140.
Mas e se eu quiser mais certeza?
3x mais certeza!
ou 65% de redução de incerteza ao custo de 8x mais computação
Agora, se estivessemos buscando um intervalo de confianca que garantisse 95% de chance que o arredondamento da estimativa fosse 0.3125 esse custo computacional a margem de erro precisaria ser 0.000049 e a quantidade de simulações seria muito maior, com 343 Milhões repetições. Isso é 8x o necessário para 0.00014.