Main Content

paretotails

パレート分布の裾をもつ区分的分布

説明

paretotails オブジェクトは、裾が一般化パレート分布 (GPD) になっている区分的分布です。

paretotails オブジェクトは、裾についての 1 つまたは 2 つの GPD と中央についての別の分布から構成されます。中央の分布タイプは、オブジェクトを作成するときに paretotails の引数 cdffun を使用することにより指定できます。有効な値は、'ecdf''kernel' および関数ハンドルです。

paretotails は、cdffun タイプの分布を観測値 (x) に当てはめ、下裾と上裾の累積確率 (それぞれ pl および pu) に対応する分位数を求めます。そして、paretotails は、2 つの GPD を観測値の下位 100*pl パーセントと観測値の上位 100*(1–pu) パーセントにそれぞれ当てはめます。2 つ以上の異なる観測値が x の裾に含まれていない場合、paretotails は対応する裾のセグメントを作成しません。

分布特性を調べるには、オブジェクト関数 boundarysegmentupperparams および lowerparams を使用します。lowerparamsupperparams は、裾の GPD のパラメーターを返します。boundary は、区分的分布のセグメント間の境界点を返します。segment は、入力値が含まれている区分的分布のセグメントを返します。nsegments は、オブジェクト内のセグメント数を返します。

分布を評価するには、オブジェクト関数 cdficdfpdf および 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 の分位数は、下裾の観測値の境界です。

pl0 であるか、x の下裾に 2 つ以上の異なる観測値が含まれていない場合、paretotailsx 内の入力データを中央と上裾の 2 つのグループに分割します。この場合、当てはめられた区分的分布オブジェクト pd は、中央の経験的分布および上裾の GPD という 2 つのセグメントから構成されます。

例: 0.1

データ型: single | double

上裾の累積確率。範囲 [0,1] の数値スカラーを指定します。pu の分位数は、上裾の観測値の境界です。

pu1 であるか、x の上裾に 2 つ以上の異なる観測値が含まれていない場合、paretotailsx 内の入力データを中央と下裾の 2 つのグループに分割します。この場合、当てはめられた区分的分布オブジェクト pd は、中央の経験的分布および下裾の GPD という 2 つのセグメントから構成されます。

例: 0.9

データ型: single | double

中央の分布セグメントのタイプ。'ecdf''kernel' または関数ハンドルを指定します。

説明
'ecdf'

内挿した経験的 cdf。

paretotails は、x 内の値を経験的分布の垂直ステップの中間点として使用し、線形内挿によって x 内の値の間で点の推定値を計算します。内挿された経験的 cdf を求める方法の詳細については、区分的線形ノンパラメトリック CDF 推定を参照してください。

'kernel'

内挿した cdf のカーネル平滑化推定。

paretotails は、関数 ksdensity を使用して x の範囲内にある 100 個の点について cdf の推定を求め、線形内挿を使用して 100 個の点の間で点の推定値を計算します。

'kernel' は、関数ハンドル fun = @(x)ksdensity(x,'function','cdf'); を指定することと等価です。

関数ハンドル

指定された関数を使用して内挿した推定値。

paretotails は、[p,xi] = fun(x) という形式の関数に対するハンドルを使用します。この関数では、入力データ ベクトル x を受け入れ、累積分布関数の値が含まれているベクトル p と評価した点が含まれているベクトル xi を返します。xi 内の値は、並べ替えられていなければなりません。また、x 内の値と等しい必要はありませんが、それぞれ異なる値でなければなりません。関数 paretotails は、線形内挿によって xi 内の値の間で点の cdf 推定値を計算します。

paretotails は、cdffun を使用して pl および pu に対応する分位数を計算します。

例: 'kernel'

プロパティ

すべて展開する

この プロパティ は読み取り専用です。

paretotail オブジェクトの中央のセグメントと裾のセグメントを含むセグメント数。スカラーを指定します。オブジェクトにおける裾のセグメント数が 2、1 または 0 である場合、NumSegments はそれぞれ 3、2 または 1 です。

データ型: double

この プロパティ は読み取り専用です。

x の下限の観測値に当てはめた、下裾の GPD のパラメーター。数値ベクトルを指定します。1 番目の値は GPD の形状パラメーター、2 番目の値はスケール パラメーターです。

下裾の GPD の位置パラメーターは、pl の分位数です。位置パラメーターを取得するには、関数 boundary を使用します。たとえば、[p,q] = boundary(pd) を実行します。pdparetotails オブジェクト、q(1) は位置パラメーターです。

データ型: single | double

この プロパティ は読み取り専用です。

x の上限の観測値に当てはめた、上裾の GPD のパラメーター。数値ベクトルを指定します。1 番目の値は GPD の形状パラメーター、2 番目の値はスケール パラメーターです。

上裾の GPD の位置パラメーターは、pu の分位数です。位置パラメーターを取得するには、関数 boundary を使用します。たとえば、[p,q] = boundary(pd) を実行します。pdparetotails オブジェクト、q(2) は位置パラメーターです。

データ型: single | double

オブジェクト関数

boundary区分的分布境界
cdf累積分布関数
icdf逆累積分布関数
lowerparams下裾のパレート分布のパラメーター
nsegments区分的分布のセグメント数
pdf確率密度関数
random乱数
segment入力値が含まれている区分的分布のセグメント
upperparams上裾のパレート分布のパラメーター

すべて折りたたむ

標本データ セットを生成し、裾がパレート分布になっている区分的分布をデータに当てはめます。既定の設定で paretotails を使用して、中央について経験的分布を指定します。

自由度が 3 の t 分布から、100 個の乱数が含まれている標本データ セットを生成します。

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

区分的分布を t に当てはめることにより paretotails オブジェクトを作成します。当てはめたオブジェクトがデータ セットの中程の 80% については経験的分布、データ セットの下位および上位 10% については GPD から構成されるように、下裾と上裾の累積確率を使用して裾の境界を指定します。

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 のパラメーター (形状パラメーターとスケール パラメーター) や、分位数および累積確率による境界の値など、各セグメントの要約が表示されます。これらの値を返すには、オブジェクト関数 boundarylowerparams および upperparams を使用します。

関数 nsegments を使用すると、セグメント数を取得できます。関数 segment を使用すると、入力値が含まれているセグメントを取得できます。

分布関数 cdficdfpdf および random を使用すると、分布の評価と無作為標本の生成を行うことができます。

t 分布の cdf と paretotails オブジェクトの cdf を同じ Figure にプロットします。

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

boundary を使用して paretotails オブジェクトのセグメント間の境界の点を求め、これらの点を Figure 上でマークします。

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

Figure contains an axes object. The axes object contains 3 objects of type line. One or more of the lines displays its values using only markers 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');

カーネル平滑化推定器を使用して区分的分布を x に当てはめることにより、paretotails オブジェクトを作成します。当てはめたオブジェクトがデータ セットの中央 80% についてはカーネル推定器、データ セットの下位および上位 10% については GPD から構成されるように、下裾と上裾の累積確率を使用して裾の境界を指定します。

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 で導入