Log-Cauchy-Zufallszahlengenerierung

10

Ich muss Zufallszahlen aus einer logarithmischen Verteilung mit der folgenden Dichte ziehen: Kann mir jemand helfen oder mich auf ein Buch / Papier verweisen, das mir zeigen könnte, wie?

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

Antworten:

11

Eine Variable hat eine log-cauchy-Verteilung, wenn eine cauchy-Verteilung hat. Wir müssen also nur cauchy Zufallsvariablen generieren und sie potenzieren, um etwas zu erhalten, das log-cauchy verteilt ist.log ( X )Xlog(X)

Wir können aus der Cauchy-Verteilung mithilfe der inversen Transformationsabtastung generieren. Wenn Sie zufällige Uniformen in die inverse CDF einer Verteilung einfügen, hat das, was Sie herausholen, diese Verteilung. Die Cauchy-Verteilung mit Location und Scale hat CDF:σμσ

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

Es ist einfach, diese Funktion zu invertieren, um dies zu finden

F1(y)=μ+σtan[π(y12)]

Wenn also dann ist hat eine Cauchy-Verteilung mit Location und Scale und hat eine Log-Cauchy-Verteilung. Einige Codes, die aus dieser Distribution generiert werden sollen (ohne :))Y = μ + σUUniform(0,1)μσexp(Y)Y=μ+σtan[π(U12)]μσexp(Y)Rrcauchy

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

Hinweis: Da die Cauchy-Verteilung sehr langwierig ist, erhalten Sie beim Potenzieren auf einem Computer möglicherweise Werte, die numerisch "unendlich" sind. Ich bin mir nicht sicher, ob man etwas dagegen tun kann.

Beachten Sie auch, dass Sie das gleiche Problem haben würden, wenn Sie die inverse Transformationsabtastung direkt mit der log-cauchy-Quantilfunktion durchführen würden, da Sie nach der Berechnung tatsächlich dasselbe tun -exp(μ+σtan[π(U12)])

Makro
quelle
1
Hier ist eine +1 für Makro
Michael R. Chernick