Quando usar simulações?

40

Portanto, esta é uma pergunta muito simples e estúpida. No entanto, quando eu estava na escola, prestei muito pouca atenção a todo o conceito de simulações em sala de aula e isso me deixou um pouco aterrorizado com esse processo.

  1. Você pode explicar o processo de simulação em termos leigos? (pode ser para gerar dados, coeficientes de regressão etc.)

  2. Quais são algumas situações / problemas práticos quando alguém usaria simulações?

Eu preferiria qualquer exemplo dado em R.

AMathew
fonte
10
(2) já possui mais de mil respostas neste site: procure por simular .
whuber
@ Tim A única coisa que há para discordar no meu comentário é que nosso site tem mais de mil respostas contendo simulações, mas esse é um fato objetivo cuja verdade você pode verificar por si mesmo. Não afirmei, explícito ou implícito, que isso represente uma lista completa ou representativa de qualquer coisa. Como um conjunto de exemplos reais, no entanto, é muito mais rico e detalhado do que qualquer resposta individual jamais poderia alcançar e, como tal, é um recurso valioso para qualquer pessoa que deseje prosseguir com a questão (2).
whuber
@ whuber ok, bom ponto.
Tim

Respostas:

42

Um modelo quantitativo emula algum comportamento do mundo (a) representando objetos por algumas de suas propriedades numéricas e (b) combinando esses números de maneira definida para produzir resultados numéricos que também representam propriedades de interesse.

Figura 1: um modelo determinístico

Neste esquema, três entradas numéricas à esquerda são combinadas para produzir uma saída numérica à direita. As linhas numéricas indicam possíveis valores das entradas e saídas; os pontos mostram valores específicos em uso. Atualmente, os computadores digitais geralmente executam os cálculos, mas não são essenciais: os modelos foram calculados com lápis e papel ou construindo dispositivos "analógicos" em circuitos de madeira, metal e eletrônicos.

Como exemplo, talvez o modelo anterior some suas três entradas. Rcódigo para este modelo pode parecer

inputs <- c(-1.3, 1.2, 0) # Specify inputs (three numbers)
output <- sum(inputs)     # Run the model
print(output)             # Display the output (a number)

Sua saída é simplesmente um número,

-0,1

Não podemos conhecer o mundo perfeitamente: mesmo que o modelo funcione exatamente da maneira que o mundo funciona, nossas informações são imperfeitas e as coisas no mundo variam. As simulações (estocásticas) nos ajudam a entender como essa incerteza e variação nas entradas do modelo devem se traduzir em incerteza e variação nas saídas. Eles fazem isso variando as entradas aleatoriamente, executando o modelo para cada variação e resumindo a saída coletiva.

"Aleatoriamente" não significa arbitrariamente. O modelador deve especificar (consciente ou não, explícita ou implicitamente) as frequências pretendidas de todas as entradas. As frequências das saídas fornecem o resumo mais detalhado dos resultados.

Figura: Entradas aleatórias

O mesmo modelo, mostrado com entradas aleatórias e a saída aleatória resultante (calculada).

A figura exibe frequências com histogramas para representar distribuições de números. As frequências de entrada pretendidas são mostradas para as entradas à esquerda, enquanto a frequência de saída calculada , obtida executando o modelo várias vezes, é mostrada à direita.

Cada conjunto de entradas para um modelo determinístico produz uma saída numérica previsível. Quando o modelo é usado em uma simulação estocástica, no entanto, a saída é uma distribuição (como a cinza longa mostrada à direita). A distribuição da distribuição de saída nos diz como é esperado que as saídas do modelo variem quando suas entradas variam.

O exemplo de código anterior pode ser modificado assim para transformá-lo em uma simulação:

n <- 1e5 # Number of iterations
inputs <- rbind(rgamma(n, 3, 3) - 2,
                runif(n, -2, 2),
                rnorm(n, 0, 1/2))
output <- apply(inputs, 2, sum)
hist(output, freq=FALSE, col="Gray")

Sua saída foi resumida com um histograma de todos os números gerados pela iteração do modelo com estas entradas aleatórias:

Histograma

Observando os bastidores, podemos inspecionar algumas das muitas entradas aleatórias que foram passadas para este modelo:

rownames(inputs) <- c("First", "Second", "Third")
print(inputs[, 1:5], digits=2)

100,000

        [,1]  [,2]  [,3]  [,4]  [,5]
First  -1.62 -0.72 -1.11 -1.57 -1.25
Second  0.52  0.67  0.92  1.54  0.24
Third  -0.39  1.45  0.74 -0.48  0.33

