Wie kann ich die Parameter und für eine Beta-Verteilung berechnen, wenn ich den Mittelwert und die Varianz kenne, die die Verteilung haben soll? Beispiele für einen R-Befehl dazu wären am hilfreichsten.
Wie kann ich die Parameter und für eine Beta-Verteilung berechnen, wenn ich den Mittelwert und die Varianz kenne, die die Verteilung haben soll? Beispiele für einen R-Befehl dazu wären am hilfreichsten.
Antworten:
Ich setze und und gelöst für und . Meine Ergebnisse zeigen, dass und
Ich habe einen R-Code geschrieben, um die Parameter der Beta-Verteilung aus einem gegebenen Mittelwert mu und der Varianz var abzuschätzen:
estBetaParams <- function(mu, var) {
alpha <- ((1 - mu) / var - 1 / mu) * mu ^ 2
beta <- alpha * (1 / mu - 1)
return(params = list(alpha = alpha, beta = beta))
}
Es gab einige Verwirrungen um die Grenzen von und für jede gegebene Beta-Distribution, also lassen Sie uns das hier klarstellen.
estBetaParams(0.06657, 0.1)
mir alpha=-0.025
, beta=-0.35
. Wie ist das möglich?
Im Folgenden finden Sie eine allgemeine Methode zum Lösen dieser Art von Problemen mit Maple anstelle von R. Dies funktioniert auch für andere Distributionen:
with(Statistics):
eq1 := mu = Mean(BetaDistribution(alpha, beta)):
eq2 := sigma^2 = Variance(BetaDistribution(alpha, beta)):
solve([eq1, eq2], [alpha, beta]);
was zur Lösung führt
Dies entspricht der Lösung von Max.
In R hat die Beta-Verteilung mit den Parametern und Dichte
,
für , und .
In R können Sie es mit berechnen
dbeta (x, shape1 = a, shape2 = b)
In dieser Parametrisierung ist der Mittelwert und die Varianz ist . Sie können jetzt also der Antwort von Nick Sabbe folgen.
Gute Arbeit!
Bearbeiten
Ich finde:
,
und
,
wobei und .
Auf Wikipedia finden Sie zum Beispiel die folgenden Formeln für den Mittelwert und die Varianz einer Beta-Verteilung in Alpha und Beta: und Diese invertieren ( in der unteren Gleichung ausfüllen ) sollte geben Sie das gewünschte Ergebnis (obwohl es einige Arbeit dauern kann).
die invertiert werden kann, um zu geben:
wo
Ich habe nach Python gesucht, bin aber darauf gestoßen. Das wäre also nützlich für andere wie mich.
Hier ist ein Python-Code zum Abschätzen der Beta-Parameter (gemäß den oben angegebenen Gleichungen):
# estimate parameters of beta dist.
def getAlphaBeta(mu, sigma):
alpha = mu**2 * ((1 - mu) / sigma**2 - 1 / mu)
beta = alpha * (1 / mu - 1)
return {"alpha": 0.5, "beta": 0.1}
print(getAlphaBeta(0.5, 0.1) # {alpha: 12, beta: 12}
scipy.stats.beta