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

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

Шаг 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 object. The axes object 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 object. The axes object 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. Они также ближе к демонстрационной медиане, чем случайные числа, сгенерированные распределением, которое использовало выброс, чтобы оценить его верхний предел. Этот пример не удаляет выброс из выборочных данных при вычислении медианы. Другие опции для оценки параметра включают выбросы удаления от выборочных данных в целом или использование среднего значения или режима выборочных данных как пиковое значение.

Смотрите также

| |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте