Calcolo dei parametri di una distribuzione Beta utilizzando la media e la varianza


66

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.αβ


4
Si noti che il pacchetto betareg in R utilizza una parametrizzazione alternativa (con la media, , e la precisione, ϕ = α + β - e quindi la varianza è μ ( 1 - μ ) / ( 1 + ϕ ) ) che ovvia alla necessità di questi calcoli. μ=α/α+βφ=α+βμ(1-μ)/(1+φ)
gung - Ripristina Monica

Risposte:


90

Ho impostato eσ2=αβ

μ=αα+β
e risolto perαeβ. I miei risultati mostrano cheα=(1-μ
σ2=αβ(α+β)2(α+β+1)
αβeβ=α(1
α=(1μσ21μ)μ2
β=α(1μ1)

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.μσ2

  1. μ=αα+β(0,1)
  2. σ2=αβ(α+β)2(α+β+1)=μ(1μ)α+β+1<μ(1μ)1=μ(1μ)(0,0.52)

2
@stan Questo ti darà la distribuzione Beta che ha la stessa media e varianza dei tuoi dati. Non ti dirà in che misura la distribuzione si adatta ai dati. Prova il test di Kolmogorov-Smirnov .
assunto normale il

4
Quando chiamo questa funzione con estBetaParams(0.06657, 0.1)ricevo alpha=-0.025, beta=-0.35. Com'è possibile?
Amelio Vazquez-Reina

1
Questi calcoli funzioneranno solo se la varianza è inferiore alla media * (1 media).
danno

2
@danno - È sempre il caso che . Per vedere questo, riscrivi la varianza come σ 2 = μ ( 1 - μ )σ2μ(1μ) . Poichéα+β+11,σ2μ(1-μ). σ2=μ(1μ)α+β+1α+β+11σ2μ(1μ)
assunto il

1
@ AmelioVazquez-Reina Se dai i tuoi dati originali, mi aspetto che sarà presto evidente il motivo per cui una distribuzione beta non è adatta.
Glen_b,

21

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

α=-μ(σ2+μ2-μ)σ2β=(σ2+μ2-μ)(μ-1)σ2.

Ciò equivale alla soluzione di Max.


5

In R, la distribuzione beta con i parametri e shape2 = b ha densitàShape1=un'shape2=B

,f(X)=Γ(un'+B)Γ(un')Γ(B)Xun'-1(1-X)B-1

un'>0B>00<X<1 .

In R, puoi calcolarlo per

dbeta (x, shape1 = a, shape2 = b)

E(X)=un'un'+BV(X)=un'B(un'+B)2(un'+B+1) . Quindi, ora puoi seguire la risposta di Nick Sabbe.

Buon lavoro!

modificare

Io trovo:

un'=(1-μV-1μ)μ2

e

B=(1-μV-1μ)μ(1-μ)

μ=E(X)V=V(X)


Mi rendo conto che la mia risposta è molto simile alle altre. Tuttavia, credo che sia sempre un buon punto per prima cosa controllare quale parametrizzazione R usa ....
ocram

2

μ=αα+β
σ2=αβ(α+β)2(α+β+1)
β=α(1μ-1)

1
Wikipedia ha una sezione sulla stima dei parametri che ti consente di evitare troppo lavoro :)
rm999

1

[un',B]

μ=un'β+Bαα+β,σ2=αβ(B-un')2(α+β)2(1+α+β)

che può essere invertito per dare:

α=λμ-un'B-un',β=λB-μB-un'

dove

λ=(μ-un')(B-μ)σ2-1

Un utente ha tentato di lasciare il seguente commento: "c'è un errore da qualche parte qui. La formulazione corrente non restituisce la varianza corretta".
Silverfish

1

μαββ

β=α(1-μ)μ
α
σ2=α2(1-μ)μ(α+α(1-μ)μ)2(α+α(1-μ)μ+1)
σ2=α2(1-μ)μ(αμ)2α+μμ
σ2=(1-μ)μ2α+μ
α


0

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.