狄利克雷分布(Dirichlet Distribution)

狄利克雷分布(Dirichlet Distribution)

狄利克雷分布,经常用Dir(\alpha )表示,是关于连续多维变量的概率分布,它以\alpha =(\alpha _{1},\alpha _{2},...,\alpha _{k})向量为参数,\alpha的每个分量都大于0。 

狄利克雷分布是贝塔分布的多变量推广,因此,它的另一个名字为 多变量贝塔分布(MBD:multivariate beta distribution)。

如果随机变量X=(x_{1},x_{2},...,x_{k})满足以\alpha =(\alpha _{1},\alpha _{2},...,\alpha _{k})\alpha的每个分量都大于0)为参数向量的狄利克雷分布,那么X的概率密度函数为:

f(x_{1},x_{2},...,x_{k};\alpha _{1},\alpha _{2},...,\alpha _{k} )=\frac{1}{B(\alpha )}\prod_{i=1}^{k}x_{i}^{\alpha _{i}-1}

其中:

k\geqslant 2

归一化常数B(\alpha ) 为多变量贝塔函数,可以表示为:B(\alpha )=\frac{\prod_{i=1}^{k}\Gamma (\alpha _{i})}{\Gamma (\sum_{i=1}^{k}\alpha _{i})}  。

上面的公式要满足约束条件:

x_{i}>0,\: \: \: \: i\in 1,2,...,k

\sum_{i=1}^{k}x_{i}=1

画狄利克雷分布的水平条形图

import numpy as np
import matplotlib.pyplot as plt

rng = np.random.default_rng()
# 狄利克雷分布的alpha参数向量
alpha = (1, 2, 3)
# 抽样的数量
size = 30
sample = rng.dirichlet(alpha, size).transpose()
# 创建水平条形图
plt.barh(range(size), sample[0])
plt.barh(range(size), sample[1], left=sample[0], color='g')
plt.barh(range(size), sample[2], left=sample[0] + sample[1], color='r')
plt.title(f'alpha={alpha}')

狄克雷分布是一种概率分布,常用于多元变量和概率向量的建模。对于一个具有K个维度的随机向量,狄利克雷分布的参数是一个长度为K的向量α=[α1, α2, ..., αK],其中每个αi>0。狄利克雷分布概率密度函数定义如下: f(x|α) = (1/B(α)) * ∏(x^αi-1) (0<=xi<=1, ∑xi=1) 其中,B(α)是多元贝塔函数,∏表示对于所有i的连乘。狄利克雷分布的随机变量服从于一个概率向量,在每个维度上的取值范围是0到1之间,并且各维度的取值之和为1。 在Matlab中没有现成的工具函数可以直接使用狄利克雷分布。但是你可以根据引用提供的代码来实现一个狄利克雷分布的随机数生成函数drchrnd(a,n),其中a是参数向量,n是生成样本的数量。这个函数利用了gamma分布和狄利克雷分布之间的关系,通过生成多个gamma随机变量,并按一定的规则进行归一化,实现了狄利克雷分布的随机数生成。 需要注意的是,生成的随机数是符合狄利克雷分布概率向量,每个维度的取值范围是0到1之间,并且各维度的取值之和为1。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [狄利克雷分布的matlab代码实现和R语言函数调用](https://blog.csdn.net/sacainiao/article/details/54866385)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值