对数正态分布的保险索赔总和

机器算法验证 分布 对数正态分布
2022-03-18 18:25:35

对于计算保险中预期索赔的方法,我必须假设对数正态分布。对于测试,我将使用年度累积数据。以 20 年为上限的小样本,我的想法是使用分类数据 - 每月或个人索赔。现在我发现对数正态声明的总和不是对数正态分布的。有什么想法可以提高测试的威力吗?

编辑:总体目标是通过最大似然估计来计算索赔的波动性。分布检验是 Kolmogorov-Smirnov。问题是我的年度数据只有 5 年的数据,而 20 年后的上限。

在使用来自对数正态分布、正态分布和伽马分布的随机样本进行预测试时,如果数据确实是对数正态分布,即使有 5 年的数据,我也会得到很好的结果,但测试只会下降 5 年数据的伽马分布样本的 5% 左右(在 10,000 个样本中)。

H0 下降的概率 = 样本呈对数分布

这里是模拟代码,如果我的设置方式有问题,我将不胜感激。

n = 5:20
Loops = 10000
GammaRes = LogNormRes = NormRes = matrix(rep(NA, length(n)*Loops),nrow = Loops)
for(j in 1:Loops)
{
   count = 0
   for(i in n)
   {
      count = count + 1
      GammaVerluste = rgamma(i, shape =2 )
      LogNormVerluste = rlnorm(i)
      NormVerluste = rnorm(i)
      GammaRes[j,count] = ks.test(GammaVerluste, "plnorm")$p.value
      LogNormRes[j,count] = ks.test(LogNormVerluste, "plnorm")$p.value
      NormRes[j,count] = ks.test(NormVerluste, "plnorm")$p.value
   } 
}
Alpha = 0.01

DeclineGamma = DeclineNormal = DeclineLogNormal = rep(NA, length(n))
count = 0
for(i in 1:length(n))
{
   DeclineGamma[i] = sum(GammaRes[,i] < Alpha)/Loops
   DeclineNormal[i] = sum(NormRes[,i] < Alpha)/Loops
   DeclineLogNormal[i] = sum(LogNormRes[,i] < Alpha)/Loops
}
1个回答

首先,Kolmogorov-Smirnov 是对完全指定分布的检验。如果您估计参数而不是预先指定它们,则测试不具有预期的属性 - 特别是,无论是真还是假,它都不太可能拒绝空值。

如果不考虑参数的估计,您根本无法使用它。

其次,无论如何这都不是一个特别强大的测试。

此外,虽然对数正态的总和不是对数正态,但它通常是一个非常好的近似值,因此即使在相当大的样本中,你也不应该期望得到太多的力量。

这些中的任何一个都表明缺乏拒绝零的倾向。

一些建议:

(i) 因为一个特别好的正态性检验是夏皮罗-威尔克检验,你可以取对数正态的总和,取对数并测试正态性;或者 -

(ii) 由于对数正态总和与对数正态的偏差趋于平滑,这表明进行平滑测试。同样,我建议使用近似对数正态的日志来测试正态性。Rayner 和 Best ( Smooth Tests of Goodness of Fit ) 以及他们的几篇论文中详细介绍了正态性的平滑检验。

这些中的任何一个都应该做得很好。