0

自動車事故による損害のドル額が平均 1000 の指数確率変数であると仮定します。このうち、保険会社は 400 の免責額を超える額のみを支払います。X が損害額を表す確率変数である場合の場合、保険の支払いは max(X-400,0) です。

scipy の quad 関数を使用して、max(x-400) の 0 と無限大の間の積分を評価しようとしています。

視覚化を改善するためのリンクは次のとおりです: https://imgur.com/a/XIglH8i

モンテカルロ シミュレーションを使用して 670.32 の答えを検証する必要があり、numpy の .random.exponential 関数を使用して X の 10,000,000 サンプルを描画する必要があると考えています。

前述のように、scipy の quad を使用して積分を定義しようとしていますが、苦労しているのは、X が 10,000,000 回描画されるようなループの繰り返し回数をどのように組み込むかです。for ループは非常に非効率的であると予想されるため、行列操作を使用したブロードキャストがより効率的なソリューションになる可能性があると考えています。残念ながら、これは私のプログラミング経験のレベルを超えており、X のサンプルを効率的に収集し、それを 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