Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Vecteurs Aléatoires | Déclarations Supplémentaires de la Théorie des Probabilités
Théorie Avancée des Probabilités

book
Vecteurs Aléatoires

Vecteurs aléatoires représentent plusieurs variables aléatoires liées regroupées ensemble. Ils sont couramment utilisés en Data Science pour modéliser des systèmes avec des quantités aléatoires interconnectées, comme des ensembles de données où chaque vecteur correspond à un point de données.

La distribution de probabilité d'un vecteur aléatoire est décrite par sa fonction de distribution conjointe, qui montre comment toutes les variables du vecteur sont distribuées simultanément.

Pour créer un vecteur aléatoire simple avec n dimensions :

  1. Générer n variables aléatoires indépendantes, chacune suivant sa fonction de distribution ;

  2. Utiliser ces variables comme coordonnées pour le vecteur ;

  3. Appliquer la règle de multiplication pour déterminer la distribution conjointe : f = f1 * f2 * ... * fn.

Vecteurs aléatoires discrets

Pour les valeurs discrètes, la distribution conjointe est toujours décrite en utilisant la PMF, où la fonction prend une combinaison de valeurs de coordonnées et retourne leur probabilité.

Par exemple, considérez le lancer de deux pièces et l'enregistrement des résultats dans un vecteur. La PMF pour ce vecteur ressemblera à :

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import binom

# Define parameters for the binomial distribution
n = 1 # Number of trials
p = 0.5 # Probability of success

# Generate values for the two dimensions
x = np.arange(0, n + 1)
y = np.arange(0, n + 1)
X, Y = np.meshgrid(x, y)

# Compute the PMF for each pair of values in the grid
pmf = binom.pmf(X, n, p) * binom.pmf(Y, n, p)
print(pmf)
12345678910111213141516
import numpy as np import matplotlib.pyplot as plt from scipy.stats import binom # Define parameters for the binomial distribution n = 1 # Number of trials p = 0.5 # Probability of success # Generate values for the two dimensions x = np.arange(0, n + 1) y = np.arange(0, n + 1) X, Y = np.meshgrid(x, y) # Compute the PMF for each pair of values in the grid pmf = binom.pmf(X, n, p) * binom.pmf(Y, n, p) print(pmf)
copy

Vecteurs aléatoires continus

Pour les variables continues, le PDF multivarié est utilisé :

import numpy as np
import matplotlib.pyplot as plt

# Define mean and covariance matrix for the Gaussian distribution
mu = np.array([0, 0]) # Mean vector
cov = np.array([[1, 0], [0, 1]]) # Covariance matrix

# Generate values for the two dimensions
x = np.linspace(-3, 3, 100)
y = np.linspace(-3, 3, 100)
X, Y = np.meshgrid(x, y)
pos = np.dstack((X, Y))

# Compute the PDF for each pair of values in the grid
pdf = (1 / (2 * np.pi * np.sqrt(np.linalg.det(cov)))) * np.exp(-0.5 * np.sum(np.dot(pos - mu, np.linalg.inv(cov)) * (pos - mu), axis=2))

# Plot the 2D PDF
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, pdf, cmap='viridis')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('PDF')
ax.set_title('Two-dimensional Gaussian PDF')
plt.show()
12345678910111213141516171819202122232425
import numpy as np import matplotlib.pyplot as plt # Define mean and covariance matrix for the Gaussian distribution mu = np.array([0, 0]) # Mean vector cov = np.array([[1, 0], [0, 1]]) # Covariance matrix # Generate values for the two dimensions x = np.linspace(-3, 3, 100) y = np.linspace(-3, 3, 100) X, Y = np.meshgrid(x, y) pos = np.dstack((X, Y)) # Compute the PDF for each pair of values in the grid pdf = (1 / (2 * np.pi * np.sqrt(np.linalg.det(cov)))) * np.exp(-0.5 * np.sum(np.dot(pos - mu, np.linalg.inv(cov)) * (pos - mu), axis=2)) # Plot the 2D PDF fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.plot_surface(X, Y, pdf, cmap='viridis') ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('PDF') ax.set_title('Two-dimensional Gaussian PDF') plt.show()
copy

Remarque

Les caractéristiques des vecteurs aléatoires sont également données sous forme vectorielle : ce vecteur est constitué de coordonnées qui correspondent aux statistiques des coordonnées du vecteur original. Dans l'exemple ci-dessus, le vecteur mu correspond aux valeurs moyennes des coordonnées, cov correspond à la matrice de covariance d'un vecteur aléatoire bidimensionnel.

Vecteurs avec des coordonnées dépendantes

Mais il existe aussi des vecteurs avec des coordonnées dépendantes les unes des autres. Dans ce cas, nous ne pourrons plus définir la distribution conjointe comme le produit des distributions des coordonnées. Dans ce cas, la distribution conjointe est donnée en fonction de la connaissance de la zone de domaine ou de certaines informations supplémentaires sur les dépendances entre les coordonnées.

Examinons l'exemple d'échantillons gaussiens bidimensionnels avec des coordonnées dépendantes. La nature des dépendances sera déterminée à l'aide de la matrice de covariance (les éléments hors diagonale sont responsables des dépendances entre les coordonnées correspondantes) :

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import multivariate_normal

# Define mean vector and covariance matrix for the Gaussian distribution
mu = np.array([1, 3]) # Mean vector
cov = np.array([[4, -4], [-4, 5]]) # Covariance matrix

# Generate samples from the Gaussian distribution
samples = multivariate_normal.rvs(mean=mu, cov=cov, size=1000)

# Plot the sampled data
plt.scatter(samples[:, 0], y = samples[:, 1])
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Samples from a Two-dimensional Gaussian Distribution with dependant coordinates')
plt.show()
1234567891011121314151617
import numpy as np import matplotlib.pyplot as plt from scipy.stats import multivariate_normal # Define mean vector and covariance matrix for the Gaussian distribution mu = np.array([1, 3]) # Mean vector cov = np.array([[4, -4], [-4, 5]]) # Covariance matrix # Generate samples from the Gaussian distribution samples = multivariate_normal.rvs(mean=mu, cov=cov, size=1000) # Plot the sampled data plt.scatter(samples[:, 0], y = samples[:, 1]) plt.xlabel('X') plt.ylabel('Y') plt.title('Samples from a Two-dimensional Gaussian Distribution with dependant coordinates') plt.show()
copy

Nous pouvons voir que ces coordonnées présentent une forte dépendance linéaire : à mesure que la coordonnée X augmente, la coordonnée Y diminue.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 5

Demandez à l'IA

expand
ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

some-alt