Come posso calcolare i parametri e β per una distribuzione Beta se conosco la media e la varianza che voglio avere nella distribuzione? Esempi di un comando R per fare ciò sarebbero di grande aiuto.
Come posso calcolare i parametri e β per una distribuzione Beta se conosco la media e la varianza che voglio avere nella distribuzione? Esempi di un comando R per fare ciò sarebbero di grande aiuto.
Risposte:
Ho impostato eσ2=αβ
Ho scritto un codice R per stimare i parametri della distribuzione Beta da una data media, mu e varianza, var:
estBetaParams <- function(mu, var) {
alpha <- ((1 - mu) / var - 1 / mu) * mu ^ 2
beta <- alpha * (1 / mu - 1)
return(params = list(alpha = alpha, beta = beta))
}
C'è stata una certa confusione attorno ai limiti di e σ 2 per ogni data distribuzione Beta, quindi chiariamolo qui.
estBetaParams(0.06657, 0.1)
ricevo alpha=-0.025
, beta=-0.35
. Com'è possibile?
Ecco un modo generico per risolvere questi tipi di problemi, usando Maple invece di R. Funziona anche con altre distribuzioni:
with(Statistics):
eq1 := mu = Mean(BetaDistribution(alpha, beta)):
eq2 := sigma^2 = Variance(BetaDistribution(alpha, beta)):
solve([eq1, eq2], [alpha, beta]);
che porta alla soluzione
Ciò equivale alla soluzione di Max.
In R, la distribuzione beta con i parametri e shape2 = b ha densità
,
.
In R, puoi calcolarlo per
dbeta (x, shape1 = a, shape2 = b)
. Quindi, ora puoi seguire la risposta di Nick Sabbe.
Buon lavoro!
modificare
Io trovo:
e
che può essere invertito per dare:
dove
Stavo cercando Python, ma mi sono imbattuto in questo. Quindi questo sarebbe utile per altri come me.
Ecco un codice Python per stimare i parametri beta (secondo le equazioni fornite sopra):
# 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