复合伽马/负二项分布的分位数

机器算法验证 r 模拟 负二项分布 伽马分布 分位数
2022-03-20 11:01:01

复合伽马/负二项分布的分位数是否有任何公式?也就是说,假设我们有

NNegBin(α,λ)

并且有条件N,

Y={0if N=0i=1NXiotherwise

其中每个Xi是独立同居Gamma(μ,σ). 给定的值α,λ,μσ,我想计算分位数Y.

背景:我正在模拟每天的 ATM 取款。我假设的取款数量呈负二项分布,每次取款的数量呈伽马分布。我可以从数据中估计所有参数,现在我想估计在 ATM 中保留多少现金。保持太少的现金可能无法满足需求,但太多也是不好的。因此,我想估计需要多少现金才能满足给定现金风险水平的需求。也就是说,我想要复合分布的上分位数,比如 99%、99.9% 或 99.99% 的水平。

现在我正在使用模拟来获得估计,但这需要很长时间,尤其是对于非常高的分位数。例如,如果我想获得 99.99% 的分位数,我至少需要 10,000 次复制,而且理想情况下远不止这些;我还需要为每个 ATM 重复此操作。所以某种分析近似会很棒。

(我意识到实际的分配可能比简单的 negbin/gamma 组合更复杂。例如,观察到的提款将被正确审查,因为如果 ATM 用完现金,那么当天就没有更多的提款了。我正在保留东西简单的开始。)

1个回答

作为对您要解决的实际问题的实际答案,如此高的分位数通常对模型选择的问题非常敏感(尤其是您是否为正确的审查建模以及组件中尾部的重量)。

但无论如何——尤其是在处理普通模拟变得不切实际的高分位数时——这本身就具有很大的价值;从理论和实践的角度来看,这是一个有趣的问题。


解决这个问题的其他几种方法是(1)使用快速傅里叶变换和(2)直接数值积分。

罗和舍甫琴科 (Luo and Shevchenko) (2009)[1].

在其中,他们开发了一种自适应直接数值积分方法,该方法比模拟更快并且与 FFT 竞争。

精算工作中更传统的方法是 (3) Panjer 递归,它可以在许多文本中找到。恩布雷希茨和弗雷 (2009)[2]讨论和比较 Panjer 递归和 FFT。(请注意,这两种技术都涉及连续分布的离散化。)


另一方面,做一个非常简单的模拟版本,并且不费吹灰之力地提高效率,从复合伽马负二项式生成并不是特别繁重。这是我孩子的小笔记本电脑上的时间:

system.time(replicate(100000,sum(rgamma(MASS:::rnegbin(1,4,2),5,.1))))
   user  system elapsed 
   2.82    0.00    2.84 

我认为 2.8 秒生成 100在缓慢的小型笔记本电脑上进行复合分布的 000 次模拟确实不错。通过一些努力提高效率(其中一个可能会提出很多可能性),我想这可以更快地完成。

这是 ecdf106模拟(大约需要 29 秒):

在此处输入图像描述

我们在复合分布中看到了您期望看到的零处的特征离散跳跃。

[虽然让模拟变得更快应该很容易,但这里提到的所有三个替代方案——如果执行得当——应该会更快。]


您应该注意,该actuar包支持使用复合分布进行计算,并提供了几种使用它们进行计算的方法。

例如,请参阅讨论此设施的此小插曲。

[可能有一些进一步的兴趣,请注意有一个用于泊松对数正态分布的 R 包 - poilog如果您在某些时候需要该发行版,它可能会很有用。]


在编辑中添加:

伽马形状参数不变的潜在快速近似值 -

在伽马的情况下,因为具有恒定形状参数的伽马卷积是另一个伽马,你可以写下Y|N=n,然后在每个处评估大量网格值处的 cdf 和密度n,然后简单地直接累加总和(而不是像 KDE 那样)。直接计算只会产生真实分位数的下限,但如果负二项式不是重尾的,它应该很快。


参考资料

[1]:Luo, X. 和 Shevchenko, PV (2009),
“使用直接数值积分计算复合分布的尾部”
,计算金融杂志13 (2),73-111。
[arXiv 预印本在这里]

[2]:Embrechts, P. 和 Frei, M. (2009),
“Panjer 递归与 FFT 的复合分布”
,运筹学数学方法69 :3(7 月)第 497-508 页。[这里
似乎是预发布版本]