统计模拟(六)——保险模型


 

 

本文为第一系列的原创文章之六, 目的在于总结“Simulation” -Sheldon M.Ross一书中出现的模拟随机变量的方法.

 
  
在介绍了诸多的随机变量与模拟方法之后, 接下来介绍一个实际问题的数学模型: 保险模型, 并对这个模型尝试进行模拟.
 

Poisson Distribution and Poisson Process

 
在介绍保险模型前, 首先需要介绍的是泊松过程.
  
在本系列文章之二 泊松分布与二项分布模拟 中介绍了泊松分布, 其表达式为:

\[p_i = P(x=i)=e^{-\lambda}\dfrac{\lambda^i}{i!}, \quad i=0,1,2,…\]
 
泊松分布中并没有与时间相关的参数, 事实上, 离散或者连续的随机变量都与时间没有直接的关系, 事件可以在任何时候发生 (而考察的概率可以认为是从宇宙大爆炸到宇宙热寂这段时间的概率).  
 
泊松分布中, 唯一需要确定的参数只有 \(\lambda\) . 在 泊松分布与二项分布模拟 中提到, 二项分布 \(\lambda\) 当 \(n\) 趋近于无穷大时, 二项分布近似为泊松分布, 而 \(\lambda = np\) . 而泊松分布中

 
\begin{align*} E(x) &= \sum_{i=0}^{+\infty}i\times e^{-\lambda}\dfrac{\lambda^i}{i!}\\\ &= \lambda\times \sum_{i=1}^{+\infty}e^{-\lambda}\dfrac{\lambda^{i-1}}{(i-1)!}\\\ &= \lambda \end{align*}

 
也就是说, \(\lambda\) 可以看作泊松分布中的参数 \(\lambda\) 被认为是从开始到结束, 事件发生次数的平均次数.
  
接下来, 我们考虑时间因素进入问题, 即在认为在时间 \(t\) 内, 事件发生的平均次数为 \(\lambda\) . 由于 \(t\) 与 \(\lambda\) 为线性关系 (即在 \(nt\) 时间内, 时间发生的平均次数为 \(n\lambda\) ). 所以在泊松分布的表达式的参数 \(\lambda\) 后面乘以 \(t\) , 得到泊松过程的表达式:

\[P(X(t)=i)=e^{-\lambda t}\dfrac{(\lambda t)^i}{i!}\]
 
现实生活中, 很多问题都可以用泊松分布进行拟合, 例如某医院平均一天有 \(3\) 个婴儿诞生, 即 \(\lambda = 3\) , 那么在一周内有 \(20\) 个婴儿出生的概率即为:

\[P(X(7)=20)=e^{-3 \times 7}\dfrac{(3 \times 7)^{20}}{20!}=0.0867\]
 
泊松过程有一些比较好特性, 比如两个泊松过程的和依旧是一个泊松过程. 并且参数为两个泊松过程参数的和, 证明如下:

假设有两个泊松过程 \(X\) 与 \(Y\) , 参数分别是 \(\lambda\) 和 \(\mu\) , 过程 \(Z = X + Y\), 那么
 

\begin{align*} P(Z(t)=n)&=\sum_{i=0}^{n}P(X(t)=i)P(Y(t)=n-i)\\\ P(Z(t)=n)&=\sum_{i=0}^{n}P(X(t)=i)P(Y(t)=n-i)\\\ &=\sum_{i=0}^{n} e^{-\lambda t}\dfrac{{(\lambda t)}^i}{i!} e^{{-\mu t}}\dfrac{{(\mu t)}^{n-i}}{(n-i)!}\\\ &=e^{-(\lambda + \mu)t} t^n\sum_{i=0}^{n}\dfrac{\lambda ^ i \mu^{n-i}}{i!(n-i)!}\\\ &=e^{-(\lambda + \mu)t} \dfrac{[(\lambda + \mu)t]^n}{n!} \end{align*}
 

  
即 \(Z\) 是参数为 \(\lambda + \mu\) 的泊松过程.

泊松过程可以和指数分布关联起来: 事件在时间 \(t\) 内发生, \(t\) 则服从指数分布.
 
证明如下:

“\(t\) 时刻之后事件发生”等价于”在时刻 \(t\) 前无任何事件发生.”

\[P(X(t) = 0) = e^{-\lambda t}\]
 
在时间 \(t\) 内发生的概率为:

\[P(X < t) = 1 – e^{-\lambda t}\]
  
指数分布有一个特性, 那就是两个指数分布的参数分别为 \(\lambda\) 和 \(\mu\) , 两个指数分布的较小者也服从指数分布, 其参数为两个指数分布的参数和.
 
 
具体推导可以从指数分布的表达式出发, 也可以从上面描述泊松过程的性质出发, 在这里略去不表, 接下来会利用到这一性质.
  

