Quand utiliser des simulations?

40

C'est donc une question très simple et stupide. Cependant, lorsque j'étais à l'école, je n'accordais que très peu d'attention à la notion de simulation en classe, ce qui me laissait un peu terrifié à l'idée de ce processus.

  1. Pouvez-vous expliquer le processus de simulation en termes simples? (pourrait être pour générer des données, des coefficients de régression, etc.)

  2. Quels sont certains problèmes / situations pratiques lorsque l’on utilise des simulations?

Je préférerais que tous les exemples donnés soient en R.

Amathew
la source
10
(2) a déjà plus de mille réponses sur ce site: recherche pour simuler .
whuber
@Tim La seule chose avec laquelle il faut être en désaccord dans mon commentaire est que notre site a plus de mille réponses contenant des simulations, mais c'est un fait objectif dont vous pouvez vous vérifier la vérité. Je n’ai pas prétendu, explicitement ou implicitement, que cela représentait une liste complète ou représentative de quoi que ce soit. En tant qu’exemples concrets, elle est toutefois beaucoup plus riche et détaillée que toute réponse individuelle ne pourrait jamais espérer obtenir. Elle constitue donc une ressource précieuse pour tous ceux qui souhaiteraient approfondir la question (2).
whuber
@ Whuber ok, bon point.
Tim

Réponses:

42

Un modèle quantitatif imite certains comportements du monde en (a) représentant des objets à l'aide de certaines de leurs propriétés numériques et (b) en combinant ces nombres de manière définie pour produire des sorties numériques représentant également des propriétés d'intérêt.

Figure 1: un modèle déterministe

Dans ce schéma, trois entrées numériques à gauche sont combinées pour produire une sortie numérique à droite. Les lignes numériques indiquent les valeurs possibles des entrées et des sorties; les points indiquent les valeurs spécifiques utilisées. De nos jours, ce sont les ordinateurs numériques qui effectuent les calculs, mais ils ne sont pas essentiels: les modèles ont été calculés au crayon-à-papier ou en construisant des dispositifs "analogiques" en bois, en métal et en circuits électroniques.

À titre d’exemple, le modèle précédent additionne peut-être ses trois entrées. Rle code pour ce modèle pourrait ressembler à

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

Sa sortie est simplement un nombre,

-0,1

Nous ne pouvons pas connaître parfaitement le monde: même si le modèle fonctionne exactement comme le monde, nos informations sont imparfaites et les choses changent dans le monde. Les simulations (stochastiques) nous aident à comprendre comment une telle incertitude et la variation des entrées du modèle devraient se traduire par une incertitude et une variation des résultats. Ils le font en faisant varier les entrées de manière aléatoire, en exécutant le modèle pour chaque variante et en résumant la sortie collective.

"Au hasard" ne signifie pas arbitrairement. Le modélisateur doit spécifier (sciemment ou non, explicitement ou implicitement) les fréquences prévues de toutes les entrées. Les fréquences des sorties fournissent le résumé le plus détaillé des résultats.

Figure: Entrées aléatoires

Le même modèle, montré avec des entrées aléatoires et la sortie aléatoire résultante (calculée).

La figure affiche les fréquences avec des histogrammes pour représenter les distributions de nombres. Les fréquences d'entrée prévues sont indiquées pour les entrées à gauche, tandis que la fréquence de sortie calculée , obtenue en exécutant le modèle plusieurs fois, est indiquée à droite.

Chaque ensemble d'entrées d'un modèle déterministe produit une sortie numérique prévisible. Toutefois, lorsque le modèle est utilisé dans une simulation stochastique, le résultat est une distribution (telle que la longue représentation grise présentée à droite). L'étendue de la distribution des sorties nous indique comment les sorties du modèle peuvent varier lorsque ses entrées varient.

L'exemple de code précédent pourrait être modifié comme ceci pour le transformer en une simulation:

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

Sa sortie a été résumée avec un histogramme de tous les nombres générés en itérant le modèle avec ces entrées aléatoires:

L'histogramme

En regardant en coulisse, nous pouvons inspecter certaines des nombreuses entrées aléatoires qui ont été transmises à ce modèle:

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

La sortie affiche les cinq premières itérations sur , avec une colonne par itération: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

On peut soutenir que la réponse à la deuxième question est que les simulations peuvent être utilisées partout. Concrètement, le coût attendu de la simulation devrait être inférieur au bénéfice attendu. Quels sont les avantages de comprendre et de quantifier la variabilité? Ceci est important dans deux domaines principaux:

  • Chercher la vérité , comme dans la science et le droit. Un chiffre seul est utile, mais il est bien plus utile de savoir si ce chiffre est précis ou certain.

  • Prendre des décisions, comme dans les affaires et la vie quotidienne. Les décisions concilient risques et avantages. Les risques dépendent de la possibilité de mauvais résultats. Les simulations stochastiques aident à évaluer cette possibilité.

