0

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

我正在尝试使用 scipy 的 quad 函数来评估 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 的样本,然后 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

4

1 回答 1

2

我觉得你做的太多了。

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

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

于 2019-04-06T12:03:06.723 回答