Insurance Risk Model

保险模型描述如下
 

假设某保险公司的每一个人寿保险的投保人索赔的过程为一个泊松过程, 单位时间内平均索赔的比例为 \(\lambda\) ;

假设每一笔人寿保险赔偿的金额服从某分布 \(F\) ;
 
假设该保险公司新客户投保过程为一个泊松过程, 单位时间投保的人数比例为 \(\nu\) ;
 
假设该保险公司的每一个人寿保险的投保人放弃继续投保的过程为一个泊松过程, 单位时间内放弃继续投保的比例为 \(\mu\);
 
假设每一个人寿保险投保人单位时间内都需要支付 \(c\) 以继续投保;
 
假设保险公司一开始的客户数为 \(n_0\) , 资产为 \(a_0 \leqslant 0\) ;
 
用模拟的方法在建模出在时间 \(T\) 内该保险公司不破产 ( \(a \leqslant 0\) ) 的概率.
 

  
首先,定义一个二元组 \((n,\ a)\) 为模型的在时刻 \(t\) 时的状态, 其中 \(n\) 表示为当前客户数, \(a\) 表示为当前资产.
 
在当前状态下, 下一个到来的事件分为 \(3\) 种:


1.某一个投保人索赔
2.某一个投保人放弃继续投保
3.新来一个投保人
 

  
根据刚刚推导的泊松分布的性质, 多个泊松过程的和依旧是泊松过程, 那么在状态 \((n, a)\) 下 \(n\) 个人出现索赔服从参数为 \(n\lambda\) 的泊松分布. 这三个事件出现任意一个的过程服从参数为 \(n\lambda+n\mu+\nu\) 的泊松分布. 那么根据上面的推导, 假设在时间 \(X\) 内, 时间发生, \(X\) 服从参数为 \(n\lambda+n\mu+\nu\) 的指数分布.
 
换一种推导思路, 在时间 \(X\) 内, 某一个投保人索赔, \(X\) 服从参数为 \(\lambda\) 的指数分布. 在时间 \(X\) 内, \(n\) 个投保人中某一个人率先索赔 (这个人的索赔时间 \(X\) 为最小值) , \(X\) 服从参数为 \(n \lambda\) 的指数分布. 类似地, 也可以推导出上述的结论.

在一个确定时间内, 每当一个事件发生, 那么有 \(\dfrac{n\lambda}{ n\lambda+n\mu+\nu}\) 的概率为事件1, 接下来索赔金额 \(Y\) 服从的分布为 \(F\) .
 
\(\dfrac{n\mu}{ n\lambda+n\mu+\nu}\) 的概率为事件2.
 
\(\dfrac{\nu}{ n\lambda+n\mu+\nu}\) 的概率为事件3.
 
规定模拟的时间间隔为 \(t_I\), 每一次增加这个时间间隔, 资产增加 \(ct_I\), 模拟事件发生, 直到资产为 \(0\), 输出 \(0\) , 或者总时间到达 \(T\) 输出 \(1\).

Simulation

  
经过上述的分析, 模拟过程大致如下:

Initialize

 

\begin{align*} t&= 0\ ,\\\ a&=a_0\ ,\\\ n&=n_0\ . \end{align*}
 

  
生成服从指数分布的变量 \(X\) , 令

\[t=X\\ t_I=X \]

Update

 
如果 \(t>T\)
 
输出

\[ T=1 \]
 
结束.

否则如果 \(t\leq T\)
 
\[ a=a+n\times c\times t_I \]
  
生成标准的均匀分布 \(U\) , 并且根据区间

\[
(0,\dfrac{\nu}{ n\lambda+n\mu+\nu}],\\ (\dfrac{\nu}{ n\lambda+n\mu+\nu}, \dfrac{n\mu + \nu}{ n\lambda+n\mu+\nu}],\\ (\dfrac{n\mu + \nu}{ n\lambda+n\mu+\nu}, 1)\]
 
映射到

\begin{align*} J&=1:\ n=n+1\\\ J&=2:\ n=n-1\\\ J&=3:\ Generate\ Y, \end{align*}

\[ if\ Y > a,\ I = 0,\ return\ T = 1,\\ else\ a = a-Y\]
 
生成 \(X\) ,
\[ t_I=X\\ t=t_I+t \]

更新结束.
 
 

Matlab Code

