ディリクレcdfの実装?


8

Dirichlet CDFを計算する必要がありますが、PDFの実装しか見つかりません。

Rそれを実装しているライブラリ(できれば)を知っていますか?


1
直接気付かない。しかし、できることがあるかもしれません。あなたはそれをどうする必要がありますか?
Glen_b-モニカを復活させる2013

2
CDFの補数を取り、それを私のp値と見なす必要があります。
リッキーロビンソン

2
うーん。つまり、が必要な場合はが必要です。Zenのシミュレーションのアイデアは確かにそれを行う方法です(次元数が多いほど見栄えがよくなります)が、その場合は、の組み込み実装を備えたパッケージの1つを使用します。それが3変量またはおそらく4変量(もちろん、最後のコンポーネントは冗長)である場合、数値の求積法を試す価値があります。1P(X1x1,X2x2,...,Xkxk)rdirichlet
Glen_b-2013

回答:


9

が独立している場合、場合、 YiGamma(ai,b)i=1,,k

(X1,,Xk)=(Y1j=1kYj,,Ykj=1kYj)Dirichlet(a1,,ak).

証明はLuc Devroyeの本の 594ページにあります。

したがって、1つの可能性はモンテカルロ近似を計算することです 、、ガンマ始まる。で、これを試してください:

FX1,,Xk(t1,,tk)=P{X1t1,,Xktk},
R
pdirichlet <- function(a, t) {
    N <- 10000
    rdirichlet <- function(a) { y <- rgamma(length(a), a, 1); y / sum(y) }
    x <- replicate(N, rdirichlet(a), simplify = FALSE)
    sum(sapply(x, function(x) prod(x <= t))) / N
}

コードはチェックしませんでした。慎重に使用してください。バグを見つけたら教えてください。


3
ベクトル化rdirichlet機能は、既にRにあります-実際にはそれらのいくつかは(でgtoolsMCMCpackそしてdirmult例えば)。
Glen_b-モニカを復元する

@禅Drichelt cdfをa <- c(6, 20,2)取得する方法はありますか?t 2 x 2行列ですか?
score324

上記のコードを使用しましたが、エラーが発生しました。
score324

1[0,1]1(6,20,2)

2

ライブラリはありますか?Mathematicaにはそれがあります。ドキュメントからのディリクレCDFのプロット例のコードは次のとおりです。

Plot3D[CDF[DirichletDistribution[{1, 3, 2}], {x, y}], {x, 0, 1}, {y, 0, 1}]

1
CDF [DirichletDistribution [{1、3、2}]]の式を取得する方法
AIB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.