Indiscutivelmente, a resposta para a segunda pergunta é que simulações podem ser usadas em qualquer lugar. Por uma questão prática, o custo esperado para executar a simulação deve ser menor que o benefício provável. Quais são os benefícios de entender e quantificar a variabilidade? Existem duas áreas principais em que isso é importante:

  • Buscando a verdade , como na ciência e na lei. Um número por si só é útil, mas é muito mais útil saber quão preciso ou certo esse número é.

  • Tomar decisões, como nos negócios e na vida cotidiana. As decisões equilibram riscos e benefícios. Os riscos dependem da possibilidade de resultados ruins. Simulações estocásticas ajudam a avaliar essa possibilidade.

Os sistemas de computação se tornaram poderosos o suficiente para executar modelos realistas e complexos repetidamente. O software evoluiu para oferecer suporte à geração e resumo de valores aleatórios de maneira rápida e fácil (como Rmostra o segundo exemplo). Esses dois fatores foram combinados nos últimos 20 anos (e mais) até o ponto em que a simulação é rotineira. O que resta é ajudar as pessoas (1) a especificar distribuições apropriadas de insumos e (2) a entender a distribuição de produtos. Esse é o domínio do pensamento humano, onde os computadores até agora têm sido de pouca ajuda.

whuber
fonte
11
Que ótima resposta! Eu gosto especialmente de "" Aleatoriamente "não significa arbitrariamente".
Haitao Du
29

Primeiro, deixe-me dizer que não há uma resposta única para sua pergunta. Existem vários exemplos de quando você pode (ou precisa) usar a simulação. Vou tentar dar alguns exemplos abaixo. Segundo, observe que existem várias maneiras de definir uma "simulação" ; portanto, a resposta depende pelo menos em parte da definição que você escolher.

Exemplos:

1. Você é um estatístico bayesiano ; portanto, a simulação é o seu método de escolha para fazer estatísticas. Existem abordagens de maneiras não baseadas em simulação para estatísticas bayesianas, no entanto, na grande maioria dos casos, você usa simulação. Para saber mais, consulte o livro "Análise de dados bayesianos" de Gelman (ou outros recursos possíveis).

Tθθθθθ

3. Você não possui os dados ou são muito limitados. Digamos que você queira saber qual seria o possível resultado da guerra nuclear. Infelizmente (espero) não houve guerra nuclear antes, então você não tem nenhum dado. Nesse caso, você pode usar a simulação por computador, onde você faz algumas suposições sobre a realidade e, em seguida, permite que os computadores criem realidades virtuais paralelas onde a guerra nuclear acontece, para que você tenha algumas amostras de possíveis resultados.

4. Seu modelo estatístico não se encaixa no software ou é complicado. Essa abordagem é defendida, por exemplo, por Gelman e Hill em "Análise de dados usando modelos de regressão e modelos multiníveis / hierárquicos" , onde descrevem a estimativa bayesiana baseada em simulação como um "próximo passo" na modelagem de regressão.

5. Você deseja aprender sobre os possíveis resultados de um processo complicado. Imagine que você deseja prever o resultado futuro de algum processo complicado, no entanto, o problema é que o comportamento do seu processo é caótico e, quando você recebe entradas diferentes, obtém saídas diferentes, enquanto o número de entradas possíveis é muito grande. Geralmente, esse era o caso porque os métodos de simulação de Monte Carlo foram inventados por físicos e matemáticos que trabalhavam em bombas nucleares durante a Segunda Guerra Mundial. Com a simulação, você tenta diferentes entradas e coleta amostras para ter uma idéia geral dos possíveis resultados.

6. Seus dados não atendem aos critérios de algum método estatístico , por exemplo, têm uma distribuição distorcida enquanto deveriam ser normais. Em alguns casos, isso não é realmente um problema , no entanto, às vezes é, então métodos baseados em simulação como o bootstrap foram inventados.

7. Testar um modelo teórico contra a realidade. Você tem um modelo teórico que descreve algum processo, por exemplo, disseminação de epidemia por meio de uma rede social. Você pode usar o modelo para gerar alguns dados para poder comparar se o simulado é semelhante aos dados reais. Lada Adamic fornece vários exemplos desse uso para a Análise de redes sociais em sua classe Coursera (veja algumas demos aqui ).

8. Gerar dados da "hipótese 0". Você gera dados falsos (aleatórios) para comparar os dados reais com eles. Se houver efeitos ou tendências significativas em seus dados, eles deverão diferir dos dados gerados aleatoriamente. Essa abordagem é defendida por Buja et al. (2009) em seu artigo "Inferência estatística para análise exploratória de dados e diagnóstico de modelos", onde eles propõem como o uso de gráficos pode facilitar uma análise exploratória de dados e testes de hipóteses (consulte também a documentação do pacote nullabor R que implementa essas idéias).

