exponenta event banner

paretotails

Кусочное распределение с хвостами Парето

Описание

A paretotails объект - кусочное распределение с обобщёнными распределениями Парето (GPD) в хвостах.

A paretotails объект состоит из одного или двух GPD в хвостах и другого распределения в центре. Можно указать тип распределения для центра с помощью cdffun аргумент paretotails при создании объекта. Допустимые значения: 'ecdf', 'kernel'и дескриптор функции.

paretotails подходит для распределения типа cdffun к наблюдениям (x) и находит квантили, соответствующие нижней и верхней кумулятивным вероятностям хвоста (pl и puсоответственно). Затем, paretotails подходит два GPD к нижнему 100*pl процент наблюдений и верхний 100*(1–pu) процентов наблюдений, соответственно. Если x не имеет хотя бы двух различных наблюдений в хвосте, то paretotails не создает соответствующий хвостовой сегмент.

использовать функции объекта; boundary, segment, upperparams, и lowerparams для поиска характеристик распределения. lowerparams и upperparams возвращает параметры GPD в хвостах. boundary возвращает граничные точки между сегментами кусочного распределения, segment возвращает сегмент кусочного распределения, содержащий входные значения, и nsegments возвращает количество сегментов в объекте.

использовать функции объекта; cdf, icdf, pdf, и random для оценки распределения. Эти функции хорошо подходят для копулы и других имитаций Монте-Карло. pdf возвращает плотность GPD в хвостах и наклон кумулятивной функции распределения (cdf) в центре. Эти значения функции плотности вероятности (pdf) в центре обычно не являются хорошими оценками базовой плотности исходных данных.

Создание

Создание кусочно-распределенного объекта с помощью paretotails.

Описание

пример

pd = paretotails(x,pl,pu) возвращает кусочно-распределенный объект pd, которая состоит из эмпирического распределения в центре и обобщенных распределений Парето в хвостах. Укажите границы хвостов с помощью нижней и верхней кумулятивных вероятностей хвоста pl и puсоответственно.

пример

pd = paretotails(x,pl,pu,cdffun) определяет тип центрального сегмента распределения с помощью cdffun.

Входные аргументы

развернуть все

Входные данные, указанные как числовой вектор.

Типы данных: double

Более низкая кумулятивная вероятность хвоста, заданная как числовой скаляр в диапазоне [0,1]. Квантиль pl - граница наблюдений нижнего хвоста.

Если pl является 0 или x не имеет по крайней мере двух различных наблюдений в нижнем хвосте, то paretotails делит входные данные в x на две группы, центральную и верхнюю. В этом случае подогнанный кусочно-распределительный объект pd состоит из двух сегментов: эмпирического распределения в центре и GPD в верхнем хвосте.

Пример: 0.1

Типы данных: single | double

Кумулятивная вероятность верхнего хвоста, заданная как числовой скаляр в диапазоне [0,1]. Квантиль pu - граница наблюдений верхнего хвоста.

Если pu является 1 или x не имеет по крайней мере двух различных наблюдений в верхнем хвосте, то paretotails делит входные данные в x на две группы, центральную и нижнюю хвостовую. В этом случае подогнанный кусочно-распределительный объект pd состоит из двух сегментов: эмпирического распределения в центре и GPD в нижнем хвосте.

Пример: 0.9

Типы данных: single | double

Тип центрального сегмента распределения, указанный как 'ecdf', 'kernel'или дескриптор функции.

СтоимостьОписание
'ecdf'

Интерполированный эмпирический cdf.

paretotails использует значения в x в качестве средних точек на вертикальных шагах эмпирического cdf и вычисляет оценки для точек между значениями в x линейной интерполяцией. Дополнительные сведения о поиске интерполированного эмпирического cdf см. в разделе Кусочно-линейная непараметрическая оценка CDF.

'kernel'

Интерполированная оценка сглаживания ядра cdf.

paretotails использует ksdensity функция для поиска оценок cdf для 100 точек в диапазоне xи использует линейную интерполяцию для вычисления оценок для точек между 100 точками.

'kernel' эквивалентно заданию дескриптора функции fun = @(x)ksdensity(x,'function','cdf');.

дескриптор функции

Интерполированные оценки с использованием указанной функции.

paretotails использует дескриптор для функции формы [p,xi] = fun(x) который принимает вектор входных данных x и возвращает вектор p значений cdf и вектора xi точек оценки. Значения в xi должны быть отсортированы и различны, но не должны равняться значениям в x. paretotails функция вычисляет оценки cdf для точек между значениями в xi линейной интерполяцией.

paretotails использование cdffun для вычисления квантилей, соответствующих pl и pu.

Пример: 'kernel'

Свойства

развернуть все

Это свойство доступно только для чтения.

Количество сегментов, включая центральный сегмент и конечные сегменты в paretotail , указанный как скаляр. NumSegments равно 3, 2 или 1, если число хвостовых сегментов в объекте равно 2, 1 или 0 соответственно.

Типы данных: double

Это свойство доступно только для чтения.

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

Параметр местоположения нижнего конца GPD равен квантилю pl. Используйте boundary для возврата параметра местоположения. Например, выполнить [p,q] = boundary(pd), где pd является paretotails объект. q(1) является параметром местоположения.

Типы данных: single | double

Это свойство доступно только для чтения.

