用Pareto尾拟合非参数分布
这个例子展示了如何使用帕累托尾来平滑尾部分布来拟合样本数据的非参数概率分布。
步骤1。生成样例数据。
生成的样本数据包含比标准正态分布中预期的离群值更多的数据。
rng (“默认”)%为了重现性Left_tail = - expend (1,10,1);Right_tail = expnd (5,10,1);中心= randn(80,1);Data = [left_tail;center;right_tail];
数据中80%的值来自标准正态分布,10%来自均值为5的指数分布,10%来自均值为-1的指数分布。与标准正态分布相比,指数值更有可能是异常值,特别是在上尾。
步骤2。拟合数据的概率分布。
拟合正态分布和at位置尺度分布的数据,并绘图进行直观比较。
probplot(数据);P = fitdist(data,“tlocationscale”);H = probplot(gca,p);集(h,“颜色”,“r”,“线型”,“- - -”);标题(“概率图”)传说(“正常”,“数据”,“t location-scale”,“位置”,“本身”)
两种分布似乎都很好地拟合在中心,但正态分布和t位置尺度分布与尾部非常吻合。
步骤3。生成经验分布。
为了获得更好的配合,使用ecdf
基于样本数据生成经验CDF。
图ecdf(数据)
经验分布提供了一个完美的拟合,但异常值使尾部非常离散。使用反演方法从该分布生成的随机样本可能包括,例如,接近4.33和9.25的值,但没有介于两者之间的值。
步骤4。使用帕累托尾拟合分布。
使用paretotails
为中间80%的数据生成经验cdf,并将广义Pareto分布拟合到上下10%的数据。
Pfit = paretotails(data,0.1,0.9)
pfit = 3段分段分布-Inf < x < -1.24623 (0 < p < 0.1):下尾,GPD(-0.334156,0.798745) -1.24623 < x < 1.48551 (0.1 < p < 0.9):插值经验cdf 1.48551 < x < Inf (0.9 < p < 1):上尾,GPD(1.23681,0.581868)
为了获得更好的契合度,paretotails
通过将样本中心的ecdf或核分布和尾部的光滑广义帕累托分布(gpd)拼凑在一起来拟合分布。使用paretotails
创建paretotails
概率分布对象。的对象函数可以访问有关匹配的信息,并对对象执行进一步的计算paretotails
对象。例如,您可以计算cdf或从分布中生成随机数。
第5步。计算并绘制cdf。
计算并绘制拟合的cdfparetotails
分布。
X = -4:0.01:10;情节(x, cdf实验组(pfit x))
的paretotails
cdf与数据非常吻合,但尾部比步骤3中生成的ecdf更平滑。