Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Generar números aleatorios utilizando la distribución triangular

En este ejemplo se muestra cómo crear un objeto de distribución de probabilidad triangular basado en datos de ejemplo y generar números aleatorios para utilizarlos en una simulación.

Paso 1. Datos de muestra de entrada.

Introduzca el vector de datos, que contiene el período de tiempo observado (en segundos) que 10 coches diferentes se detuvieron en una cabina de peaje de la carretera.time

time = [6 14 8 7 16 8 23 6 7 15];

Los datos muestran que, mientras la mayoría de los coches se detuvieron durante 6 a 16 segundos, un valor atípico se detuvo durante 23 segundos.

Paso 2. Estimar los parámetros de distribución.

Calcule los parámetros de distribución triangular de los datos de la muestra.

lower = min(time); peak = median(time); upper = max(time);

Una distribución triangular proporciona una representación simplista de la distribución de probabilidad cuando los datos de muestra están limitados. Calcule los límites inferior y superior de la distribución encontrando los valores mínimos y máximos de los datos de la muestra. Para el parámetro Peak, la mediana podría proporcionar una mejor estimación del modo que la media, ya que los datos incluyen un valor atípico.

Paso 3. Cree un objeto de distribución de probabilidad.

Cree un objeto de distribución de probabilidad triangular utilizando los valores de parámetro estimados.

pd = makedist('Triangular','a',lower,'b',peak,'c',upper)
pd =    TriangularDistribution  A = 6, B = 8, C = 23  

Calcule y trace el PDF de la distribución triangular.

x = 0:.1:230; y = pdf(pd,x); plot(x,y) title('Time Spent at Tollbooth') xlabel('Time (seconds)') xlim([0 30])

La trama muestra que esta distribución triangular es sesgada a la derecha. Sin embargo, dado que el valor máximo estimado es la mediana de la muestra, la distribución debe ser simétrica sobre el pico. Debido a su sesgo, este modelo podría, por ejemplo, generar números aleatorios que parezcan inusualmente altos en comparación con los datos de muestra iniciales.

Paso 4. Genere números aleatorios.

Genere números aleatorios de esta distribución para simular el flujo de tráfico futuro a través de la cabina de peaje.

rng('default');  % For reproducibility r = random(pd,10,1)
r = 10×1

   16.1265
   18.0987
    8.0796
   18.3001
   13.3176
    7.8211
    9.4360
   12.2508
   19.7082
   20.0078

Los valores devueltos en son el tiempo en segundos que los próximos 10 coches simulados pasan en la cabina de peaje.r Estos valores parecen altos en comparación con los valores del vector de datos original porque el valor atípico sesgada la distribución a la derecha.time Usar el segundo valor más alto como parámetro de límite superior podría mitigar los efectos del valor atípico y generar un conjunto de números aleatorios más similar a los datos de muestra iniciales.

Paso 5. Revise los parámetros estimados.

Calcule el límite superior de la distribución utilizando el segundo valor más grande de los datos de la muestra.

sort_time = sort(time,'descend'); secondLargest = sort_time(2);

Paso 6. Cree un nuevo objeto de distribución y trace el pdf.

Cree un nuevo objeto de distribución de probabilidad triangular utilizando los parámetros estimados revisados y trace su PDF.

figure pd2 = makedist('Triangular','a',lower,'b',peak,'c',secondLargest); y2 = pdf(pd2,x); plot(x,y2,'LineWidth',2) title('Time Spent at Tollbooth') xlabel('Time (seconds)')  xlim([0 30])

La trama muestra que esta distribución triangular todavía es ligeramente sesgada a la derecha. Sin embargo, es mucho más simétrico sobre el pico que la distribución que usó el valor de datos de muestra máximo para estimar el límite superior.

Paso 7. Genere nuevos números aleatorios.

Genere nuevos números aleatorios a partir de la distribución revisada.

rng('default'); % For reproducibility r2 = random(pd2,10,1)
r2 = 10×1

   12.1501
   13.2547
    7.5937
   13.3675
   10.5768
    7.3967
    8.4026
    9.9792
   14.1562
   14.3240

Estos nuevos valores se asemejan más estrechamente a los del vector de datos original.time También están más cerca de la mediana de la muestra que los números aleatorios generados por la distribución que utilizaron el valor atípico para estimar su límite superior. En este ejemplo no se quita el valor atípico de los datos de ejemplo al calcular la mediana. Otras opciones para la estimación de parámetros incluyen la eliminación de valores atípicos de los datos de ejemplo, o el uso de la media o el modo de los datos de ejemplo como valor de pico.

Consulte también

| |

Temas relacionados