Gamma_inv возвращает ошибку, если случайное число больше 0,96 - PullRequest
1 голос
/ 06 мая 2020

Gamma_inv возвращает ошибку, если переданное ему случайное число больше примерно 0,96. Это происходит как в Excel, так и в VBA. Я бегаю на Монте-Карло, и это происходит примерно 10 раз из более чем 40 000 пробежек. Вот как я это использую. альфа и бета всегда> 0. Если "gammatrun c" = 1, я получаю ошибки. Если установить 0,95, ошибок не будет:

     alpha = B * B * bsy2 ^ -2
     beta = bsy2 * bsy2 / B
     rand = Rnd * gammatrunc
     B = WorksheetFunction.GAMMA_Inv(rand, alpha, beta)

Ошибки выглядят так:

Вывод с сообщениями об ошибках

I Буду признателен за любые мысли о том, почему это происходит.

Спасибо

1 Ответ

0 голосов
/ 06 мая 2020
You can use this function to study a variable whose distribution may be skewed.

If any argument is text, Gamma_Inv returns the #VALUE! error value.

If probability < 0 or probability > 1, Gamma_Inv returns the #NUM! error value.

If alpha ≤ 0 or if beta ≤ 0, Gamma_Inv returns the #NUM! error value.

Given a value for probability, Gamma_Inv seeks that value x such that GAMMA_DIST(x, alpha, beta, TRUE) = probability. Thus, precision of Gamma_Inv depends on precision of Gamma_Dist. Gamma_Inv uses an iterative search technique. If the search has not converged after 100 iterations, the function returns the #N/A error value.

https://docs.microsoft.com/en-us/office/vba/api/excel.worksheetfunction.gamma_inv

Вы можете добавить в свой код некоторые элементы управления, такие как MIN и MAX, используя VBA.

...