gamma分布的推导与理解

1.概述

gamma分布与指数分布、泊松分布甚至其它一些分布有较为紧密的联系,本文通过对比与之相关的概率分布,建立某种联系并推导其概率密度函数,以便加深理解与认知。

2.Gamma分布的必要性

在设置 Gamma 的两个参数α、β 并将它们代入公式之前,让我们暂停一下,问几个问题……

为什么我们必须发明 Gamma 分布?(即,为什么存在这种分布?) 何时应使用 Gamma 分布进行建模?

1. 我们为什么要发明 Gamma 分布? 答:预测未来事件的等待时间。 嗯好的,但我认为这就是指数分布的目的。 那么,指数分布和伽马分布有什么区别呢? 指数分布预测等待时间,直到*最先*事件。另一方面,伽马分布预测等待时间,直到*第k个*事件发生。

3.Gamma的PDF推导

  ​      在我们之前的文章中,我们从泊松过程推导出了指数分布的 PDF。如果您还没有这样做,我强烈建议您学习泊松和指数分布。完全理解它们对于理解 Gamma 是绝对必要的。

    顺序应该 1. Poisson,2. Exponential,3. Gamma。
 

Gamma 分布的 PDF 的推导与指数分布 PDF 的推导非常相似,除了一件事——它是直到第 k 个事件的等待时间,而不是第一个事件。

以以往的推导相似,为了得到 PDF,我们会先找到 CDF,然后再对其进行微分。

gamma分布的推导与理解_第1张图片

现在,让我们区分它。

为了更容易区分,我们从求和中取出 x = 0 时的项 ( e^(-λt) )。

gamma分布的推导与理解_第2张图片

我们得到了伽玛分布的PDF! 推导看起来很复杂,但我们只是重新排列变量,应用微分的乘积规则,扩展总和,并删除一些。 如果您查看推导的最终输出,您会注意到它与指数分布的 PDF 相同,当k =1 时。 由于k是一个正整数(k个事件的数量),(k) = (k−1)!其中表示伽马函数。最终产品可以重写为:

gamma分布的推导与理解_第3张图片

如果事件的到达遵循速率为 λ 的泊松过程,则直到 k 到达的等待时间遵循 Γ(k, λ)。

4. Gamma 的形状参数与比例参数(\alpha,\beta)

    Gamma 的参数化有两个方面让我们感到困惑!

gamma分布的推导与理解_第4张图片

gamma分布的推导与理解_第5张图片

 

一是它有两个不同的参数化集——( k , θ ) &( α , β )——以及不同形式的 PDF。另一个是对于“规模”参数应该是什么没有普遍共识。 让我们澄清一下。 第一个问题很容易弄清楚。 对于 ( α , β ) 参数化:使用我们的符号k(事件数)和λ(事件率),只需将α替换为k,β替换为 λ。PDF 的格式与我们导出的格式相同。 对于(k, θ)参数化: θ是事件率 λ 的倒数,它是平均等待时间(事件到达之间的平均时间)。 即使 PDF 具有不同的格式,两种参数化都会生成相同的模型。就像为了定义一条直线一样,有些人使用斜率和 y 截距,而另一些人使用 x 截距和 y 截距,选择一个参数化而不是另一个参数化是个人喜好问题。在我看来,考虑到我们如何使用泊松率 λ 推导指数和伽马,使用 λ 作为速率参数更有意义。我还发现 ( α , β ) 参数化更容易集成。 其次,一些作者称λ为尺度参数,而另一些作者则称θ=1/λ为尺度参数。恕我直言,“形状”或“比例”参数实际上是用词不当。我绘制了具有不同k和λ集的多个 Gamma PDF( k和λ有无限的参数选择,因此,存在无限数量的可能 Gamma 分布)并实现了k(和λ)都改变了“形状”和“尺度” ”。认真命名它们的人可以给出更直观的名称,例如 - 事件数和泊松率! 眼见为实!让我们形象化。 ​

gamma分布的推导与理解_第6张图片

对于固定速率λ,如果我们等待更多事件 ( k ) 发生,等待时间 ( T ) 会更长。

gamma分布的推导与理解_第7张图片

对于固定数量的事件k,当事件率λ较高时,我们等待较短的时间T。

