同じスケールパラメーターを持つガンマ確率変数の合計が別のガンマ確率変数であることを読みました。また、Moschopoulosによる、ガンマランダム変数の一般的なセットを合計する方法を説明する論文を見ました。Moschopoulosのメソッドを実装しようとしましたが、まだ成功していません。
ガンマランダム変数の一般的なセットの合計はどのように見えますか?この質問を具体的にするために、それは次のように見えます:
上記のパラメータが特に明らかになっていない場合は、他のものを提案してください。
同じスケールパラメーターを持つガンマ確率変数の合計が別のガンマ確率変数であることを読みました。また、Moschopoulosによる、ガンマランダム変数の一般的なセットを合計する方法を説明する論文を見ました。Moschopoulosのメソッドを実装しようとしましたが、まだ成功していません。
ガンマランダム変数の一般的なセットの合計はどのように見えますか?この質問を具体的にするために、それは次のように見えます:
上記のパラメータが特に明らかになっていない場合は、他のものを提案してください。
回答:
最初に、同じスケール係数を持つ任意の合計を組み合わせます:プラス変量は変量を形成します。
次に、特性関数の(CF)ことを観察である、これらの分布の和のCFは、生成物であるそこ
場合全てであり、積分、この製品は部分分数として展開に線形組み合わせの(1 - I β J T )- νここで、νは、間の整数であり、1とN jは。例のβ 1 = 1 、N 1 = 8の和から(Γ (3 、1 )とΓ (5 、1 )および β 2 = 2 、N 2 = 4、我々は見つけます
cfの取得の逆は逆フーリエ変換です。これは線形です。つまり、用語ごとに適用できます。各用語は、ガンマ分布のcfの倍数として認識できるため、簡単に反転してPDFを生成できます。例では、取得します
合計のPDF用。
これは、合計内のスケールファクターに等しいスケールファクターと合計内のスケールファクター以下のスケールファクターを持つガンマ分布の有限混合です。特別な場合(ここで、いくつかのキャンセルが発生する可能性がある)を除いて、用語の数は、全形状パラメータによって与えられる(すべての仮定のn jは異なります)。
テストとして、ここでのヒストグラムであるの独立を添加することによって得られた結果から描画Γ (8 、1 )とΓ (4 、2 )分布。その上に、前の関数の10 4倍のグラフが重ねられます。フィット感はとても良いです。
Moschopoulos は、n iの 1つ以上が非整数であるときはいつでも合計のcfをガンマ特性関数の無限級数に拡張することによりこの考えをさらに進め、その後、合理的に十分に近似される点で無限級数を終了します。
I will show another possible solution, that is quite widely applicable, and with todays R software, quite easy to implement. That is the saddlepoint density approximation, which ought to be wider known!
For terminology about the gamma distribution, I will follow https://en.wikipedia.org/wiki/Gamma_distribution with the shape/scale parametrization, is shape parameter and is scale. For the saddlepoint approximation I will follow Ronald W Butler: "Saddlepoint approximations with applications" (Cambridge UP). The saddlepoint approximation is explained here: How does saddlepoint approximation work? here I will show how it is used in this application.
ましょ既存のmomentgenerating機能を持つ確率変数 M (S )= EのE S Xのために存在しなければならないのゼロが含まれているいくつかの開区間で。次いでによってキュムラント生成関数定義 K (複数可)= ログM (複数可) ことが知られているE X = K '(0 )、ヴァー(X )= K "(0 )
次いで、密度にsaddlepoint近似のXは、で与えられる F(X )= 1
R
code calculating this, and will use the parameter values , , . Note that the following R
code uses a new argument in the uniroot function introduced in R 3.1, so will not run in older R's.
shape <- 1:3 #ki
scale <- 1:3 # thetai
# For this case, we get expectation=14, variance=36
make_cumgenfun <- function(shape, scale) {
# we return list(shape, scale, K, K', K'')
n <- length(shape)
m <- length(scale)
stopifnot( n == m, shape > 0, scale > 0 )
return( list( shape=shape, scale=scale,
Vectorize(function(s) {-sum(shape * log(1-scale * s) ) }),
Vectorize(function(s) {sum((shape*scale)/(1-s*scale))}) ,
Vectorize(function(s) { sum(shape*scale*scale/(1-s*scale)) })) )
}
solve_speq <- function(x, cumgenfun) {
# Returns saddle point!
shape <- cumgenfun[[1]]
scale <- cumgenfun[[2]]
Kd <- cumgenfun[[4]]
uniroot(function(s) Kd(s)-x,lower=-100,
upper = 0.3333,
extendInt = "upX")$root
}
make_fhat <- function(shape, scale) {
cgf1 <- make_cumgenfun(shape, scale)
K <- cgf1[[3]]
Kd <- cgf1[[4]]
Kdd <- cgf1[[5]]
# Function finding fhat for one specific x:
fhat0 <- function(x) {
# Solve saddlepoint equation:
s <- solve_speq(x, cgf1)
# Calculating saddlepoint density value:
(1/sqrt(2*pi*Kdd(s)))*exp(K(s)-s*x)
}
# Returning a vectorized version:
return(Vectorize(fhat0))
} #end make_fhat
fhat <- make_fhat(shape, scale)
plot(fhat, from=0.01, to=40, col="red", main="unnormalized saddlepoint approximation\nto sum of three gamma variables")
resulting in the following plot:
I will leave the normalized saddlepoint approximation as an exercise.
R
、近似を正確な答えと比較するためにコードを機能させることはできません。呼び出しを試みるとfhat
、明らかにを使用してエラーが発生しますuniroot
。
ウェルチ-サタスウェイトの式を与えるために使用することができる近似ガンマ分布の形で回答を。これには、ガンマ分布を加算時に(ほぼ)閉じているものとして扱うことができるという優れた特性があります。これは、一般的に使用されるウェルチのt検定の近似です。
(ガンマ分布は、スケーリングされたカイ二乗分布と見なすことができ、非整数の形状パラメーターを許可します。)
近似値を ガンマ分布のパラメータ化:
させて 、
したがって、およそGamma(10.666 ...、1.5)が得られます
形状パラメーターが表示されます 多かれ少なかれ合計されていますが、入力スケールパラメーター 異なる。 合計が正しい平均値を持つようなものです。