ログコーシー乱数生成


10

密度のあるログコーシー分布から乱数を描く必要があります: 誰かが私を助けたり、私に方法を示すことができる本/紙を私に指摘したりできますか?

f(x;μ,σ)=1xπσ[1+(ln(x)−μσ)2].

回答:


11

コーシー分布がある場合、変数にはログコーシー分布があります。したがって、コーシー確率変数を生成し、それらを累乗して、ログコーシー分布の何かを取得する必要があります。Xlog⁡(X)

逆変換サンプリングを使用してコーシー分布から生成できます。つまり、ランダムなユニフォームを分布の逆CDFにプラグインすると、得られるものはその分布になります。場所がでスケールがのコーシー分布にはCDFがあります。μσ

F(x)=1πarctan⁡(x−μσ)+12

この関数を反転させてそれを見つけることは簡単です

F−1(y)=μ+σtan⁡[π(y−12)]

したがって、場合、は、場所およびスケールコーシー分布があり、は、ログコーシー分布があります。いくつかのこの分布から生成するためのコード(使用せずに:))U∼Uniform(0,1)μσEXP(Y)Y=μ+σtan⁡[π(U−12)]μσexp⁡(Y)Rrcauchy

rlogcauchy <- function(n, mu, sigma)
{
    u = runif(n)
    x = mu + sigma*tan(pi*(u-.5))
    return( exp(x) ) 
}

注:コーシー分布は非常に長い裾を持っているため、コンピューター上で指数化すると、数値的に「無限」の値が得られる場合があります。それについてなすべきことが何かあるかどうかはわかりません。

また、log-cauchy変位値関数を直接使用して逆変換サンプリングを行うと、同じ問題が発生します。これは、計算を行った後、実際に同じ動作をすることになるためです-exp⁡(μ+σtan⁡[π(U−12)])


1
これがマクロの+1です
— マイケルR.チェリック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.