paretotails

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

Описание

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

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

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

Используйте объектные функции boundary, segment, upperparams, и lowerparams найти характеристики распределения. lowerparams и upperparams возвратите параметры GPDs в хвостах. 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% набора данных и GPDs для более низких и верхних 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

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