这是生成上面漂亮图的 Python 代码。(自己绘制它们,看看这两个参数如何改变“比例”和“形状”!)


    """ 
    k : 等待发生的事件数。
    λ : 泊松分布后发生的事件率。
    """ 
    x = np.linspace(0, 50, 1000) 
    a = 1 # k = 1 
    mean, var, skew, kurt = gamma.stats(a, moment='mvsk') 
    y1 = gamma.pdf(x, a) 
    a = 5 # k = 5 
    mean, var, skew, kurt = gamma.stats(a, moment='mvsk') 
    y2 = gamma.pdf(x, a) 
    a = 10 # k = 15 
    mean, var, skew, kurt = gamma.stats(a, moment='mvsk') 
    y3 = gamma.pdf(x, a)plt.title("伽玛分布的 PDF") 
    plt.xlabel("T") 
    plt.ylabel("概率密度") 
    plt.plot(x, y1, label="k = 1", color='palegreen') 
    plt.plot(x, y2, label="k = 5", color='yellowgreen') 
    plt.plot(x, y3, label="k = 10", color='olivedrab') 
    plt.legend(bbox_to_anchor= (1, 1), loc='右上角', 
               borderaxespad=1, fontsize=12) 
    plt.ylim([0, 0.40]) 
    plt.xlim([0, 20]) 
    plt.savefig('gamma_k.png' ) 
    plt.clf()def plot_gamma_lambda(): 
    """ 
    k : 等待发生的事件数。
    λ : 泊松分布后发生的事件率。
    """ 
    a = 10 # k = 10 
    x = np.linspace(0 , 50, 1000) 
    lambda_ = 1 
    mean, var, skew, kurt = gamma.stats(a, scale=1/lambda_, moment='mvsk') 
    y1 = gamma.pdf(x, a, scale=1/lambda_) 
    lambda_ = 2 
    mean, var, skew, kurt = gamma.stats(a, scale=1/lambda_, moment='mvsk') 
    y2 = gamma.pdf(x, a, scale=1/lambda_) 
    lambda_ = 3 
    mean, var, skew, kurt = gamma.stats(a, scale=1/lambda_, moment='mvsk') 
    y3 = gamma.pdf(x, a, scale=1/lambda_)plt.title("伽玛分布的 PDF (k = 10)") 
    plt.xlabel("T") 
    plt.ylabel("概率密度") 
    plt.plot(x, y1, label="λ = 1", color ='gold') 
    plt.plot(x, y2, label="λ = 2", color='burlywood') 
    plt.plot(x, y3, label="λ = 3", color='darkorange') 
    plt .legend(bbox_to_anchor=(1, 1), loc='右上角', 
               borderaxespad=1, fontsize=12) 
    plt.ylim([0, 0.40]) 
    plt.xlim([0, 20]) 
    plt.savefig( 'gamma_lambda.png') 
    plt.clf()

5. 应用举例

   ​    我们可以为使用指数分布的每个应用程序使用 Gamma 分布——等待时间建模、可靠性(故障)建模、服务时间建模(排队论)等——因为指数分布是 Gamma 分布的一个特例(只需插入1到k )。

【排队论示例】你去了Chipotle,加入了排在你前面的两个人的队伍。一个正在服务,另一个正在等待。它们的服务时间S1和S2是独立的指数随机变量,平均为 2 分钟。(因此平均服务费率为0.5/分钟。如果这个“费率与时间”的概念让您感到困惑,请阅读此内容以澄清。) 您在队列中等待超过 5 分钟的概率是多少? 我们所做的只是将t = 5和λ = 0.5代入我们已经导出的 Gamma 分布的 CDF。这与我们在指数随机变量的总和中介绍的示例相同。如您所见,我们也可以使用 Gamma 的 CDF 解决这个问题。 我在 Chipotle 等待超过 5 分钟的几率不到 30%?我会接受的! 需要注意的几点: Poisson、Exponential 和 Gamma 分布对同一过程的不同方面进行建模 - Poisson 过程。 泊松分布用于对未来事件的数量进行建模,指数分布用于预测第一个事件之前的等待时间,伽玛分布用于预测第 k 个事件之前的等待时间。 Gamma 的两个参数都是严格正数,因为一个是事件数,另一个是事件率。他们不能是消极的。 Gamma 分布的特殊情况 Erlang 和 Gamma 之间的区别在于,在 Gamma 分布中,k可以是非整数(正实数),而在 Erlang 中,k只能是正整数。

你可能感兴趣的:(机器学习,机器学习,算法,概率论)