Обчислення параметрів бета-розподілу за допомогою середнього та дисперсії


66

Як я можу обчислити параметри і β для бета-розподілу, якщо я знаю середнє значення та дисперсію, яку я хочу мати у розподілі? Приклади команди R для цього були б найбільш корисними.αβ


4
Зауважимо, що пакунок betareg в R використовує альтернативну параметризацію (із середнім значенням, , і точністю, ϕ = α + β - і, отже, дисперсія дорівнює μ ( 1 - μ ) / ( 1 + ϕ ) ) що унеможливлює необхідність цих розрахунків. μ=α/α+βϕ=α+βμ(1μ)/(1+ϕ)
gung - Відновіть Моніку

Відповіді:


90

Встановлю іσ2=αβ

μ=αα+β
і розв'язується дляαіβ. Мої результати показують, щоα=(1-μ
σ2=αβ(α+β)2(α+β+1)
αβіβ=α(1
α=(1μσ21μ)μ2
β=α(1μ1)

Я написав деякий код R для оцінки параметрів розподілу бета-версії з заданої середньої, мю та дисперсії, 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))
}

μσ2

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

2
@stan Це дасть вам розповсюдження бета-версії, яке має те саме значення та дисперсію, що й ваші дані. Це не скаже вам, наскільки добре розподіл відповідає даним. Спробуйте тест Колмогорова-Смірнова .
припускаєтьсянормальне

4
Коли я викликаю цю функцію estBetaParams(0.06657, 0.1)я alpha=-0.025, beta=-0.35. Як це можливо?
Амеліо Васкес-Рейна

1
Ці обчислення будуть працювати лише в тому випадку, якщо дисперсія менша середньої величини * (1-середня).
Данно

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

1
@ AmelioVazquez-Reina Якщо ви дасте свої вихідні дані, я думаю, це швидко стане очевидним, чому бета-розподіл не підходить.
Glen_b

21

Ось загальний спосіб вирішити такі проблеми, використовуючи Maple замість R. Це працює і для інших дистрибутивів:

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

що призводить до рішення

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

Це еквівалентно рішення Макса.


5

shape1=ashape2=b

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

a>0b>00<x<1

У R ви можете обчислити його

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

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

Гарна робота!

Редагувати

Я знайшов:

a=(1μV1μ)μ2

і

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

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


Я усвідомлюю, що моя відповідь дуже схожа на інші. Тим не менш, я вважаю, що завжди корисно спочатку перевірити, для чого використовується параметризація R ....
ocram

2

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

1
У Вікіпедії є розділ щодо оцінки параметрів, який дозволяє уникнути занадто багато роботи :)
rm999

1

[a,b]

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

який можна перевернути, щоб дати:

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

де

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

Користувач намагався залишити такий коментар: "Тут десь є помилка. Поточна формулювання не повертає правильну дисперсію".
Срібна рибка

1

μαββ

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


0

Я шукав пітона, але натрапив на це. Тож це було б корисно для інших, як я.

Ось код python для оцінки бета-параметрів (відповідно до наведених вище рівнянь):

# 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.