Rパッケージでは見つけられない確率分布が与えられました。ランダムな値を生成するように指示されました。確率分布関数は、LogGamma分布と呼ばれ、以下の確率分布関数を有する。乱数生成を最適化するにはどうすればよいですか?
[;
このように、f(x)= \ frac {\ alpha^\ beta} {\ガンマ(\ ln {x})^ {\ beta-1} x^{この式の積分の逆数の明示的な式が見つからないので、一連の値を反復して、目的の確率を返す停止ポイントに到達するまで関数を作成しました。
LogGammaPDF <- function(x){
return(alpha^beta * log(x)^(beta - 1) * x^(-alpha-1)/gamma(beta))
}
MakeLogGammaRV <- function(n){
LogGammaRandomValues = c()
for(j in seq(1:n)){
i = 1
Prob = runif(1)
while(integrate(LogGammaPDF, lower=1, upper=i)$value < Prob){
i = i + .0001
}
LogGammaRandomValues[j] = i
}
}
MakeLogGammaRV(10)
ランダム変数を10にするには約1分かかります。どのようにしてこのプロセスを最適化できますか?
あなたは私の式を参照するTeX the Worldが必要になります。
このページ(https://cran.r-project.org/web/views/Distributions.html)には、log-gamma – HFBrowning
の可能なパッケージのリストがあります。また、この質問に関する2番目の回答(https:/Meta.stackexchange.com/questions/30559/latex-on-stack-overflow)Stack OverflowでのLaTeXのより優れた選択肢を提供します - 将来的に数式を投稿する必要がある場合) – HFBrowning
任意の分布から値を生成するにはその分布のCDFを反転させて、ランダムなUniform(0、1)値をフィードに入れることができます:https://en.wikipedia.org/wiki/Inverse_transform_samplingを参照してください。パッケージが配布されていない場合に便利です。 – Marius