Calculer les paramètres d'une distribution bêta à l'aide de la moyenne et de la variance


66

Comment puis-je calculer les paramètres et pour une distribution bêta si je connais la moyenne et la variance que je souhaite que la distribution ait? Des exemples d'une commande R pour ce faire seraient très utiles.βαβ


4
Notez que le paquetage betareg dans R utilise une autre paramétrisation (avec la moyenne, , et la précision, - et par conséquent la variance est ) qui évite d'avoir à effectuer ces calculs. ϕ = α + β μ ( 1 - μ ) / ( 1 + ϕ )μ=α/α+βϕ=α+βμ(1μ)/(1+ϕ)
Gay - Rétablir Monica

Réponses:


90

Je mets et et résolu pour et . Mes résultats montrent que et σ2=αβ

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

J'ai écrit du code R pour estimer les paramètres de la distribution bêta à partir d'une moyenne donnée, mu, et de la variance, 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))
}

Il y a eu une certaine confusion autour des limites de et de pour une distribution bêta donnée, alors clarifions cela ici.σ 2μσ2

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

2
@stan Ceci vous donnera la distribution bêta qui a la même moyenne et la même variance que vos données. Cela ne vous dira pas si la distribution correspond aux données. Essayez le test de Kolmogorov-Smirnov .
supposé normal

4
Quand j'appelle cette fonction avec estBetaParams(0.06657, 0.1)je reçois alpha=-0.025, beta=-0.35. Comment est-ce possible?
Amelio Vazquez-Reina -

1
Ces calculs ne fonctionneront que si la variance est inférieure à la moyenne * (1 moyenne).
danno

2
@danno - C'est toujours le cas que . Pour voir cela, réécrivez la variance comme suit: . Depuis , . σ 2 = μ ( 1 - μ )σ2μ(1μ) α+β+11σ2μ(1-μ)σ2=μ(1μ)α+β+1α+β+11σ2μ(1μ)
supposé normal

1
@ AmelioVazquez-Reina Si vous donnez vos données d'origine, je pense que la raison pour laquelle une distribution bêta ne convient pas sera rapidement claire.
Glen_b

21

Voici un moyen générique de résoudre ces types de problèmes, en utilisant Maple au lieu de R. Cela fonctionne également pour d'autres distributions:

with(Statistics):
eq1 := mu = Mean(BetaDistribution(alpha, beta)):
eq2 := sigma^2 = Variance(BetaDistribution(alpha, beta)):
solve([eq1, eq2], [alpha, beta]);

ce qui conduit à la solution

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

Ceci est équivalent à la solution de Max.


5

shape1=ashape2=b

f(x)=Γ(a+b)Γ(a)Γ(b)xa1(1x)b1

a>0b>00<x<1

En R, vous pouvez le calculer par

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

E(X)=aa+bV(X)=ab(a+b)2(a+b+1)

Bon travail!

Modifier

Je trouve:

a=(1μV1μ)μ2

et

b=(1μV1μ)μ(1μ)

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


Je me rends compte que ma réponse est très semblable aux autres. Néanmoins, je pense que c'est toujours un bon point de vérifier d'abord ce que la paramétrisation R utilise ....
ocram

2

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

1
Wikipedia a une section sur l'estimation des paramètres qui vous permet d'éviter trop de travail :)
rm999

1

[a,b]

μ=aβ+bαα+β,σ2=αβ(ba)2(α+β)2(1+α+β)

qui peut être inversé pour donner:

α=λμaba,β=λbμba

λ=(μa)(bμ)σ21

Un utilisateur a tenté de laisser le commentaire suivant: "Il y a une erreur quelque part ici. La formulation actuelle ne renvoie pas la variance correcte."
Silverfish

1

μαββ

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


0

Je cherchais du python, mais je suis tombé sur ça. Donc, cela serait utile pour d'autres comme moi.

Voici un code python pour estimer les paramètres bêta (selon les équations données ci-dessus):

# 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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.