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



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

我正在尝试使用 scipy 的四元函数来评估 max(x-400) 的 0 和无穷大之间的积分

这是更好地可视化的链接:https://i.stack.imgur.com/SRFae.jpg

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

如前所述,我正在尝试使用 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

如果您正在进行采样,我认为您不需要集成。

最新更新