Попытка создать таблицу для квантилей суммы двух зависимых случайных величин с использованием встроенных распределений копул (Clayton, Frank, Gumbel) с бета-маргиналами. Пробовал Nrobability
и FindRoot
различными методами - недостаточно быстро.
Пример сочетания связки и края, который мне нужно изучить, следующий:
nProbClayton[t_?NumericQ, c_?NumericQ] :=
NProbability[ x + y <= t, {x, y} \[Distributed]
CopulaDistribution[{"Clayton", c}, {BetaDistribution[8, 2],
BetaDistribution[8, 2]}]]
Для однократная оценка числовой вероятности с использованием
nProbClayton[1.9, 1/10] // Timing // Quiet
Я получаю
{4.914, 0.939718}
на машине Vista 64bit Core2 Duo T9600 2,80 ГГц (MMA 8.0.4)
Чтобы получить квантиль суммы, используя
FindRoot[nProbClayton[q, 1/10] == 1/100, {q, 1, 0, 2}// Timing // Quiet
различными методами
( `Method -> Automatic`, `Method -> "Brent"`, `Method -> "Secant"` )
занимает около минуты, чтобы найти единственный квантиль: Время
{48.781, {q -> 0.918646}}
{50.045, {q -> 0.918646}}
{65.396, {q -> 0.918646}}
Для других комбинаций маргинальных комбинаций время немного лучше.
Потребность: любые хитрости / способы улучшения таймингов.