R语言蒙特卡洛计算和快速傅立叶变换计算矩生成函数
时间:2022-07-25
本文章向大家介绍R语言蒙特卡洛计算和快速傅立叶变换计算矩生成函数,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
原文链接:http://tecdat.cn/?p=13734
概率论中,矩生成函数(Moment-generating Function)和特征函数(Characteristic Function)是定义 概率分布函数的另一种形式。
特征函数能够唯一确定随机变量的概率分布,如果随机变量的概率密度函数f(x)存在,特征函数相当于 f(x)的傅里叶变换。
如果随机变量分布的矩母函数存在,那么矩母函数和特征函数之间存在关系。
- 蒙特卡洛计算
可以使用蒙特卡洛模拟来计算矩生成函数函数,
> 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
有限总和始终可以通过数字计算。就算在这里 不存在。就像Cauhy样本的平均值一样,即使期望值不存在,我也总是可以计算出来
> mean(rcauchy(1000000))
[1] 0.006069028
这些生成函数在存在时会很有趣。也许使用特征函数是一个更好的主意。
- 特征函数
当我们处理独立随机变量的总和时,特征函数很有趣,因为总和的特征函数是特征函数的乘积。考虑计算Gamma随机变量复合和的99.5%分位数的问题,即
策略是分散损失金额,
然后,要计算的代码 , 我们用
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
- 腾讯云GAME-TECH沙龙干货回顾:猎豹游戏出海经验分享
- 腾讯云GAME-TECH沙龙干货回顾:绿洲全球化案例分享
- 基于云计算的 CV 移动交互应用研究(1):CV交互+云计算
- ARKit 进阶:物理世界
- HLS 视频点播初探
- 周杰伦读心术背后的技术实现
- 盒子端 CSS 动画性能提升研究
- 把照片唱给你听 :腾讯 AI Lab 国际领先技术邀你「趣」体验
- 因为超算云,你将比别人早10年“抵达”未来
- 网页加速特技之 AMP
- 刷屏的背后:原来腾讯字体是CDC和Monotype联手打造的
- 重磅!腾讯与科大讯飞技术共创,Google ProtoBuf进入TARS家族!
- 一个简易版的T4代码生成"框架"
- yield在WCF中的错误使用——99%的开发人员都有可能犯的错误[上篇]
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 计算等压面要素场的基本检验指标
- Kubernetes K8S之SSL证书有效期修改
- Kubernetes K8S之通过yaml文件创建Pod与Pod常用字段详解
- Kubernetes K8S之kubectl命令详解及常用示例
- Kubernetes K8S之Pod 生命周期与init container初始化容器详解
- Kubernetes K8S之Pod生命周期与探针检测
- Kubernetes K8S之Pod 生命周期与postStart、preStop事件
- Kubernetes K8S之资源控制器RC、RS、Deployment详解
- python教程 | 最标准的地图调用方式(国家测绘局提供数据)
- Kubernetes K8S之资源控制器StatefulSets详解
- Kubernetes K8S之资源控制器Daemonset详解
- Kubernetes K8S之资源控制器Job和CronJob详解
- Kubernetes K8S在IPVS代理模式下Service服务的ClusterIP类型访问失败处理
- Kubernetes K8S之Pod跨namespace名称空间访问Service服务
- Kubernetes K8S之Service服务详解与示例