平均と分散を使用してベータ分布のパラメーターを計算する


66

分布に必要な平均と分散がわかっている場合、ベータ分布のおよびβパラメーターを計算するにはどうすればよいですか?これを実行するRコマンドの例が最も役立ちます。αβ


4
ことに留意されたいbetaregの Rパッケージは、平均で(別のパラメータを使用して、および精度、φ = α + β --andしたがって分散があるμ (1 - μ )/(1 + ϕ ))これらの計算の必要性を取り除きます。μ=α/α+βϕ=α+βμ(1−μ)/(1+ϕ)
— グング-モニカの復職

回答:


90

μ = αを設定します及びσ2=αβ

μ=αα+β
およびαおよびβについて解きます。私の結果は、α=(1-μ
σ2=αβ(α+β)2(α+β+1)
αβ及びβ=α(1
α=(1−μσ2−1μ)μ2
β=α(1μ−1)

与えられた平均、mu、および分散varからベータ分布のパラメーターを推定するために、いくつかのRコードを作成しました。

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任意のベータ分布のために、それでは、ここでそれは明確にしましょう。μσ2

  1. μ=αα+β∈(0、1)
  2. σ2=αβ(α+β)2(α+β+1)=μ(1−μ)α+β+1<μ(1−μ)1=μ(1−μ)∈(0、0.52)

2
@stanこれは、データと同じ平均と分散を持つベータ分布を提供します。分布がデータにどの程度適合するかはわかりません。Kolmogorov-Smirnov Testを試してください。
— 想定

4
私は、この関数を呼び出すときにestBetaParams(0.06657, 0.1)私が取得しますalpha=-0.025、beta=-0.35。これはどのように可能ですか?
— アメリオバスケスレイナ

1
これらの計算は、分散が平均*(1-平均)より小さい場合にのみ機能します。
— だの

2
@danno -それは常にそうだ。これを確認するために、として分散書き換えσ 2 = μ (1 - μ )σ2≤μ(1−μ)。以来、α+β+1≥1、σ2≤μ(1-μ)。σ2=μ(1−μ)α+β+1α+β+1≥1σ2≤μ(1−μ)
— 想定

1
@ AmelioVazquez-Reina元のデータを提供すると、ベータ分布が適切ではない理由がすぐに明らかになると思います。
— Glen_b

21

Rの代わりにMapleを使用して、これらのタイプの問題を解決する一般的な方法を次に示します。これは、他のディストリビューションでも機能します。

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。

これはMaxのソリューションと同等です。


5

shape1=ashape2=b

f(バツ)=Γ(a+b)Γ(a)Γ(b)バツa−1(1−バツ)b−1

a>0b>00<バツ<1。

Rでは、次のように計算できます

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

E(バツ)=aa+bV(バツ)=ab(a+b)2(a+b+1)。したがって、Nick Sabbeの答えに従うことができます。

よくできました!

編集

私は見つけます:

a=(1−μV−1μ)μ2

そして

b=(1−μV−1μ)μ(1−μ)、

μ=E(バツ)V=V(バツ)


私は自分の答えが他の答えと非常に似ていることを理解しています。それにもかかわらず、私は最初に.... Rが使用するものをパラメータ化をチェックするために、常に良い点であると考えている
— ocram

2

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

1
ウィキペディアには、あまりにも多くの作業を回避できるパラメーター推定に関するセクションがあります:)
— rm999

1

[a、b]

μ=aβ+bαα+β、σ2=αβ(b−a)2(α+β)2(1+α+β)

これは、次のように反転できます。

α=λμ−ab−a、β=λb−μb−a

どこ

λ=(μ−a)(b−μ)σ2−1

ユーザーは次のコメントを残そうとしました:「ここのどこかにエラーがあります。現在の定式化は正しい分散を返しません。」
— シルバーフィッシュ

1

の解くμαββ

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


0

私はpythonを探していましたが、これにつまずきました。だから、これは私のような他の人にとって有用でしょう。

ベータパラメータを推定するための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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.