尝试使用带有 Beta 边际的内置 copula 分布(Clayton、Frank、Gumbel)为两个因随机变量之和的分位数创建一个表。尝试NProbability
并FindRoot
使用各种方法 - 不够快。我需要探索的 copula-marginal 组合的一个例子如下:
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 64 位 Core2 Duo T9600 2.80GHz 机器上 (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}}
对于其他 copula-marginal 组合,时间稍好一些。
需要:任何改善计时的技巧/方法。