Предположим, что сумма ущерба в долларовом выражении, связанного с автомобильной аварией, является экспоненциальной случайной величиной со средним значением 1000. Из этого страховая компания выплачивает только сумму, превышающую франшизу в 400. Если X является случайной величиной, представляющей доллар сумма ущерба, то страховая выплата не более (X-400,0).
Я пытаюсь использовать функцию квадрата Сципи для оценки интеграла между 0 и бесконечностью max (x-400)
Вот ссылка для лучшей наглядности: https://imgur.com/a/XIglH8i
Мне нужно проверить ответ 670.32, используя симуляцию Монте-Карло, и я считаю, что мне нужно использовать функцию nramp .random.exponential, чтобы нарисовать 10 000 000 выборок X.
Как уже упоминалось, я пытаюсь использовать квадроцикл Сципи для определения интеграла, но я борюсь за то, чтобы включить повторяющееся число циклов таким образом, чтобы 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