Quando utilizzare le simulazioni?


40

Quindi questa è una domanda molto semplice e stupida. Tuttavia, quando ero a scuola, ho prestato pochissima attenzione all'intero concetto di simulazioni in classe e questo mi ha lasciato un po 'terrorizzato da quel processo.

  1. Puoi spiegare il processo di simulazione in termini di laici? (potrebbe essere per la generazione di dati, coefficienti di regressione, ecc.)

  2. Quali sono alcune situazioni / problemi pratici quando si usano le simulazioni?

Preferirei che tutti gli esempi forniti fossero in R.


10
(2) ha già oltre mille risposte su questo sito: cerca simula .
whuber

@Tim L'unica cosa che non è d'accordo con il mio commento è che il nostro sito ha oltre mille risposte contenenti simulazioni, ma questo è un fatto oggettivo di cui puoi verificare la verità. Non ho rivendicato, esplicito o implicito, che questo rappresenti un elenco completo o rappresentativo di qualsiasi cosa. Come un insieme di esempi reali, tuttavia, è molto più ricco e dettagliato di quanto ogni singola risposta possa mai sperare di realizzare e come tale è una risorsa preziosa per chiunque desideri approfondire ulteriormente la domanda (2).
whuber

@whuber ok, buon punto.
Tim

Risposte:


42

Un modello quantitativo emula alcuni comportamenti del mondo (a) rappresentando gli oggetti con alcune delle loro proprietà numeriche e (b) combinando quei numeri in un modo definito per produrre output numerici che rappresentano anche proprietà di interesse.

Figura 1: un modello deterministico

In questo schema, tre input numerici a sinistra sono combinati per produrre un output numerico a destra. Le linee numeriche indicano i possibili valori degli ingressi e delle uscite; i punti mostrano valori specifici in uso. Oggi i computer digitali di solito eseguono i calcoli, ma non sono essenziali: i modelli sono stati calcolati con carta e penna o costruendo dispositivi "analogici" in circuiti di legno, metallo ed elettronici.

Ad esempio, forse il modello precedente somma i suoi tre input. Ril codice per questo modello potrebbe apparire

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

Il suo output è semplicemente un numero,

-0.1

Non possiamo conoscere perfettamente il mondo: anche se il modello funziona esattamente come il mondo, le nostre informazioni sono imperfette e le cose nel mondo variano. Le simulazioni (stocastiche) ci aiutano a capire come tale incertezza e variazione negli input del modello dovrebbero tradursi in incertezza e variazione negli output. Lo fanno variando gli input in modo casuale, eseguendo il modello per ogni variazione e riassumendo l'output collettivo.

"Casualmente" non significa arbitrariamente. Il modellatore deve specificare (consapevolmente o meno, esplicitamente o implicitamente) le frequenze previste di tutti gli input. Le frequenze delle uscite forniscono il riepilogo più dettagliato dei risultati.

Figura: input casuali

Lo stesso modello, mostrato con input casuali e l'output casuale (calcolato) risultante.

La figura mostra le frequenze con istogrammi per rappresentare le distribuzioni dei numeri. Le frequenze di ingresso previste sono visualizzate per gli ingressi a sinistra, mentre la frequenza di uscita calcolata , ottenuta eseguendo il modello più volte, è mostrata a destra.

Ogni serie di input per un modello deterministico produce un output numerico prevedibile. Quando il modello viene utilizzato in una simulazione stocastica, tuttavia, l'output è una distribuzione (come quella lunga grigia mostrata a destra). La diffusione della distribuzione degli output ci dice come ci si può aspettare che le uscite del modello possano variare quando i suoi input variano.

L'esempio di codice precedente potrebbe essere modificato in questo modo per trasformarlo in una simulazione:

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")

Il suo output è stato riassunto con un istogramma di tutti i numeri generati ripetendo il modello con questi input casuali:

Istogramma

Sbirciando dietro le quinte, potremmo ispezionare alcuni dei tanti input casuali che sono stati passati a questo modello:

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

Probabilmente, la risposta alla seconda domanda è che le simulazioni possono essere utilizzate ovunque. In pratica, il costo previsto per l'esecuzione della simulazione dovrebbe essere inferiore al probabile beneficio. Quali sono i vantaggi della comprensione e della quantificazione della variabilità? Esistono due aree principali in cui questo è importante:

  • Alla ricerca della verità , come nella scienza e nella legge. Un numero da solo è utile, ma è molto più utile sapere quanto sia preciso o certo quel numero.

  • Prendere decisioni, come nel mondo degli affari e della vita quotidiana. Le decisioni bilanciano rischi e benefici. I rischi dipendono dalla possibilità di risultati negativi. Le simulazioni stocastiche aiutano a valutare tale possibilità.

