Подбор непараметрического распределения с помощью решеток Парето

Этот пример показывает аппроксимацию непараметрического распределения вероятностей к выборочным данным с помощью хвостов Парето, чтобы сгладить распределение в хвостах.

Шаг 1. Сгенерируйте выборочные данные.

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

rng('default')  % For reproducibility
left_tail = -exprnd(1,10,1);
right_tail = exprnd(5,10,1);
center = randn(80,1);
data = [left_tail;center;right_tail];

Данные содержат 80% значений от стандартного нормального распределения, 10% от экспоненциального распределения со средним значением 5 и 10% от экспоненциального распределения со средним значением -1. По сравнению со стандартным нормальным распределением экспоненциальные значения с большей вероятностью являются выбросами, особенно в верхнем хвосте.

Шаг 2. Подгонка распределений вероятностей к данным.

Подбор нормального распределения и t распределения шкалы местоположения к данным и построение графика для визуального сравнения.

probplot(data);
p = fitdist(data,'tlocationscale');
h = probplot(gca,p); 
set(h,'color','r','linestyle','-');
title('Probability Plot')
legend('Normal','Data','t location-scale','Location','SE')

Figure contains an axes. The axes with title Probability Plot contains 3 objects of type line. These objects represent Normal, Data, t location-scale.

Оба распределения, по-видимому, подходят достаточно хорошо в центре, но ни нормальное распределение, ни распределение по шкале t местоположения не очень хорошо соответствуют хвостам.

Шаг 3. Сгенерируйте эмпирическое распределение.

Чтобы получить лучшую подгонку, используйте ecdf чтобы сгенерировать эмпирический cdf на основе выборочных данных.

figure
ecdf(data)

Figure contains an axes. The axes contains an object of type stair.

Эмпирическое распределение обеспечивает идеальную подгонку, но выбросы делают хвосты очень дискретными. Случайные выборки, сгенерированные из этого распределения с использованием метода инверсии, могут включать, например, значения около 4,33 и 9,25, но нет значений между ними.

Шаг 4. Подгонка распределения с помощью хвостов Парето.

Использование paretotails сгенерировать эмпирический cdf для середины 80% данных и подгонять обобщенные распределения Парето к нижним и верхним 10%.

pfit = paretotails(data,0.1,0.9)
pfit = 
Piecewise distribution with 3 segments
      -Inf < x < -1.24623    (0 < p < 0.1): lower tail, GPD(-0.334156,0.798745)
   -1.24623 < x < 1.48551  (0.1 < p < 0.9): interpolated empirical cdf
        1.48551 < x < Inf    (0.9 < p < 1): upper tail, GPD(1.23681,0.581868)

Чтобы получить лучшую подгонку, paretotails подбирает распределение путем прокалывания ecdf или ядерного распределения в центре выборки и сглаживает обобщенные распределения Парето (GPDs) в хвостах. Использование paretotails для создания paretotails объект распределения вероятностей. Вы можете получить доступ к информации о подгонке и выполнить дальнейшие вычисления по объекту, используя функции объекта paretotails объект. Для примера можно вычислить cdf или сгенерировать случайные числа из распределения.

Шаг 5. Вычислите и постройте график cdf.

Вычислите и постройте график cdf установленного paretotails распределение.

x = -4:0.01:10;
plot(x,cdf(pfit,x))

Figure contains an axes. The axes contains an object of type line.

The paretotails cdf тесно подходит для данных, но более плавен в хвостах, чем ecdf, сгенерированный на шаге 3.

См. также

| |

Похожие темы