paretotails

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

Описание

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

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, смотрите A Piecewise Linear Nonparametric CDF Estimate.

'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. The 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Параметры верхнего хвоста Парето

Примеры

свернуть все

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

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