exponentiel et gamma

Lynxoria · December 06, 2023
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import expon

# Fonction pour générer des variables aléatoires exponentielles
def generate_exponential_variables(lambda_val, Nmc):
    U = np.random.rand(Nmc)
    X = -1 / lambda_val * np.log(1 - U)
    return X

# Données 1
lambda1 = 2 
Nmc1 = 10000

# Générer les variables aléatoires exponentielles
X_values1 = generate_exponential_variables(lambda1, Nmc1)

mean_empirical1 = np.mean(X_values1)
var_empirical1 = np.var(X_values1)

mean_theoretical1 = 1 / lambda1
var_theoretical1 = 1 / (lambda1 ** 2)

print("Pour lambda =", lambda1, "et Nmc =", Nmc1)
print("Espérance empirique:", mean_empirical1)
print("Espérance théorique:", mean_theoretical1)
print("Variance empirique:", var_empirical1)
print("Variance théorique:", var_theoretical1)

# fonction répartition
x_range1 = np.linspace(0, 5, 100)
cdf_theoretical1 = expon.cdf(x_range1, scale=1/lambda1)
cdf_empirical1 = np.arange(1, Nmc1 + 1) / Nmc1

plt.figure(figsize=(12, 4))

plt.subplot(1, 2, 1)
plt.plot(x_range1, cdf_theoretical1, label='Théorique')
plt.step(np.sort(X_values1), cdf_empirical1, label='Empirique', where='post')
plt.title('Fonction de répartition')
plt.legend()

# fonction densité 
plt.subplot(1, 2, 2)
plt.hist(X_values1, bins=20, density=True, label='Empirique')
plt.plot(x_range1, expon.pdf(x_range1, scale=1/lambda1), label='Théorique')
plt.title('Fonction de densité')
plt.legend()

plt.show()

# Données 2
lambda1 = 100 
Nmc1 = 10000

# Générer les variables aléatoires exponentielles
X_values1 = generate_exponential_variables(lambda1, Nmc1)

mean_empirical1 = np.mean(X_values1)
var_empirical1 = np.var(X_values1)

mean_theoretical1 = 1 / lambda1
var_theoretical1 = 1 / (lambda1 ** 2)

print("Pour lambda =", lambda1, "et Nmc =", Nmc1)
print("Espérance empirique:", mean_empirical1)
print("Espérance théorique:", mean_theoretical1)
print("Variance empirique:", var_empirical1)
print("Variance théorique:", var_theoretical1)

# fonction répartition
x_range1 = np.linspace(0, 5, 100)
cdf_theoretical1 = expon.cdf(x_range1, scale=1/lambda1)
cdf_empirical1 = np.arange(1, Nmc1 + 1) / Nmc1

plt.figure(figsize=(12, 4))

plt.subplot(1, 2, 1)
plt.plot(x_range1, cdf_theoretical1, label='Théorique')
plt.step(np.sort(X_values1), cdf_empirical1, label='Empirique', where='post')
plt.title('Fonction de répartition')
plt.legend()

# fonction densité 
plt.subplot(1, 2, 2)
plt.hist(X_values1, bins=20, density=True, label='Empirique')
plt.plot(x_range1, expon.pdf(x_range1, scale=1/lambda1), label='Théorique')
plt.title('Fonction de densité')
plt.legend()

plt.show()

def generate_gamma_variables(alpha, beta, Nmc):
    U = np.random.rand(Nmc)
    X = beta * (-np.log(U))**(1/alpha)
    return X

# Données 3
alpha1 = 9
beta1 = 2
Nmc1 = 10000

# Générer les variables aléatoires Gamma
X_values1 = generate_gamma_variables(alpha1, beta1, Nmc1)

mean_empirical1 = np.mean(X_values1)
var_empirical1 = np.var(X_values1)

mean_theoretical1 = alpha1 / beta1
var_theoretical1 = alpha1 / (beta1**2)

print("Pour alpha =", alpha1, ", beta =", beta1, "et Nmc =", Nmc1)
print("Espérance empirique:", mean_empirical1)
print("Espérance théorique:", mean_theoretical1)
print("Variance empirique:", var_empirical1)
print("Variance théorique:", var_theoretical1)

# fonction repartion
x_range1 = np.linspace(0, 15, 100)
cdf_theoretical1 = gamma.cdf(x_range1, alpha1, scale=1/beta1)
cdf_empirical1 = np.arange(1, Nmc1 + 1) / Nmc1

plt.figure(figsize=(12, 4))

plt.subplot(1, 2, 1)
plt.plot(x_range1, cdf_theoretical1, label='Théorique')
plt.step(np.sort(X_values1), cdf_empirical1, label='Empirique', where='post')
plt.title('Fonction de répartition')
plt.legend()

# fonction densite
plt.subplot(1, 2, 2)
plt.hist(X_values1, bins=20, density=True, label='Empirique')
plt.plot(x_range1, gamma.pdf(x_range1, alpha1, scale=1/beta1), label='Théorique')
plt.title('Fonction de densité')
plt.legend()

plt.show()
Output

Comments

Please sign up or log in to contribute to the discussion.