使用 numpy.random.exponential 抽取 X 的 10,000,000 个样本来估计支出的预期值

Using the numpy.random.exponential to draw 10,000,000 samples of X to estimate the expected value of a payout

假设车祸的损失金额是指数随机变量,均值为1000。其中,保险公司只赔付超过免赔额400的部分。如果X是一个随机变量,代表美元的损失金额,那么保险赔付是 max(X-400,0)。

我正在尝试使用 scipy 的 quad 函数来计算 max(x-400)

的 0 和无穷大之间的积分

这里是 link 以更好地可视化:https://imgur.com/a/XIglH8i

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

如前所述,我正在尝试使用 scipy 的四边形来定义积分,但我正在努力的地方是如何合并循环的重复次数,使 X 被绘制 10,000,000 次。我希望 for 循环效率极低,因此相信使用矩阵操作进行广播可能是一种更有效的解决方案。不幸的是,这超出了我的编程经验水平,并且真的可以在以下方面使用一些帮助:有效地收集 X 的样本,然后 2,将其合并到评估 X 的积分的函数中,将其存储在某些数据结构中, 并重复该过程 10,000,000 次

from scipy.integrate import quad
from numpy import exp, log, inf
import numpy as np
exponential_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

我觉得你做的太多了

import numpy as np
a = np.random.exponential(1000., size=10000000)
np.maximum(a-400, 0).mean()
Out[13]: 670.3739442241515

如果您正在进行抽样,我认为您不需要整合。