Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext
β分佈

#include <boost/math/distributions/beta.hpp>

namespace boost{ namespace math{ 

 template <class RealType = double, 
           class Policy   = policies::policy<> >
class beta_distribution;

// typedef beta_distribution<double> beta;
// 注意:這裡是有意的沒有提供,
// 為的是避免與函數名 beta相衝突.

template <class RealType, class Policy>
class beta_distribution
{
public:
   typedef RealType  value_type;
   typedef Policy    policy_type;
   // 有兩個形狀參數(shape parameters)的構造函數, alpha 和 beta:
   beta_distribution(RealType a, RealType b);
   
   // 參數訪問函數:
   RealType alpha() const;
   RealType beta() const;
   
   // alpha 或 beta 的均值和方差的參數估計量(estimators)。   
	 static RealType find_alpha(
     RealType mean, // 均值的期望.
     RealType variance); // 方差的期望.
   
   static RealType find_beta(
     RealType mean, // 均值的期望.
     RealType variance); // 方差的期望.

   // 參數估計量來自
   // α或β, 以及x和概率.
   
   static RealType find_alpha(
     RealType beta, // 來自 β.
     RealType x, //  x.
     RealType probability); // cdf
   
   static RealType find_beta(
     RealType alpha, // α.
     RealType x, // 概率 x.
     RealType probability); // 概率 cdf.
};

}} // namespaces

類型beta_distribution 表示一個β概率分佈函數.

β 分佈 用作貝葉斯分析(Bayesian analysis)中的二項式比例(binomial proportions) 的 先驗分佈(prior distribution)

參見: β 分佈貝葉斯統計(Bayesian statistics)

Jeff Grynaviski 討論了β分佈如何應用在單參數貝葉斯分析 中。

β 分佈定義在[0,1]區間上的 概率密度函數 PDF由下面的等式給定:

f(x;α,β) = xα - 1 (1 - x)β -1 / B(α, β)

其中 B(α, β)是β 函數,在這個庫中實現為 β。 除以β函數來確保函數pdf在區間0到+∞上是正規化的(normalized)。

下面的圖像顯示了不同形狀參數的pdf函數的例子。注意:α = β = 2 (藍色線條)是圓屋頂形的(dome-shaped),並且可以由一個對稱三角形分佈來近似。

如果 α = β = 1, 那麼就是一個 ​ 均勻分佈(uniform distribution) 等價於整個x = 0到1這個區間。 如果α ​ 和 β ​ 都 < 1,那麼函數 pdf 是 U形的(U-shaped)。 如果α != β,那麼 函數圖像的形狀是不對稱的,並且可以由一個頂點遠離中心的三角形來近似(其中 x = half )。

成員函數
構造函數
beta_distribution(RealType alpha, RealType beta);

由形狀參數α和β來構造β分佈

要求 α,β> 0,否則調用 定義域錯誤 。注意:在學術上,β分佈針對於α,β>= 0而定義, 並不清楚是否有程序實際使用那個範圍(latitude)或者在那種情況下有多少非成員函數可以有效地定義。因此,現在我們把α或β為0看作是一個錯誤。

例如:

beta_distribution<> mybeta(2, 5);

使用 α=2 且 β=5 來構造一個分佈(在上面的圖像中用黃色線條顯示)。

參數訪問函數(Parameter Accessors)
RealType alpha() const;

返回構造這個分佈的參數α。

RealType beta() const;

返回構造這個分佈的參數β。

例如:

beta_distribution<> mybeta(2, 5);
assert(mybeta.alpha() == 2);  // mybeta.alpha() 返回 2
assert(mybeta.beta() == 5);   // mybeta.beta()  返回 5
參數估計量(Parameter Estimators)

提供了兩對參數估計量(parameter estimators)。

一個從假定已知(presumed-known)的均值和方差來估計α ​ 或 β。

另一個使用函數cdf和x來估計α ​ 或 β。

也可能從「已知」的眾數(mode)和分位點(quantile)來估計α ​ 和 β。例如,由Pooled Prevalence Calculator 提供的計算器和Beta Buster ,但是這種方法並沒有在這裡實現。

