精算学链梯法的统计模型原理

【本文的理解难度:中等】

今天整理的主题是关于链梯法的,看上去似乎非常的不屑于一谈,可能有些同仁觉得太基础了,给非精算人员“扫盲”还可以,要是给精算圈内的同仁讲,似乎有点太“小儿科”了。呵呵,还千万别这么主观想象。这个主题是圈内不止一个人问过我的,感觉很有必要说说,似乎很多人对非常基础的链梯法(Chain Ladder)并不是很了解,呵呵

这个问题很有意思,一个朋友问我,为什么链梯法的进展因子(LDF)的选择有金额加权平均法、简单加权平均法之分?哪个才是最正确的LDF选择方法?是不是永远都是金额加权平均优于简单加权平均?看到有的人的答复很简单,都是人为主观判断的,这么平均都可以,关键还是人为的主观经验的最后选择。这个答案没错,但是,我觉得针对一些进入行的精算职业新人,还是很有必要深入了解链梯法的统计模型原理。今天主要就是说说这个。

链梯法的模型在形式上是很简单的,y=c*x+e,y为下一年的累积赔款,x为上一年的累积赔款,c被称为损失进展因子即LDF,e为随机波动误差。但是,模型背后的概率假设是相当重要的,也正是由于模型背后的概率分布假设,直接影响了c因子即损失进展因子LDF的确定方法。

(一)LDF金额加权平均法的概率模型

最为常用的LDF金额加权平均方法,实际上是基于上述模型服从Poisson分布的假设。在Poisson分布假设下,y服从于以c*x为均值的Poisson分布,使用极大似然估计法(MLE),可以推导出,在链梯法模型服从Poisson分布的情况下,进展因子c=sum(Yi)/sum(Xi),这个就是LDF的金额加权平均结果。基于Poisson分布的假设对赔款金额来说不是很合理,但是,从链梯法的发展历史上讲,最开始链梯法是用来针对赔款案件数(claim counts)而非赔款金额(claim amount)的,因此,赔款案件数服从Poisson分布还算可以理解,但是如果考虑到每个赔案的赔款金额,显然poisson分布就显得不太合理了。

(二)LDF简单平均法的概率模型

LDF的简单平均法,一般被人们普遍认为没有金额加权平均法合理,但实际上未必如此,需要我们去如何看待这个问题。

一般地,我们通常假设赔款金额的分布是偏态的,这样,一个很常用的概率模型分布是Gamma分布。我们可以推导出,假设链梯法模型y=c*x+e是服从Gamma分布,即Y服从于以c*x为均值的Gamma分布(方差因子没有关系,在MLE推导过程中是可以抵消的),使用极大似然估计法(MLE)可以推导出,进展因子c=sum(Yi/Xi)/n,这个就是LDF的简单平均法结果。可见,LDF简单平均法的结果是将链梯法模型基于Gamma概率分布假设做出的,从某种意义上讲,它同样具有着较强的理论支持。

(三)最小二乘法(LSM)下的LDF确定

最小二乘法是确定模型参数的一种最常用方法之一,如果将链梯法模型y=c*x+e采用LSM去做的话,得到的结果看上去比较奇快,是c=sum(Xi*Yi)/sum(Xi^2)。这个结果可以变形为c=sum(Xi^2*Yi/Xi)/sum(Xi^2),这也可以看成是一种加权平均方法,但不是简单的金额加权平均,而是金额平方加权平均。这种LDF确定方法在实务中很少被使用,主要是因为在计算上略微复杂一些。另外,诚如前几天一个同仁在部落中评论的,LSM假设了所有的Y都是同一个常数方差,与X的波动性无关,尽管Y的均值还是c*X,在这一点上可能不是很合理。

(四)广义线性模型(GLM)的随机残差概率分布

普通的线性模型既然不行,广义线性模型GLM用来计提准备金就成为了一种技术发展的方向。实际上,在使用广义线性模型GLM时,你会发现很多有趣的现象。由于GLM假设的随机残差概率分布的不同,结果会非常有意思。一个最经典的结果是,如果假设GLM的随机残差服从Poisson分布,那么模型的结果与采用LDF金额加权平均法的标准链梯法是不谋而合的。其中的道理实际上就是上面所讲的道理。

以上为对非常“小儿科”的链梯法技术的一点点解释,供问过此类问题的朋友和有兴趣的同仁参考。

摘自:http://blog.sina.com.cn/s/blog_5d87d79a0100l9xy.html

时间: 2024-10-25 04:47:58

精算学链梯法的统计模型原理的相关文章

C# Dictionary源码剖析---哈希处理冲突的方法有:开放定址法、再哈希法、链地址法、建立一个公共溢出区等

