假设车祸所涉及的美元损失是一个指数随机变量,平均值为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次。
from scipy.integrate import quad
from numpy import exp, log, inf
import numpy as npexponential_var=np.random.exponential(1,10000000)
def Expected_Payout(x):
return max(exponential_var - 400,0)v,b = quad(Expected_Payout, 0 ,inf )如何定义我的函数来获取一个指数型变量并存储它们以重复这个过程?
结果应该是~= 670.32
发布于 2019-04-06 12:03:06
我觉得你做的太多了。
import numpy as np
a = np.random.exponential(1000., size=10000000)
np.maximum(a-400, 0).mean()
Out[13]: 670.3739442241515如果你在做抽样,我不认为你需要整合。
https://stackoverflow.com/questions/55547897
复制相似问题