I sistemi informatici sono diventati abbastanza potenti da eseguire ripetutamente modelli realistici e complessi. Il software si è evoluto per supportare la generazione e il riepilogo di valori casuali in modo rapido e semplice (come Rmostra il secondo esempio). Questi due fattori si sono combinati negli ultimi 20 anni (e oltre) al punto in cui la simulazione è di routine. Ciò che resta è aiutare le persone (1) a specificare le distribuzioni appropriate degli input e (2) a comprendere la distribuzione degli output. Questo è il dominio del pensiero umano, dove finora i computer sono stati di scarso aiuto.


1
che bella risposta !. Mi piace soprattutto "" Casualmente "non significa arbitrariamente".
Haitao Du,

29

Innanzitutto, lasciami dire che non esiste una risposta unica per la tua domanda. Esistono diversi esempi di quando è possibile (o dover) utilizzare la simulazione. Proverò a darti alcuni esempi di seguito. In secondo luogo, si noti che esistono diversi modi per definire una "simulazione" , quindi la risposta dipende almeno in parte dalla definizione scelta.

Esempi:

1. Sei uno statistico bayesiano , quindi la simulazione è il tuo metodo preferito per fare statistiche. Esistono approcci non basati sulla simulazione alle statistiche bayesiane, tuttavia nella stragrande maggioranza dei casi si utilizza la simulazione. Per ulteriori informazioni, consultare il libro "Analisi dei dati bayesiani" di Gelman (o altre possibili risorse).

Tθθθθθ

3. Non hai i dati o sono molto limitati. Supponi di voler sapere quale sarebbe il possibile esito della guerra nucleare. Sfortunatamente (si spera) prima non esisteva una guerra nucleare, quindi non disponi di dati. In questo caso puoi usare la simulazione al computer in cui fai alcune ipotesi sulla realtà e poi lasciare che i computer creino realtà virtuali parallele in cui si verifica la guerra nucleare, in modo da avere alcuni esempi di possibili risultati.

4. Il tuo modello statistico non si adatta al software o è complicato. Questo approccio è sostenuto, ad esempio, da Gelman e Hill in "Analisi dei dati mediante regressione e modelli multilivello / gerarchici" , in cui descrivono la stima bayesiana basata sulla simulazione come un "passo successivo" nella modellazione di regressione.

5. Vuoi conoscere i possibili risultati di un processo complicato. Immagina di voler prevedere i risultati futuri di un processo complicato, ma il problema è che il comportamento del tuo processo è caotico e, dati diversi input, ottieni output diversi, mentre il numero di input possibili è molto grande. In generale, questo è stato il caso perché i metodi di simulazione Monte Carlo sono stati inventati da fisici e matematici che lavorano alla bomba nucleare durante la seconda guerra mondiale. Con la simulazione si provano input diversi e si raccolgono campioni in modo da avere un'idea generale dei possibili risultati.

6. I tuoi dati non soddisfano i criteri per alcuni metodi statistici , ad es. Hanno una distribuzione distorta mentre dovrebbe essere normale. In alcuni casi questo non è davvero un problema , tuttavia a volte lo è, quindi sono stati inventati metodi basati sulla simulazione come bootstrap .

7. Testare un modello teorico contro la realtà. Hai un modello teorico che descrive alcuni processi, ad esempio la diffusione dell'epidemia attraverso un social network. È possibile utilizzare il modello per generare alcuni dati in modo da poter confrontare se il simulato è simile ai dati reali. Lada Adamic fornisce numerosi esempi di tale utilizzo per l'analisi dei social network nella sua classe Coursera (vedi alcune demo qui ).

8. Per generare dati "ipotesi 0". Generi un dato falso (casuale) in modo da confrontare i dati reali con esso. Se si sono verificati effetti o tendenze significativi nei dati, questi dovrebbero differire da quelli generati casualmente. Questo approccio è sostenuto da Buja et al. (2009) nel loro articolo "Inferenza statistica per l'analisi dei dati esplorativi e la diagnostica dei modelli" in cui propongono in che modo l'uso di grafici potrebbe facilitare un'analisi dei dati esplorativi e test di ipotesi (vedere anche la documentazione del pacchetto nullabor R che implementa tali idee).


22