Tim
fonte
22

Penso que a discussão da resposta do TrynnaDoStat ilustra bem o ponto: usamos simulações sempre que o problema é impossível de resolver analiticamente (por exemplo, as distribuições posteriores de parâmetros em um modelo hierárquico), ou quando estamos simplesmente irritados demais para dedicar tempo. trabalhando a solução analiticamente.

Com base no que observei neste site, o limiar de "irritante o suficiente para simular" varia muito entre os estatísticos. Aparentemente, pessoas como o @whuber podem olhar para um problema e ver imediatamente a solução, enquanto meros mortais como eu terão que considerar cuidadosamente o problema e talvez fazer alguma leitura antes de escrever uma rotina de simulação para fazer o trabalho duro.

Lembre-se de que as simulações não são necessariamente uma panacéia, pois com grandes conjuntos de dados ou modelos complicados, ou você gastará uma quantidade enorme de tempo (de computador) estimando e verificando sua simulação. Certamente não vale a pena o esforço se você puder alcançar o mesmo objetivo com uma hora de consideração cuidadosa.

Restabelecer Monica
fonte
14

As simulações costumam ser feitas quando você não pode obter um formulário fechado para algo (como uma distribuição) ou deseja uma maneira rápida e rápida de obter esse item.

XYβXf(β)=P(Y=1|X=1)P(Y=1|X=0)ββf(β)

TrynnaDoStat
fonte
Eu não chamaria as simulações de "rápidas", esses são métodos computacionalmente exaustivos e geralmente levam muito mais tempo do que a abordagem ML.
Tim
2
É muito mais rápido do que derivar a distribuição.
precisa saber é o seguinte
3
Com que frequência você executa um algoritmo ML por mais de uma semana sem parar ..?
Tim
Tangente re: "a distribuição do coeficiente β para X é Normal" - eu não tinha pensado muito sobre isso, mas após algumas simulações, acho que muitas vezes não é verdade com subamostras inferiores a 500 e / ou com coeficientes cuja média está além uma certa força, digamos, +/- 3. Soa certo?
Rolando2
A teoria do MLE nos diz que, sob certas condições de regularidade, o MLE é assintoticamente normal. Vou adicionar isso à minha resposta.
TrynnaDoStat
11

As simulações são uma excelente maneira de verificar se você pode obter estimativas úteis de um modelo.

Você faria isso gerando / simulando dados falsos que seguem a distribuição implícita no seu modelo. Em seguida, vá em frente e ajuste seu modelo a esses dados. Este é um caso ideal: seu modelo é, de fato, verdadeiro. Portanto, se o ajuste for barulhento ou impreciso, você saberá que há um problema com o procedimento de estimativa ou com o próprio modelo.

Da mesma forma, você pode simular dados usando o processo de geração de dados "errado" e usar esses dados falsos para avaliar como suas estimativas são afetadas por violar as premissas do modelo. Isso geralmente é chamado de análise de sensibilidade .

Esses pontos são semelhantes aos itens 2 e 8 da resposta de Tim e também uma versão um pouco mais ad-hoc do procedimento na resposta do whuber.


As simulações também são usadas para executar a verificação preditiva do modelo, conforme defendido por Andrew Gelman e outros. Isso equivale a conectar os dados do preditor novamente ao modelo e simular dados de resposta falsos da distribuição implícita, para ver se os dados simulados estão próximos o suficiente (por qualquer critério que você esteja usando) do real.

Observe que isso não é a mesma coisa que apenas computar valores ajustados. Em um modelo de regressão, por exemplo, os valores ajustados são médias condicionais; para executar uma verificação preditiva em um modelo de regressão, você teria que desenhar uma vez da distribuição gaussiana centrada em cada valor ajustado.

shadowtalker
fonte
6

O caso mais simples para simulação. Digamos que você tenha um modelo de previsão para o número de inadimplências, e também um modelo para perdas em empréstimos inadimplentes. Agora você precisa prever a perda total que o produto de inadimplência e perdas, dado o padrão. Você não pode simplesmente multiplicar os padrões e as perdas nos padrões para obter os intervalos de confiança da perda total.

xix1x2

Este documento possui uma descrição em nível de MBA deste caso de uso para estimativa de risco de operação, em que você tem as distribuições de frequência e valores de perdas e as combina para obter a distribuição total de perdas.

Aksakal
fonte