参考:https://blog.csdn.net/exiaojiu/article/details/51252515 http://www.cnblogs.com/wangjun1234/p/3719635.html 源代码版本为 .NET Framework 4.6.1 Dictionary是Hashtable的一种泛型实现(也是一种哈希表)实现了IDictionary泛型接口和非泛型接口等,将键映射到相应的值.任何非 null 对象都可以用作键.使用与Hashtable不同的冲突解决方法,D

哈希表——线性探测法、链地址法、查找成功、查找不成功的平均长度

一.哈希表 1.概念 哈希表(Hash Table)也叫散列表,是根据关键码值(Key Value)而直接进行访问的数据结构.它通过把关键码值映射到哈希表中的一个位置来访问记录,以加快查找的速度.这个映射函数就做散列函数,存放记录的数组叫做散列表. 2.散列存储的基本思路 以数据中每个元素的关键字K为自变量,通过散列函数H(k)计算出函数值,以该函数值作为一块连续存储空间的的单元地址,将该元素存储到函数值对应的单元中. 3.哈希表查找的时间复杂度 哈希表存储的是键值对,其查找的时间复杂度与元素数

【算法与数据结构】哈希表-链地址法

哈希表的链地址法来解决冲突问题 将所有关键字为同义词的记录存储在同一个线性链表中,假设某哈希函数产生的哈希地址在区间[0, m - 1]上,则设立一个至振兴向量 Chain  ChainHash[m]; 数据结构 //链表结点 typedef struct _tagNode { int data; //元素值(关键字) struct _tagNode* next; //下一个结点 }Node, *PNode; //哈希表结点 typedef struct _tagHashTable { //这里

哈希表(链地址法处理冲突)(1012)

Description 采用除留余数法(H(key)=key %n)建立长度为n的哈希表,处理冲突用链地址法.建立链表的时候采用尾插法. Input 第一行为哈西表的长度:第二行为关键字的个数n: 第三行为关键字集合: 第四行为要查找的数据. Output 如果查找成功,输出该关键字所在哈希表中的地址和比较次数:如果查找不成功,输出-1. Sample Input 1 2 3 4 5 13 13 16 74 60 43 54 90 46 31 29 88 77 78 79 16   Sample

C++链地址法实现哈希表

哈希表,也叫散列表,是根据关键码值(Key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.这个映射函数叫做哈希函数,存放记录的数组叫做哈希表. 哈希函数最主要的设计在于哈希函数和冲突处理的解决,其中哈希函数的设计方法主要有直接定址法和除留余数法:冲突处理的方法主要有开放定址法和链地址法.本文主要实现了一个基本存放字符串的哈希表,冲突处理采用链地址法. 代码如下: #include <iostream> #include<c

链地址法实现HashMap

前注:本文介绍的HashMap并非Java类库的实现.而是根据哈希表知识的一个实现. 上文介绍了开放地址法实现HashTable,它的缺点是对hashCode映射为地址后如果出现重复地址,则会占用其他元素的位置.这样HashTable存储容量有限,而且不便于算法理解.本文介绍链地址法实现HashMap. 链地址法内部仍然有一个数组,但区别与开放地址法,该数组存储的是一个链表的引用.当根据hashCode计算出数组下表后,对元素的增删查改都是在该数组元素所指向的链表上完成的.这就解决了hashCo

哈希(hash) 之插入和查找(链地址法)

一:学些心得 1 getHash函数的设计最牛的是Unix中处理字符串的ELFHash():当然也可以自己写一个比较简单的getHash函数关键在于去mod M的M值,使器均匀的分布(一般是不大于hash_size的某一个素数,接近于2的某次幂):但是有一点需要注意就是返回的hash值必须是正值. 2 处理冲突的方法:链地址法是比较好的方法了(静态动态都可以的):二次哈希(一般是加key值)再探测:或者加1再探测 3 插入和查找以及删除的第一步都是一样的,getHash(),时候存在-- 4 对

Java解决Hash(散列)冲突的四种方法--开放地址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区

最近时间有点紧,暂时先放参考链接了,待有时间在总结一下: 查了好多,这几篇博客写的真心好,互有优缺点,大家一个一个看就会明白了: 参考 1. 先看这个明白拉链法(链地址法),这个带源码,很好看懂,只不过是只讲了拉链法一种: 2. 再看这个比较全的,四种全讲了,链接,这篇比较形象,有图.但是这两篇都没有仔细介绍优缺点: 3. 最后看优缺点,点击这里: 原文地址:https://www.cnblogs.com/gjmhome/p/11372883.html

链式调用方法的实现原理和方法

1.什么是链式调用? Person person = new Person().setName(fog) .setAge(18) .setSex(man) .setJob(software engineer); 2.优势和好处 有以上的代码,好处显而易见:代码量大幅度减少,逻辑集中清晰明了,且易于查看和修改. 3.背后的实现原理 一般而言,我们在设置set,get的方法的时候,在对应的方法里都是返回的void. 从某种意义上来说,代码的返回值是一个必须要执行的步骤,直接返回void是一种浪费,而