clear; 
mu=0.042;%% possibility of lost one policyholder
lambda=0.012;%%possibility of a claim
nu=0.49;%% possibility of a new policyholder
claimRate=[.5,.4,.07,.02,.01];
claimAmount=[5000,80000,10000,15000,20000];
c=40;%%Insurance fee per time unit
t=0;
T=500;%%Time gap
a=1000000;%%Initial assets
n=100;%%Initial policyholderes
count = 0;
exponentialArg=n<em>lambda + nu + n</em>mu;
X=exponential(exponentialArg);
t=X;
tI=X;
while true
count = count+1;
fprintf('Event %d \n', count);
if t &amp;gt; T
res=0;
break;
else
a = n * c * tI + a;
J = event([n,lambda,mu,nu]);
if J == 1
n = n + 1;
fprintf('One new policyholder, total: %d \n',n);
else
if J == 2
n = n -1;
fprintf('Lost a policyholder, total: %d \n',n);
if n == 0
res = 0;
break;
end
else
Y = claim([claimRate;claimAmount]);
fprintf('New claim, amount: %6f \n', Y);
if Y &amp;gt; a
res = 0;
break;
else
a = a - Y;
end
end
end
X=exponential(exponentialArg);
tI = X;
t = tI + t;
end
fprintf('Total assets : %8f \n', a);
fprintf('%3.5f time elapsed \n',tI);
fprintf('%2.5f total time:\n', t);
pause(0.05);
end
function J = event(arg)
n = arg(1);
lambda=arg(2);
mu=arg(3);
nu=arg(4);
x1 = nu/(n<em>lambda+n</em>mu+nu);
x2 = (nu+n<em>mu)/(n</em>lambda+n<em>mu+nu);
U = rand(1);
if U&amp;lt;x1
J=1;
else
if U&amp;lt;x2
J = 2;
else
J = 3;
end
end
end
function res=exponential(argu)
U=rand(1);
res=-1/(argu)</em>log(U);
end
function Y = claim(arg)
claimRate=arg(1,:);
claimAmount=arg(2,:);
x1=claimRate(1);
x2=claimRate(2)+x1;
x3=claimRate(3)+x2;
x4=claimRate(4)+x3;
U = rand(1);
if U &amp;lt; x1
Y = claimAmount(1);
else 
if U &amp;lt; x2
Y = claimAmount(2);
else
if U &amp;lt; x3
Y = claimAmount(3);
else
if U &amp;lt; x4
Y = claimAmount(4);
else
Y = claimAmount(5);
end
end
end
end
end 

 
在代码中, 参数的选择很值得推敲. 总结了一下, 不同的参数选择可能会有以下考量:
 
1.客户数量总是趋于稳定的值. 由于到来率 \(\nu\) (即所有潜在客户的总到来率) 代表的是单位时间内平均增加的客户, 离去率 \(\mu\) 代表的是每一个当前客户单位时间平均离去的数量.
 
二者需要满足
 
\[\nu=n\mu\]

才能保证客户数量趋于平稳.

2.总资产可能一直趋于减少, 也可能一直趋于增多.
 
每一个事件到来的平均时间间隔为: \(\dfrac{1}{n\lambda+n\mu+\nu}\) 单位时间, 有 \(\dfrac{n\lambda}{n\lambda+n\mu+\nu}\) 概率索赔.
 
所以这段时间内资产的变化率
 
\[a_{count+1}-a_{count}\\ =\dfrac{c\times n}{n\lambda+n\mu+\nu}-\dfrac{n\lambda}{n\lambda+n\mu+\nu}\sum_{rate}rate\times amount\]
 
单位时间内资产变化率
\[ v=n(c-\lambda \sum_{rate}rate\times amount)\]
  
其中, \(rate\times amount\) 由分布 \(F\) 描述, 为分布 \(F\) 的期望.
 
从本公式上看, \(\lambda\) 为投保人索赔的概率, 这些需要依据社会统计, 例如某地区人口的自然死亡率就是数据来源之一. (但是实际投保人的自然死亡率一定会大于本地区的自然死亡率, 因为投保人不是本地区人的随机抽样.) \(\lambda\) 是一个常数.
 
所以为了保证资产为正, 需要保证 \(F\) 的期望足够小, 即保金足够小. 但是保金金额过小会明显使得投保人放弃继续投保的概率增大. 虽然从 \(2\) 的公式上来讲, 资产变化率与 \(\mu\) 无关, 但是根据上面 \(1\) 中的考量, 在 \(\nu\) 不变时, \(\mu\) 增加, 那么趋于稳定的投保人 \(n\) 会反比下降, 也会导致资产变化率变小.

在本模型中为了使资产变化率为正且尽量大, 那么需要尽量使得 \(|\dfrac{dc}{d\mu}|\) 尽量的小, 使得 \(\nu\) 尽量增大. 转化成自然语言就是, 使得保金高但继续投保的人依旧不会太少 (或者使得保金不变, 但是投保的人很多) , 使得更多的潜在客户购买保险. 这也就解释了, 为什么卖保险的推销手段相比于任何一个行业都要重视的多, 这也解释了为什么要尽量远离周围卖保险的亲友.
 
🙂

1 thought on “统计模拟(六)——保险模型”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.