Ejercicio 56: Simulación de una Variable Aleatoria usando la Transformada Inversa

En este ejercicio, se explorará la técnica de transformación inversa para generar variables aleatorias de una distribución exponencial a partir de una distribución uniforme. Este método es fundamental en la simulación de variables aleatorias y en la generación de datos en ciencia de datos.

Objetivos

  • Implementar la técnica de transformación inversa para generar variables aleatorias de una distribución exponencial.
  • Comparar los resultados obtenidos con la función numpy.random.exponential().

Entrada de Datos

  • Distribución uniforme ( U \sim U(0,1) ).

Código Base

import numpy as np
import matplotlib.pyplot as plt

# Parámetro de la distribución exponencial
lambda_param = 1.0

# Generar números aleatorios de una distribución uniforme
uniform_random_numbers = np.random.uniform(0, 1, 1000)

# TODO: Implementar la transformación inversa para obtener una distribución exponencial
# exponential_random_numbers = ...

# Comparar con numpy.random.exponential
numpy_exponential_numbers = np.random.exponential(1/lambda_param, 1000)

# Visualización de los resultados
plt.hist(exponential_random_numbers, bins=30, alpha=0.5, label='Transformada Inversa')
plt.hist(numpy_exponential_numbers, bins=30, alpha=0.5, label='Numpy Exponential')
plt.legend(loc='upper right')
plt.title('Comparación de Distribuciones Exponenciales')
plt.show()

Tareas

  1. Implementar la técnica de transformación inversa para convertir los números aleatorios uniformes en números aleatorios exponenciales.
  2. Comparar visualmente los resultados obtenidos con la función numpy.random.exponential().

Pruebas

Ejemplo de prueba para verificar la implementación:

# Prueba de la transformación inversa
uniform_random_numbers_test = np.array([0.1, 0.5, 0.9])
# TODO: Implementar la transformación inversa para los valores de prueba
# exponential_random_numbers_test = ...
print(exponential_random_numbers_test)

Pregunta de Reflexión

¿Por qué la técnica de transformación inversa es útil en la generación de datos?