Параметры GPD верхнего хвоста, соответствующие верхним экстремальным наблюдениям в x, задается как числовой вектор. Первое значение является параметром формы, а второе - параметром масштаба GPD.

Параметр местоположения верхнего конца GPD равен квантилю pu. Используйте boundary для возврата параметра местоположения. Например, выполнить [p,q] = boundary(pd), где pd является paretotails объект. q(2) является параметром местоположения.

Типы данных: single | double

Функции объекта

boundaryКусочные границы распределения
cdfКумулятивная функция распределения
icdfФункция обратного кумулятивного распределения
lowerparamsПараметры нижнего хвоста Парето
nsegmentsКоличество сегментов в кусочном распределении
pdfФункция плотности вероятности
randomСлучайные числа
segmentКусочные сегменты распределения, содержащие входные значения
upperparamsПараметры верхнего хвоста Парето

Примеры

свернуть все

Создайте образец набора данных и поместите кусочное распределение с хвостами Парето в данные. Укажите эмпирическое распределение для центра с помощью paretotails с настройками по умолчанию.

Создайте набор данных выборки, содержащий 100 случайных чисел из распределения t с 3 степенями свободы.

rng('default');  % For reproducibility
t = trnd(3,100,1);

Создать paretotails объект путем подгонки кусочного распределения к t. Укажите границы хвостов с использованием кумулятивной вероятности нижнего и верхнего хвоста, чтобы подогнанный объект состоял из эмпирического распределения для среднего 80% набора данных и GPD для нижнего и верхнего 10% набора данных.

pd = paretotails(t,0.1,0.9)
pd = 
Piecewise distribution with 3 segments
      -Inf < x < -1.84875    (0 < p < 0.1): lower tail, GPD(0.183032,1.00347)
   -1.84875 < x < 2.07662  (0.1 < p < 0.9): interpolated empirical cdf
        2.07662 < x < Inf    (0.9 < p < 1): upper tail, GPD(0.333239,1.19705)

Каждая строка отображения объекта показывает сводку по каждому сегменту, включая параметры GPD (параметры формы и масштаба) и граничные значения в квантилях и кумулятивных вероятностях. использовать функции объекта; boundary, lowerparams, и upperparams для возврата этих значений.

Вы можете использовать nsegments для возврата количества сегментов и segment для возврата сегмента, содержащего входные значения.

Также можно использовать функции распределения. cdf, icdf, pdf, и random для оценки распределения и генерации случайных выборок.

Постройте график cdf распределения t и cdf распределения paretotails объект на той же фигуре.

x = linspace(-5,5);
plot(x,tcdf(x,3),'r--')
hold on
plot(x,cdf(pd,x),'b-')

Найти граничные точки между сегментами paretotails объект с помощью boundaryи отметьте точки на рисунке.

[p,q] = boundary(pd);
plot(q,p,'bo')
legend('t Distribution','Pareto Tails Object','Boundary Points','Location','best')
hold off

Figure contains an axes. The axes contains 3 objects of type line. These objects represent t Distribution, Pareto Tails Object, Boundary Points.

Создайте образец набора данных и поместите кусочное распределение с хвостами Парето в данные. Подгонка центрального сегмента с помощью paretotails с дескриптором функции.

Создайте образец набора данных, содержащего 20% отклонений.

rng('default');  % For reproducibility
left_tail = -exprnd(1,100,1);
right_tail = exprnd(5,100,1);
center = randn(800,1);
x = [left_tail;center;right_tail];

Определение дескриптора функции с помощью ksdensity для указания значения полосы пропускания по умолчанию.

myfun1 = @(x)ksdensity(x,'Bandwidth',.1,'Function','cdf');

Создать paretotails объект путем подгонки кусочного распределения с указанным оценщиком сглаживания ядра к x. Укажите границы хвостов с использованием кумулятивной вероятности нижнего и верхнего хвоста, чтобы подогнанный объект состоял из оценщика ядра для среднего 80% набора данных и GPD для нижнего и верхнего 10% набора данных.

pd1 = paretotails(x,0.1,0.9,myfun1)
pd1 = 
Piecewise distribution with 3 segments
      -Inf < x < -1.35204    (0 < p < 0.1): lower tail, GPD(0.0104112,0.54947)
   -1.35204 < x < 1.80824  (0.1 < p < 0.9): function: @(x)ksdensity(x,'Bandwidth',.1,'Function','cdf')
        1.80824 < x < Inf    (0.9 < p < 1): upper tail, GPD(0.227542,3.10586)

Можно также использовать параметрическое распределение для центрального сегмента. Определите функцию, которая соответствует нормальному распределению данных и возвращает значения cdf, и передайте дескриптор функции при создании paretotails объект.

pd2 = paretotails(x,0.1,0.9,@myfun2)
pd2 = 
Piecewise distribution with 3 segments
      -Inf < x < -2.70875    (0 < p < 0.1): lower tail, GPD(-0.358104,0.831855)
   -2.70875 < x < 3.52195  (0.1 < p < 0.9): function: myfun2
        3.52195 < x < Inf    (0.9 < p < 1): upper tail, GPD(-0.0661815,5.04694)

function [p,xi] = myfun2(x)
    pd = fitdist(x,'Normal');
    xi = linspace(min(x),max(x),length(x)*2);
    p = cdf(pd,xi);
end
Представлен в R2007a