Les systèmes informatiques sont devenus suffisamment puissants pour exécuter de manière répétée des modèles réalistes et complexes. Le logiciel a évolué pour prendre en charge la génération et la synthèse rapides et faciles de valeurs aléatoires (comme le Rmontre le deuxième exemple). Ces deux facteurs se sont combinés au cours des 20 dernières années (et plus) au point que la simulation est devenue une routine. Il reste à aider les gens (1) à spécifier les distributions d’intrants appropriées et (2) à comprendre la distribution des extrants. C’est le domaine de la pensée humaine, où les ordinateurs n’ont jusqu’à présent apporté aucune aide.

whuber
la source
1
quelle bonne réponse! J'aime particulièrement "" au hasard "ne signifie pas arbitrairement."
Haitao Du
29

Tout d’abord, laissez-moi vous dire qu’il n’ya pas de réponse unique à votre question. Il existe de nombreux exemples de cas où vous pouvez (ou devez) utiliser la simulation. Je vais essayer de vous donner quelques exemples ci-dessous. Deuxièmement, notez qu'il existe plusieurs façons de définir une "simulation" , de sorte que la réponse dépend au moins en partie de la définition choisie.

Exemples:

1. Vous êtes un statisticien bayésien , la simulation est donc votre méthode de choix pour effectuer des statistiques. Il existe des méthodes non statistiques basées sur la simulation pour les statistiques bayésiennes, mais dans la grande majorité des cas, vous utilisez la simulation. Pour en savoir plus, consultez le livre «Analyse de données bayésiennes» de Gelman (ou d’ autres ressources possibles).

Tθθθθθ

3. Vous n’avez pas les données ou celles-ci sont très limitées. Supposons que vous souhaitiez savoir quelle serait l'issue possible d'une guerre nucléaire. Malheureusement (heureusement), il n'y avait pas de guerre nucléaire auparavant, vous n'avez donc aucune donnée. Dans ce cas, vous pouvez utiliser la simulation sur ordinateur pour formuler des hypothèses sur la réalité, puis laisser les ordinateurs créer des réalités virtuelles parallèles lorsque la guerre nucléaire se produit. Vous disposez ainsi d'un échantillon des résultats possibles .

4. Votre modèle statistique ne correspond pas au logiciel ou est compliqué. Cette approche est préconisée, par exemple, par Gelman et Hill dans "Analyse des données à l'aide de modèles de régression et à niveaux multiples / hiérarchiques" , décrivant l'estimation bayésienne fondée sur la simulation comme "la prochaine étape" de la modélisation par régression.

5. Vous voulez en savoir plus sur les résultats possibles d'un processus compliqué. Imaginez que vous souhaitiez prévoir le résultat futur d'un processus compliqué. Le problème est toutefois que le comportement de votre processus est chaotique et que vous obtenez différents résultats à partir d'entrées différentes, alors que le nombre d'entrées possibles est très grand. En règle générale, c’est le cas, car les méthodes de simulation de Monte Carlo ont été inventées par des physiciens et des mathématiciens travaillant sur la bombe nucléaire pendant la Seconde Guerre mondiale. Avec la simulation, vous essayez différentes entrées et collectez des échantillons afin d'avoir une idée générale des résultats possibles.

6. Vos données ne répondent pas aux critères d'une méthode statistique , par exemple, leur distribution est biaisée alors que cela devrait être normal. Dans certains cas, ce n’est pas vraiment un problème , bien que ce soit parfois le cas. Des méthodes basées sur la simulation, comme le bootstrap, ont donc été inventées.

7. Tester un modèle théorique contre la réalité. Vous avez un modèle théorique qui décrit certains processus, par exemple la propagation d'une épidémie par le biais d'un réseau social. Vous pouvez utiliser le modèle pour générer des données afin de pouvoir comparer si les données simulées sont similaires aux données réelles. Lada Adamic donne plusieurs exemples d'une telle utilisation pour l'analyse de réseau social dans son cours Coursera (voir quelques démos ici ).

8. Générer des données "hypothèse 0". Vous générez de fausses données (aléatoires) afin de comparer les données réelles. S'il y avait des effets ou des tendances significatifs dans vos données, celles-ci devraient alors différer des données générées au hasard. Cette approche est préconisée par Buja et al. (2009) dans leur article "Inférence statistique pour l'analyse exploratoire de données et le diagnostic de modèle", dans lequel ils expliquent comment l'utilisation de tracés graphiques pourrait faciliter l'analyse exploratoire de données et le test d'hypothèses (voir aussi la documentation du package nullabor R mettant en œuvre ces idées).

Tim
la source
22

