Générer des variables aléatoires multivariées

Simulations de Monte-Carlo en Python

Izzy Weber

Curriculum Manager, DataCamp

Échantillonner des distributions multivariées

Loi multinomiale

  • Chaque variable suit une loi binomiale
  • Leurs probabilités totalisent un

 

Exemple : simuler des lancers d'une pièce biaisée

scipy.stats.multinomial.rvs()
Simulations de Monte-Carlo en Python

Échantillonner des distributions multivariées

Loi normale multivariée

  • Chaque variable suit une loi normale
  • Variables corrélées ou non entre elles

 

Exemple : simuler prix et demande

scipy.stats.multivariate_normal.rvs()
Simulations de Monte-Carlo en Python

Échantillonner des lois multinomiales

Simulation : .rvs(n, p, size)

  • $n$ : 50
  • $p$ : [0.2, 0.8]
  • size : 500
results = st.multinomial.rvs(50,
    [0.2, 0.8], size=500)

df_results=pd.DataFrame( {"Head":results[:, 0], "Tail":results[:, 1]}) sns.pairplot(df_results)

Nuage de paires pour l'échantillonnage d'une pièce biaisée

Simulations de Monte-Carlo en Python

Échantillonner des lois normales multivariées

Simulation : .rvs(mean, size)

  • mean : [2, 6]
  • size : 500
results=st.multivariate_normal.rvs(
    mean=[2, 6], size=500)

df_results=pd.DataFrame( {"Price":results[:, 0], "Demand":results[:, 1]}) sns.pairplot(df_results)

Nuage de paires : résultats d'échantillonnage prix et demande

Simulations de Monte-Carlo en Python

Matrice de covariance

  • Rend compte de la variance et des covariances des variables
  • Définition avec deux variables aléatoires $x$ et $y$ :

structure de la matrice de covariance

Exemple :

df_historical.cov()
|        | Price     | Demand   |
|--------|-----------|----------|
| Price  | 0.920545  | -0.85578 |
| Demand | -0.855780 | 0.98417  |
Simulations de Monte-Carlo en Python

Échantillonnage normal multivarié avec covariance définie

Simulation : .rvs(mean, size)

  • mean : [2, 6]
  • size : 500
  • cov : np.array([[1, -0.9], [-0.9, 1]])
cov_mat = np.array([[1,-0.9], [-0.9,1]])
results = st.multivariate_normal.rvs(
    mean=[2,6], size=500, cov=cov_mat)

df_results = pd.DataFrame( {"Price":results[:,0], "Demand":results[:,1]}) sns.pairplot(df_results)

Nuage de paires des résultats

Simulations de Monte-Carlo en Python

Passons à la pratique !

Simulations de Monte-Carlo en Python

Preparing Video For Download...