exponenta event banner

Создание случайных чисел с помощью треугольного распределения

В этом примере показано, как создать объект распределения треугольной вероятности на основе данных выборки и создать случайные числа для использования в моделировании.

Шаг 1. Входные данные выборки.

Введите вектор данных time, которая содержит наблюдаемый промежуток времени (в секундах), в течение которого 10 различных автомобилей останавливались на автодорожной будке.

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

Данные показывают, что, в то время как большинство автомобилей остановились на 6-16 секунд, один выброс остановился на 23 секунды.

Шаг 2. Оценка параметров распределения.

Оцените параметры треугольного распределения на основе данных образца.

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

Треугольное распределение обеспечивает упрощенное представление распределения вероятности, когда данные выборки ограничены. Оцените нижнюю и верхнюю границы распределения, найдя минимальное и максимальное значения данных выборки. Для пикового параметра медиана может обеспечить лучшую оценку режима, чем среднее, поскольку данные включают отклонение.

Шаг 3. Создайте объект распределения вероятностей.

Создайте объект распределения треугольной вероятности с использованием оценочных значений параметров.

pd = makedist('Triangular','a',lower,'b',peak,'c',upper)
pd = 
  TriangularDistribution

A = 6, B = 8, C = 23

Вычислите и постройте график pdf треугольного распределения.

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

Figure contains an axes. The axes with title Time Spent at Tollbooth contains an object of type line.

График показывает, что это треугольное распределение скошено вправо. Однако, поскольку оцененное пиковое значение является средним значением выборки, распределение должно быть симметричным относительно пика. Из-за перекоса эта модель может, например, генерировать случайные числа, которые кажутся необычно высокими по сравнению с исходными данными выборки.

Шаг 4. Генерировать случайные числа.

Создайте случайные числа из этого распределения, чтобы смоделировать будущий поток трафика через будку.

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

Возвращенные значения в r - это время в секундах, которое следующие 10 моделируемых автомобилей проводят на платной будке. Эти значения кажутся высокими по сравнению со значениями в исходном векторе данных time потому что отклонение перекошило распределение вправо. Использование второго по величине значения в качестве параметра верхнего предела может смягчить последствия отклонения и создать набор случайных чисел, более похожих на исходные данные выборки.

Шаг 5. Изменение расчетных параметров.

Оцените верхнюю границу распределения, используя второе наибольшее значение в выборке данных.

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

Шаг 6. Создайте новый объект распределения и распечатайте pdf.

Создайте новый объект распределения треугольной вероятности с использованием пересмотренных расчетных параметров и постройте график в формате 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])

Figure contains an axes. The axes with title Time Spent at Tollbooth contains an object of type line.

На сюжете видно, что это треугольное распределение всё ещё немного перекошено вправо. Однако она гораздо более симметрична относительно пика, чем распределение, которое использовало максимальное значение данных выборки для оценки верхнего предела.

Шаг 7. Создание новых случайных чисел.

Создание новых случайных чисел из пересмотренного распределения.

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

Эти новые значения больше напоминают значения исходного вектора данных. time. Они также ближе к среднему значению выборки, чем случайные числа, генерируемые распределением, которое использовало отклонение для оценки своего верхнего предела. Этот пример не удаляет отклонение из данных выборки при вычислении медианы. Другие варианты оценки параметров включают в себя удаление отклонений от данных выборки полностью или использование среднего значения или режима данных выборки в качестве пикового значения.

См. также

| |

Связанные темы