static RealType find_alpha(
  RealType mean, // 均值的期望.
  RealType variance); // 方差的期望.

返回均值為mean且方差為variance的β分佈的對應的α的唯一值。

static RealType find_beta(
  RealType mean, // 均值的期望.
  RealType variance); // 方差的期望.

返回均值為mean且方差為variance的β分佈的對應的α的唯一值。

static RealType find_alpha(
  RealType beta, // 來自 beta.
  RealType x, //  x.
  RealType probability); // 概率 cdf

返回滿足: cdf(beta_distribution<RealType>(alpha, beta), x) == probability的α 值。

static RealType find_beta(
  RealType alpha, // α .
  RealType x, // 概率 x.
  RealType probability); // 概率 cdf.

返回滿足cdf(beta_distribution<RealType>(alpha, beta), x) == probability的α 值。

非成員訪問函數( Accessor Functions)

支持所有的分佈都通用的 常見的非成員訪問函數累積分佈函數(Cumulative Distribution Function)概率密度函數(Probability Density Function)分位點(Quantile)故障率函數(Hazard Function)累積危險函數(Cumulative Hazard Function)均值(mean)中位數(median)眾數(mode)方差(variance)標準差(standard deviation)偏斜(skewness)峰態(kurtosis)峰態超越(kurtosis_excess)值域(range) 以及 支持(support)

下面的表格以及Wolfram Mathworld顯示了計算這些函數的方程。

應用(Applications)

β分佈可以用於對由最小值和最大值定義的區間來約束的事件進行建模:因此可以用在項目管理系統(project management systems)中。

β分佈在貝葉斯統計推理(Bayesian statistical inference)中也有廣泛的應用。

相關分佈(Related distributions)

α​和β 都等於1的β分佈遵循均勻分佈(uniform distribution)

對精度較低的信息可使用 triangular

當 α ​ 和 β都是整數的時候 β分佈與 二項分佈 聯繫緊密。

當α ​ 和 β為整數的時候, ​ 分佈B(i, j)是均勻分佈在 0 和 1之間相互獨立的隨機變量i+j+1的第j-th高的值. 因此,從0到x之間的累積概率就是第j-th高的值小於x的概率。或者是隨機變量中至少有i個小於x值的累積概率。將參數p值設為x對二項分佈 進行求和來給定概率。

精確度

β分使用布β 函數 β 和不完全β函數 ibeta 以及 ibetac; 請參看這些函數瞭解精確度的相關信息。

實現

在下面的表中,ab 是α 和 β的參數,x 是隨機變量, p 是概率且q = 1-p

函數

實現註解

pdf

f(x;α,β) = xα - 1 (1 - x)β -1 / B(α, β)

使用ibeta_derivative(a, b, x)來實現.

cdf

使用不完全β函數ibeta(a, b, x)來實現

cdf 補集

ibetac(a, b, x)

分位點(quantile)

使用不完全β函數反函數ibeta_inv(a, b, p)來實現

補集的分位點

ibetac_inv(a, b, q)

均值

a/(a+b)

方差

a * b / (a+b)^2 * (a + b + 1)

眾數(mode)

(a-1) / (a + b - 2)

偏斜(skewness)

2 (b-a) sqrt(a+b+1)/(a+b+2) * sqrt(a * b)

峰態超越(kurtosis excess)

峰態(kurtosis)

kurtosis + 3

參數估計(parameter estimation)

由均值和方差計算參數α

mean * (( (mean * (1 - mean)) / variance)- 1)

由均值和方差計算參數β

(1 - mean) * (((mean * (1 - mean)) /variance)-1)

成員函數find_alphafind_beta

使用 cdf 和 概率 x

以及α β

分別使用不完全β函數反函數

ibeta_invaibeta_invb 來實現.

find_alpha

ibeta_inva(beta, x, probability)

find_beta

ibeta_invb(alpha, x, probability)

參考資料

維基百科(Wikipedia)β分佈

NIST 探索性數據分析(Exploratory Data Analysis)

Wolfram 數學世界


PrevUpHomeNext