Je pense que la discussion de la réponse de TrynnaDoStat illustre bien le point: nous utilisons des simulations chaque fois que le problème est impossible à résoudre de manière analytique (par exemple les distributions postérieures de paramètres dans un modèle hiérarchique), ou lorsque nous sommes tout simplement trop ennuyés pour y mettre le temps. élaborer la solution de manière analytique.

D'après ce que j'ai observé sur ce site Web, le seuil de "suffisamment gênant pour simuler" varie considérablement d'un statisticien à l'autre. Des gens comme @whuber peuvent apparemment examiner un problème et voir immédiatement la solution, tandis que de simples mortels comme moi devront examiner attentivement le problème et peut-être lire un peu avant d'écrire une routine de simulation pour effectuer le travail difficile.

N'oubliez pas que les simulations ne sont pas nécessairement une panacée, car avec de grands ensembles de données, des modèles compliqués, ou les deux, vous passerez un temps considérable (sur ordinateur) à estimer et à vérifier votre simulation. Cela ne vaut certainement pas la peine si vous pouvez atteindre le même objectif avec une heure de réflexion.

Sycorax dit Réintégrer Monica
la source
14

Les simulations sont souvent effectuées lorsque vous ne pouvez pas obtenir un formulaire fermé pour quelque chose (comme une distribution) ou que vous voulez un moyen simple et rapide de l'obtenir.

XYβXF(β)=P(Y=1|X=1)-P(Y=1|X=0)ββF(β)

TrynnaDoStat
la source
Je n'appellerais pas les simulations "rapides", ce sont des méthodes exhaustives et prennent souvent beaucoup plus de temps que l'approche ML.
Tim
2
C'est beaucoup plus rapide que de dériver la distribution.
TrynnaDoStat le
3
À quelle fréquence exécutez-vous un algorithme ML pendant plus d'une semaine non-stop ..?
Tim
Tangent re: "la distribution du coefficient β pour X est normale" - je n'y avais pas trop réfléchi, mais après une simulation, je constate que ce n'est souvent pas le cas avec des sous-échantillons inférieurs à environ 500 et / ou avec des coefficients dont la moyenne est supérieure à une certaine force, disons, +/- 3. Ça vous va?
rolando2
La théorie MLE nous dit que, dans certaines conditions de régularité, la MLE est asymptotiquement normale. Ill ajouter ceci à ma réponse.
TrynnaDoStat le
11

Les simulations sont un excellent moyen de vérifier si vous pouvez obtenir des estimations utiles à partir d'un modèle.

Vous feriez ceci en générant / simulant de fausses données qui suivent la distribution impliquée par votre modèle. Ensuite, adaptez votre modèle à ces données. C'est un cas idéal: votre modèle est en réalité vrai. Donc, si l'ajustement est bruyant ou inexact, alors vous savez qu'il y a un problème avec la procédure d'estimation ou le modèle lui-même.

De même, vous pouvez simuler des données en utilisant le "mauvais" processus de génération de données et utiliser ces fausses données pour évaluer la manière dont vos estimations sont affectées par une violation des hypothèses du modèle. Ceci est souvent appelé analyse de sensibilité .

Ces points sont similaires aux points 2 et 8 de la réponse de Tim, et constituent également une version un peu plus ad hoc de la procédure dans la réponse de whuber.


Les simulations sont également utilisées pour effectuer une vérification prédictive de modèle, comme le préconisent Andrew Gelman et d'autres. Cela revient à reconnecter vos données de prédicteur dans le modèle, puis à simuler de fausses données de réponse à partir de la distribution implicite, pour voir si vos données simulées sont suffisamment proches (quel que soit le critère que vous utilisez) de la réalité.

Notez que ce n'est pas la même chose que de simplement calculer des valeurs ajustées. Dans un modèle de régression, par exemple, les valeurs ajustées sont des moyennes conditionnelles; pour exécuter un contrôle prédictif sur un modèle de régression, vous devez tirer une fois de la distribution gaussienne centrée sur chaque valeur ajustée.

shadowtalker
la source
6

Le cas le plus simple pour la simulation. Supposons que vous disposiez d'un modèle de prévision du nombre de défauts de paiement, ainsi que d'un modèle de pertes sur les prêts en défaut. Vous devez maintenant prévoir la perte totale résultant du produit des défauts et des pertes, compte tenu du défaut. Vous ne pouvez pas simplement multiplier les valeurs par défaut et les pertes sur valeurs par défaut pour obtenir les intervalles de confiance de la perte totale.

XjeX1X2

Ce document contient une description au niveau MBA de ce cas d’utilisation pour l’estimation des risques d’exploitation, dans laquelle vous disposez des distributions de fréquence et de montants des pertes, puis combinez-les pour obtenir la distribution totale des pertes.

Aksakal
la source