首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用numpy.random.exponential绘制10,000,000个X样本,估计支出的期望值

使用numpy.random.exponential绘制10,000,000个X样本,估计支出的期望值
EN

Stack Overflow用户
提问于 2019-04-06 09:55:20
回答 1查看 1.1K关注 0票数 0

假设车祸所涉及的美元损失是一个指数随机变量,平均值为1000。其中,保险公司只支付超过400元的扣除额。如果X是一个随机变量,表示损失的美元金额,那么保险支出是最大的(X-400,0)。

我试图用400的四函数来计算max(x-400)的0到无穷远之间的积分。

下面是更好地可视化的链接:https://imgur.com/a/XIglH8i

我需要用蒙特卡罗模拟来验证670.32的答案,我相信我需要使用numpy的.random.exponential函数来绘制10,000,000个X的样本。

正如前面提到的,我试图用scipy的四边形来定义积分,但是我挣扎的地方是如何合并重复的循环数,这样X被画了10,000,000次。我认为for循环效率极低,因此相信使用矩阵操作的广播可能是一个更有效的解决方案。不幸的是,这超出了我的编程经验,而且实际上需要一些帮助来解决一个问题:高效地收集X的样本,然后将它合并到一个函数中,计算X的整数,将其存储在某种数据结构中,并重复这个过程10,000,000次。

代码语言:javascript
复制
from scipy.integrate import quad
from numpy import exp, log, inf
import numpy as np
代码语言:javascript
复制
exponential_var=np.random.exponential(1,10000000)
def Expected_Payout(x):
    return max(exponential_var - 400,0)
代码语言:javascript
复制
v,b = quad(Expected_Payout, 0 ,inf )

如何定义我的函数来获取一个指数型变量并存储它们以重复这个过程?

结果应该是~= 670.32

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-06 12:03:06

我觉得你做的太多了。

代码语言:javascript
复制
import numpy as np
a = np.random.exponential(1000., size=10000000)
np.maximum(a-400, 0).mean()
Out[13]: 670.3739442241515

如果你在做抽样,我不认为你需要整合。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55547897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档