R:我如何通过泊松观测来汇总损失?

我是R的新手,但我尝试使用它来汇总通过频率分布的观察而从严重性分布观察到的损失-本质上是rcompound的作用。但是,我需要更精细的方法,因为需要在“聚合”之前操纵严重性分布。

举个例子。假设您有:

rpois(10,lambda=3)

因此,给您类似的东西

[1] 2 2 3 5 2 5 6 4 3 1

另外,假设我们的损失严重程度由以下因素决定:

rgamma(20,shape=1,scale=10000)

这样我们还有以下输出:

 [1]   233.0257   849.5771  7760.4402   731.5646  8982.7640 24172.2369 30824.8424 22622.8826 27646.5168  1638.2333  6770.9010  2459.3722   782.0580 16956.1417  1145.4368  5029.0473  3485.6412  4668.1921  5637.8359 18672.0568

我的问题是:什么是让R依次进行每个Poisson观测值然后汇总我的严重性分布损失的有效方法?例如,第一个泊松观测值为2。因此,从我的Gamma分布中添加两个观测值(前两个)得出1082.61。

由于以下事实,我说这需要是“有效的”(运行时): -泊松参数可能会很大,即最多1000个左右。 -可能有多达100万个变现,也就是多达100万个泊松和伽玛观测值可以进行整理。

任何帮助将不胜感激。

谢谢,戴夫。

lala_2009 回答:R:我如何通过泊松观测来汇总损失?

您似乎想在泊松矢量累积所指示的位置拆分伽马矢量。

以下函数(from here)进行拆分:

splitAt <- function(x,pos) unname(split(x,cumsum(seq_along(x) %in% pos)))

pois <- c(2,2,3,5,6,4,1)
gam <- c(233.0257,849.5771,7760.4402,731.5646,8982.7640,24172.2369,30824.8424,22622.8826,27646.5168,1638.2333,6770.9010,2459.3722,782.0580,16956.1417,1145.4368,5029.0473,3485.6412,4668.1921,5637.8359,18672.0568)
posits <- cumsum(pois)

然后执行以下操作:

sapply(splitAt(gam,posits + 1),sum)
[1]  1082.603  8492.005 63979.843 61137.906 17738.200 19966.153 18672.057

根据我上面链接的文章,对于大型数组,splitAt()函数会变慢,因此您可以(如有必要)考虑该文章中提出的替代方案。就我而言,我生成了1e6泊松子和1e6伽玛,并且上述功能在我的计算机上运行了0.78秒。

本文链接:https://www.f2er.com/3072289.html

大家都在问