2026a

# paretotails


具有 Pareto 尾部的广义帕累托分布

函数库: TyStatistics

# 描述

paretotails 对象是在尾部具有广义帕累托分布 (GPD) 的分段分布。

paretotails 对象由尾部的一个或两个 GPD 和中心的另一个分布组成。 您可以在创建对象时使用 paretotails 的 cdffun 参数指定中心的分布类型。 有效值为“ecdf”和函数。

paretotails 将 cdffun 类型的分布拟合到观测值 (x),并找到对应于下尾和上尾累积概率(分别为 pl 和 pu)的分位数。 然后,paretotails 将两个 GPD 分别拟合到观测值的较低 100 * pl% 和观测值的较高 100 * (1–pu)%。 如果 x 在尾部没有至少两个不同的观测值,则 paretotails 不会创建相应的尾部段。

使用对象函数 boundarysegmentupperparamslowerparams 查找分布特征。 lowerparamsupperparams 返回尾部 GPD 的参数。 boundary 返回分段分布段之间的边界点,segment 返回包含输入值的分段分布段,nsegments 返回对象中的段数。

使用对象函数 cdficdfpdfrandom 来评估分布。 这些函数非常适合 copula 和其他 Monte Carlo 模拟。 pdf 返回尾部的 GPD 密度和中心的累积分布函数 (cdf) 的斜率。 中心的这些概率密度函数 (pdf) 值通常不能很好地估计原始数据的基础密度。

# 创建

使用 paretotails 创建广义帕累托分布对象。

# 语法

pd = paretotails(x,pl,pu)

pd = paretotails(x,pl,pu,cdffun)

# 说明

pd = paretotails(x,pl,pu) 返回分段分布对象 pd,它由中心的经验分布和尾部的广义帕累托分布组成。 分别使用下尾部和上部尾部累积概率 pl 和 pu 指定尾部的边界。示例


pd = paretotails(x,pl,pu,cdffun) 使用 cdffun 指定中心分布段的类型。

# 输入参数

x - 输入数据
数值向量

输入数据,指定为数值向量。

数据类型: Int8 | Int16 | Int32 | Int64 | Int128 | UInt8 | UInt16 | UInt32 | UInt64 | UInt128 | Float16 | Float32 | Float64

pl - 下尾累积概率
范围[0,1]中的数值标量

下尾累积概率,指定为 [0,1] 范围内的数值标量。 pl 的分位数是下尾观测值的边界。

如果 pl 为 0 或 x 在下尾部没有至少两个不同的观察值,则 paretotails 将 x 中的输入数据分成两组,中心和上尾部。 在这种情况下,拟合的分段分布对象 pd 由两部分组成:中心的经验分布和上尾的 GPD。

示例: 0.1

数据类型: Int8 | Int16 | Int32 | Int64 | Int128 | UInt8 | UInt16 | UInt32 | UInt64 | UInt128 | Float16 | Float32 | Float64

pu - 上尾累积概率
范围 [0,1] 中的数值标量

上尾累积概率,指定为 [0,1] 范围内的数值标量。 pu 的分位数是上尾观测值的边界。

如果 pu 为 1 或 x 在上尾没有至少两个不同的观测值,则 paretotails 将 x 中的输入数据分成两组,中心和下尾。 在这种情况下,拟合的分段分布对象 pd 由两部分组成:中心的经验分布和下尾的 GPD。

示例: 0.9

数据类型: Int8 | Int16 | Int32 | Int64 | Int128 | UInt8 | UInt16 | UInt32 | UInt64 | UInt128 | Float16 | Float32 | Float64

cdffun - 中心分布段的类型
"ecdf" (default) | 函数

中心分布段的类型,指定为"ecdf"或函数。

参数值 说明
"ecdf" 插值经验 cdf。
paretotails 使用 x 中的值作为经验 cdf 垂直步长的中点,并通过线性插值计算 x 中值之间的点的估计值。
函数 使用指定函数的插值估计。
paretotails 使用函数,该函数接受输入数据向量 x 并返回 cdf 值向量 p 和评估点向量 xi。 xi 中的值必须排序且不同,但不必等于 x 中的值。 paretotails 函数通过线性插值计算 xi 中值之间的点的 cdf 估计值。

paretotails 使用 cdffun 计算对应于 pl 和 pu 的分位数。

示例: "ecdf"

# 对象相关函数

boundary帕累托分布边界
cdf累积分布函数
icdf逆累积分布函数
lowerparams下帕累托尾部参数
nsegments广义帕累托分布中的段数
pdf概率密度函数
random随机数
segment包含输入值的广义帕累托分布段
upperparams上帕累托尾部参数

# 示例

使用经验分布创建 paretotails

生成一个样本数据集,并将具有帕累托尾部的分段分布拟合到数据中。 通过使用具有默认设置的 paretotails 指定中心的经验分布。

生成包含 100 个来自具有 3 个自由度的 t 分布的随机数的样本数据集。

using TyMath
using TyStatistics
using TyPlot
rng = MT19937ar(5489) # For reproducibility
t = trnd(rng,3,100,1);

通过将分段分布拟合到 t 创建一个 paretotails 对象。 使用下尾部和上部尾部累积概率指定尾部边界,以便拟合对象由数据集中间 80% 的经验分布和数据集下部和上部 10% 的 GPD 组成。

pd = paretotails(t,0.1,0.9)
pd = 

具有 3 个段的分段分布
      -Inf < x < -1.84875    (0 < p < 0.1): 下尾,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): 上尾,GPD(0.333239,1.19705)
        

对象显示的每一行显示每个段的摘要,包括 GPD 参数(形状和尺度参数)以及分位数和累积概率中的边界值。 使用对象函数 boundarylowerparamsupperparams 返回这些值。

您可以使用 nsegments 函数返回段数,使用 segment 函数返回包含输入值的段。

您还可以使用分布函数 cdficdfpdfrandom 来评估分布并生成随机样本。

在同一图上绘制 t 分布的 cdf 和 paretotails 对象的 cdf。

figure()
x = LinRange(-5,5,100);
plot(x,tcdf(x,3),"r--")
hold("on")
plot(x,cdf(pd,x),"b-")

使用 boundary 找到 paretotails 对象的线段之间的边界点,并在图形上标记这些点。

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

# 另请参阅

ecdf | gpfit | ksdensity