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


66

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


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

回答:


90

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

μ=αα+β
およびαおよびβについて解きます。私の結果は、α=1-μ
σ2=αβ(α+β)2(α+β+1)
αβ及びβ=α1
α=(1μσ21μμ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. μ=αα+β01
  2. σ2=αβα+β2α+β+1=μ1μα+β+1<μ1μ1=μ1μ00.52

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

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

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

2
@danno -それは常にそうだ。これを確認するために、として分散書き換えσ 2 = μ 1 - μ σ2μ1μ。以来、α+β+11σ2μ1-μσ2=μ1μα+β+1α+β+11σ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バツa11バツb1

a>0b>00<バツ<1

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

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

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

よくできました!

編集

私は見つけます:

a=1μV1μμ2

そして

b=1μV1μμ1μ

μ=EバツV=Vバツ


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

2

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

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

1

[ab]

μ=aβ+bαα+βσ2=αβba2α+β21+α+β

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

α=λμabaβ=λbμba

どこ

λ=μabμσ21

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

1

の解くμαββ

β=α1μμ
α
σ2=α21μμα+α1μμ2α+α1μμ+1
σ2=α21μμαμ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.