zoukankan      html  css  js  c++  java
  • R语言蒙特卡洛计算和快速傅立叶变换计算矩生成函数

    原文链接:http://tecdat.cn/?p=13734


    对精算科学来说,当我们处理独立随机变量的总和时,特征函数很有趣,因为总和的特征函数是特征函数的乘积。 

    • 介绍

    在概率论中,让 ​ 对于 ​ 和 ​ 对于 ​ 是一些随机变量的累积分布函数 ​,即 ​。什么是矩生成函数 ​,即 ​ ?

    如何编写 ​ ?

    在概率教科书中,标准答案是

    • 如果 ​ 是离散的

    • 如果 ​ (绝对)连续,

     ​ 是的密度 ​。这里, ​ 显然不是离散变量。但是是连续的。需要绘制该分布函数以查看, ​, 对所有 

    我们有一个不连续的0。因此,我们在这里必须谨慎一些: ​ 既不是连续的也不是离散的。让我们使用公式,

    如果也可以写 ​,

    这只是说总体平均值是每个子组平均值的重心。​ 然后让 ​ 而 ​ ​)。

    让我们考虑三个不同的组成部分。

    (因为它是一个实值常量),在这里 ​。

    所以最后,我们计算 ​。观察一下 ​ 给定 ​ 是具有密度的(绝对)连续随机变量。观察所有 ​,

    和 ​,即 ​ 给定 ​ 是指数分布。

    因此, ​ 是指数变量和Dirac质量之间的混合 ​。这实际上是问题的棘手部分,因为当我们看到上面的公式时,它并不明显。

    从现在开始,这是高中阶段的计算,

    如果 ​ 。如果把所有的放在一起

    • 蒙特卡洛计算

    可以使用蒙特卡洛模拟来计算该函数,

    > F=function(x) ifelse(x<0,0,1-exp(-x)/3)
    > Finv=function(u) uniroot(function(x) F(x)-u,c(-1e-9,1e4))$root

    或(以避免不连续的问题)

    > Finv=function(u) ifelse(3*u>1,0,uniroot(function(x)
    + F(x)-u,c(-1e-9,1e4))$root))

    在这里,逆很容易获得,因此我们可以使用

    然后,我们使用

    
    > plot(u,v,type="b",col='blue')
    > lines(u,Mtheo(u),col="red")

    蒙特卡洛模拟的问题在于,仅当它们有效时才应使用它们。我可以计算

    
    > M(3)
    [1] 5748134

    有限总和始终可以通过数字计算。就算在这里 https://latex.codecogs.com/gif.latex?mathbb{E}(e^{3X})​ 不存在。就像Cauhy样本的平均值一样,即使期望值不存在,我也总是可以计算出来

    > mean(rcauchy(1000000))
    [1] 0.006069028

    这些生成函数在存在时会很有趣。也许使用特征函数是一个更好的主意。

    • 生成函数

    首先,让我们定义那些函数。

    如果 https://latex.codecogs.com/gif.latex?t​ 足够小。

    现在,如果我们使用泰勒展开式

    如果我们看一下该函数在0点的导数的值,那么

     可以为某些随机矢量在更高维度上定义一个矩生成函数 https://latex.codecogs.com/gif.latex?oldsymbol{X}=(X_1,cdots,X_d)​,

    ​如果要导出给定分布的矩,则一些矩生成函数很有趣。另一个有趣的特征是,在某些情况下,此矩生成函数(在某些条件下)完全表征了随机变量的分布。 https://latex.codecogs.com/gif.latex?%20h%3E0​,
    https://latex.codecogs.com/gif.latex?%20M_X(t)=M_Y(t)​ 对所有人 https://latex.codecogs.com/gif.latex?%20tin(-h,+h)​, 然后 https://latex.codecogs.com/gif.latex?Xoverset{mathcal{L}}{=}Y​。

    • 快速傅立叶变换

    回想一下欧拉公式,

    因此,看到傅立叶变换就不会感到惊讶。从这个公式,我们可以写

    使用傅立叶分析中的一些结果,我们可以证明概率函数满足

    也可以写成

    如果在点处的分布是绝对连续的,则可以获得类似的关系 ​,

    实际上,我们可以证明,

    然后可以使用1951年获得的吉尔-佩莱阿兹(Gil-Peleaz)的反演公式来获得累积分布函数,

    这意味着,在金融市场上工作的任何人都知道用于定价期权的公式(例如,参见  Carr&Madan(1999)  )。好处是,可以使用任何数学或统计软件来计算这些公式。

    • 特征函数和精算科学

    对精算科学来说,当我们处理独立随机变量的总和时,特征函数很有趣,因为总和的特征函数是特征函数的乘积。考虑计算Gamma随机变量复合和的99.5%分位数的问题,即

    https://latex.codecogs.com/gif.latex?%20S=sum_{n=1}^N%20X_i

     https://latex.codecogs.com/gif.latex?%20X_isimmathcal{G}(alpha,eta)​ 和 https://latex.codecogs.com/gif.latex?%20Nsimmathcal{P}(lambda)​。策略是分散损失金额,

    然后,要计算的代码 https://latex.codecogs.com/gif.latex?%20	ilde%20f(s)=mathbb{P}(Sin[spm1/2])​, 我们用

     99.5%分位数

    > sum(cumsum(f)<.995)

    考虑以下损失金额

    
    > print(X[1:5])
    [1] 75.51818 118.16428 14.57067 13.97953 43.60686

    让我们拟合一个伽玛分布。我们可以用

          shape         rate    
      1.309020256   0.013090411 
     (0.117430137) (0.001419982)
    
    > alpha
    [1] 1.308995
    > beta
    [1] 0.01309016

    无论如何,我们都有个人损失的Gamma分布参数。并假设泊松计数变量的均值为

    > lambda <- 100

    同样,可以使用蒙特卡洛模拟。我们可以使用以下通用代码:首先,我们需要函数来生成两种感兴趣的变量,

    如果我们生成一百万个变量,我们可以得到分位数的估算,

    > set.seed(1)
    > quantile(rcpd4(1e6),.995)
       99.5% 
    13651.64

    另一个想法是记住Gamma分布的比例:独立Gamma分布的总和仍然是Gamma(在参数上有附加假设,但在此我们考虑相同的Gamma分布)。因此,可以计算复合和的累积分布函数,

    如果我们求解那个函数,我们得到分位数

    > uniroot()$root
    [1] 13654.43

    这与我们的蒙特卡洛计算一致。现在,我们也可以在此处使用快速傅立叶变换,

    > sum(cumsum(f)<.995)
    [1] 13654

    让我们比较获得这三个输出的计算时间

    > system.time
           user      system     elapsed 
          2.453       0.106       2.611 
    > system.time
           user      system     elapsed
          0.041       0.012       0.361 
    > system.time
           user      system     elapsed
          0.527       0.020       0.560
  • 相关阅读:
    JavaScript对原始数据类型的拆装箱操作
    Javascript继承(原始写法,非es6 class)
    动态作用域与词法作用域
    自行车的保养
    探索JS引擎工作原理 (转)
    C语言提高 (7) 第七天 回调函数 预处理函数DEBUG 动态链接库
    C语言提高 (6) 第六天 文件(续) 链表的操作
    C语言提高 (5) 第五天 结构体,结构体对齐 文件
    C语言提高 (4) 第四天 数组与数组作为参数时的数组指针
    C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间
  • 原文地址:https://www.cnblogs.com/tecdat/p/13060869.html
Copyright © 2011-2022 走看看