Python

如何計算 beta 分佈的部分期望值(截斷 beta 的平均值)?

  • August 31, 2017

a=2,b=3,百分位數 x=0.4 的 Beta 分佈

給定 a=2, b=3 的 Beta 分佈,我們可以找到區間 [0, 1] = a/(a+b) = 2/5 = 0.4 和中位數 = (a - 1/3)/(a+b-2/3) = 0.39,很接近。

我正在尋找python中的解決方案。我可以使用scipy.stats.beta計算區間 [0, 0.4] 的中位數和百分比點函數(cdf 的倒數 - 百分位數):

beta.ppf(0.4/2,a,b) = 0.2504

由於對於這個 beta 分佈,總體平均值和中位數很接近(分別為 0.4 和 0.39),因此我使用區間 [0, 0.4] 的中位數來估計區間 [0, 0.4] 的預期值(均值)。

有沒有辦法計算區間 [0, 0.4] 的期望值(平均值)?

請注意,對於 beta 中位數,您在頂部附近的公式() 是近似值。您應該能夠使用 Python 中 beta 分佈的逆 cdf(分位數函數)計算有效的“精確”數字中位數(對於我的中位數約為而那個近似公式給出)。

這個截斷分佈的平均值對於 beta 來說非常簡單。對於正隨機變量,我們有

在這種情況下是帶有參數的 beta 的密度和(我現在寫成):

因此

所以

現在這兩個積分只是您已經在 Python 中可用的 beta CDF。

和我們得到. 這與模擬一致(模擬給出)。

對於中位數,我得到 ,這再次與模擬一致(模擬給出)。

在這種情況下,兩者非常接近,但這不是一般結果;它們有時可能會有更大的不同。

引用自:https://stats.stackexchange.com/questions/300681

comments powered by Disqus