평균 및 분산을 사용하여 베타 분포의 모수 계산


66

분포의 평균과 분산을 알고있는 경우 베타 분포 의 αβ 모수를 어떻게 계산할 수 있습니까? 이를 수행하는 R 명령의 예가 가장 유용합니다.


4
점을 유의 betareg의 R의 패키지가 평균으로 (다른 파라미터를 사용하여 μ=α/α+β , 정밀도, ϕ=α+β - 그리고 따라서 차이가 μ(1μ)/(1+ϕ) ) 이러한 계산에 대한 필요성을 제거한다.
gung-Monica Monica 복원

답변:


90

나는 μ = α로 설정

μ=αα+β
σ2=αβ(α+β)2(α+β+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. μ=αα+β(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. 이것이 어떻게 가능한지?
Amelio Vazquez-Reina

1
이 계산은 분산이 평균 * (1- 평균)보다 작은 경우에만 작동합니다.
danno

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=에이shape2=

에프(엑스)=Γ(에이+)Γ(에이)Γ()엑스에이1(1엑스)1

에이>0>00<엑스<1

R에서는 다음과 같이 계산할 수 있습니다.

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

이자형(엑스)=에이에이+V(엑스)=에이(에이+)2(에이++1)

잘 했어!

편집하다

나는 찾는다 :

에이=(1μV1μ)μ2

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

μ=이자형(엑스)V=V(엑스)


내 답변이 다른 답변과 매우 유사하다는 것을 알고 있습니다. 그럼에도 불구하고, 나는 항상 매개 변수 R이 무엇을 사용하는지 먼저 확인하는 것이 좋다고 생각한다 ....
ocram

2

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

1
위키 백과에는 매개 변수 추정 섹션이있어 너무 많은 작업을 피할 수 있습니다. :)
rm999

1

[에이,]

μ=에이β+αα+β,σ2=αβ(에이)2(α+β)2(1+α+β)

다음과 같이 뒤집을 수 있습니다.

α=λμ에이에이,β=λμ에이

어디

λ=(μ에이)(μ)σ21

사용자가 다음과 같은 주석을 남기려고했습니다. "어딘가에 오류가 있습니다. 현재 공식이 올바른 분산을 반환하지 않습니다."
실버 피쉬

1

μαββ

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


0

나는 파이썬을 찾고 있었지만 이것에 걸려 넘어졌다. 그래서 이것은 나와 같은 다른 사람들에게 유용 할 것입니다.

다음은 베타 파라미터를 추정하는 파이썬 코드입니다 (위의 방정식에 따라).

# 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.