Penso che la discussione sulla risposta di TrynnaDoStat illustri bene il punto: usiamo simulazioni ogni volta che è impossibile risolvere analiticamente il problema (ad esempio le distribuzioni posteriori dei parametri in un modello gerarchico) o quando siamo semplicemente troppo seccati per dedicare del tempo elaborare la soluzione analiticamente.

Sulla base di ciò che ho osservato su questo sito Web, la soglia del "abbastanza fastidioso da simulare" varia ampiamente tra gli statistici. Le persone come @whuber possono, a quanto pare, dare un'occhiata a un problema e vedere immediatamente la soluzione, mentre i semplici mortali come me dovranno considerare attentamente il problema e magari leggere un po 'prima di scrivere una routine di simulazione per fare il duro lavoro.

Tieni presente che le simulazioni non sono necessariamente una panacea poiché con grandi set di dati, o modelli complicati, o entrambi impiegherai enormi quantità di tempo (computer) per stimare e controllare la tua simulazione. Non vale certamente la pena se riuscissi a raggiungere lo stesso obiettivo con un'ora di attenta considerazione.


14

Le simulazioni vengono spesso eseguite quando non è possibile ottenere un modulo chiuso per qualcosa (come una distribuzione) o se si desidera un modo rapido e veloce per ottenere quel qualcosa.

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


Non definirei le simulazioni "veloci", sono metodi esaustivi dal punto di vista computazionale e spesso impiegano molto più tempo rispetto all'approccio ML.
Tim

2
È molto più veloce che ricavare la distribuzione.
TrynnaDoStat,

3
Con quale frequenza esegui un algoritmo ML per più di una settimana ininterrottamente ..?
Tim

Tangent re: "la distribuzione del coefficiente β per X è normale" - Non ci avevo pensato molto, ma dopo alcune simulazioni, trovo che spesso non sia vero con sottocampioni inferiori a circa 500 e / o con coefficienti la cui media è oltre una certa forza, diciamo, +/- 3. Sembra giusto?
rolando2,

La teoria della MLE ci dice che, in determinate condizioni di regolarità, la MLE è asintoticamente normale. Aggiungerò questo alla mia risposta.
TrynnaDoStat,

11

Le simulazioni sono un modo eccellente per verificare se è possibile ottenere stime utili da un modello.

Lo faresti generando / simulando dati falsi che seguono la distribuzione implicita dal tuo modello. Quindi vai avanti e adatta il tuo modello a tali dati. Questo è un caso ideale: il tuo modello è, infatti, vero. Quindi, se l'adattamento è rumoroso o impreciso, allora sai che c'è un problema con la procedura di stima o il modello stesso.

Allo stesso modo, è possibile simulare i dati utilizzando il processo di generazione dei dati "errato" e utilizzare tali dati falsi per valutare in che modo le stime sono influenzate dalla violazione dei presupposti del modello. Questo è spesso chiamato analisi di sensibilità .

Questi punti sono simili agli articoli 2 e 8 nella risposta di Tim, e anche una versione un po 'più ad hoc della procedura nella risposta di whuber.


Le simulazioni vengono anche utilizzate per eseguire il controllo predittivo del modello, come sostenuto da Andrew Gelman e altri. Ciò equivale a ricollegare i dati del predittore nel modello e quindi a simulare i dati di risposta falsi dalla distribuzione implicita, per vedere se i dati simulati sono abbastanza vicini (per qualsiasi criterio tu stia usando) alla cosa reale.

Si noti che questa non è la stessa cosa del semplice calcolo dei valori adattati. In un modello di regressione, ad esempio, i valori adattati sono medie condizionali; per eseguire un controllo predittivo su un modello di regressione, è necessario attingere una volta dalla distribuzione gaussiana centrata su ciascun valore adattato.


6

Il caso più semplice per la simulazione. Supponiamo che tu abbia un modello previsionale per il numero di inadempienze sui prestiti, ma hai anche un modello per le perdite sui prestiti insoluti. Ora è necessario prevedere la perdita totale che il prodotto di default e le perdite hanno dato il default. Non è possibile semplicemente moltiplicare i valori predefiniti e le perdite sui valori predefiniti per ottenere gli intervalli di confidenza della perdita totale.

XioX1X2

Questo documento contiene una descrizione a livello di MBA di questo caso d'uso per la stima del rischio operativo, in cui sono disponibili le distribuzioni della frequenza e degli importi delle perdite e le combina per ottenere la distribuzione totale delle perdite.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.