Соответствуйте непараметрическому распределению хвостами Парето

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

Шаг 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')

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

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

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

figure
ecdf(data)

Эмпирическое распределение обеспечивает совершенную подгонку, но выбросы делают хвосты очень дискретными. Случайные выборки, сгенерированные от этого распределения с помощью метода инверсии, могут включать, например, значения около 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))

paretotails cdf тесно соответствует данным, но более сглажен в хвостах, чем ecdf, сгенерированный на Шаге 3.

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

| |

Похожие темы