【分布族谱】均匀分布和三角形分布的关系

【分布族谱】均匀分布和三角形分布的关系两个均匀分布的随机变量 X 1 X 2 其中样本相加或者相减后可得到三角形分布 记 X1 的下限与上限为 a 1 b 1 X2 的下限与上限分别为 a 2 b 2 从这个三角形分布的特点可以看出 三角形分布的下限和上限分别是 a

大家好,欢迎来到IT知识分享网。

均匀分布和三角分布

均匀分布是最容易理解的连续随机分布,实际上就是等概率的连续分布,其PDF为

f ( x ) = 1 b − a , x ∈ ( a , b ) f(x)=\frac{1}{b-a}, x\in (a,b) f(x)=ba1,x(a,b)

其样本在 ( a , b ) (a,b) (a,b)区间内,差不多构成了一个矩形,故称矩形分布。

相应地,PDF为三角形的分布,就是三角形分布。对于下限为 a a a,上限为 b b b,众数为 c c c的三角分布,其PDF为

f ( x ) = { 2 ( x − a ) ( b − a ) ( c − a ) a ⩽ x ⩽ c 2 ( b − x ) ( b − a ) ( b − c ) c < x ⩽ b f(x)=\left\{\begin{aligned} \frac{2(x-a)}{(b-a)(c-a)}\quad a\leqslant x\leqslant c\\ \frac{2(b-x)}{(b-a)(b-c)}\quad c<x\leqslant b \end{aligned}\right. f(x)=

(ba)(ca)2(xa)axc(ba)(bc)2(bx)c<xb

scipy.stats中,uniform为均匀分布类;triang为三角分布类。uniform的输入参数为左端点和长度;triang和均匀分布相比,多了一个众数位置,取值范围在 [ 0 , 1 ] [0,1] [0,1]之间,如下所示。

from scipy.stats import uniform, triang fig = plt.figure() ax = fig.add_subplot(121) ax.hist(uniform(1,5).rvs(10000), bins=50) ax = fig.add_subplot(122) ax.hist(triang(0.5, 1, 5).rvs(10000), bins=50) plt.show() 

结果为

在这里插入图片描述

均匀分布相加

两个均匀分布的随机变量 X 1 , X 2 X_1, X_2 X1,X2,其中样本相加或者相减后可得到三角形分布,记X1的下限与上限为 a 1 , b 1 a_1,b_1 a1,b1,X2的下限与上限分别为 a 2 , b 2 a_2,b_2 a2,b2,从这个三角形分布的特点可以看出,三角形分布的下限和上限分别是 a 1 + a 2 , b 1 + b 2 a_1+a_2, b_1+b_2 a1+a2,b1+b2,其众数为 a 1 + b 1 + a 2 + b 2 2 \frac{a_1+b_1+a_2+b_2}{2} 2a1+b1+a2+b2

a1, d1 = 1,5 a2, d2 = 3,6 x1 = uniform(a1,d1).rvs(10000) x2 = uniform(a2,d2).rvs(10000) plt.hist(x1+x2, density=True, bins=100) st = a1+a2 D = d1 + d2 rv = triang(0.5, st, D) xs = np.linspace(st, st+D, 200) plt.plot(xs, rv.pdf(xs)) plt.show() 

结果为

在这里插入图片描述

对数均匀分布

scipy.stats中还提供了loguniform的分布类,其概率密度函数为

f ( x , a , b ) = 1 x log ⁡ ( a b ) f(x,a,b)=\frac{1}{x\log(\frac{a}{b})} f(x,a,b)=xlog(ba)1

可想而知,其概率密度曲线是一个反函数。如果对随机变量取对数,则可以转化为在区间 [ log ⁡ a , log ⁡ b a ] [\log a, \log\frac{b}{a}] [loga,logab]的均匀分布,接下来测试一下

import numpy as np from scipy.stats import loguniform import matplotlib.pyplot as plt a, b = 1, 5 rs = loguniform(a,b).rvs(10000) plt.hist(np.log10(rs), density=True, bins=100) rv = uniform(np.log10(a), np.log10(b/a/a)) xs = np.linspace(rv.ppf(0.01), rv.ppf(0.99), 100) plt.plot(xs, rv.pdf(xs)) plt.show() 

在这里插入图片描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/144561.html

(0)
上一篇 2025-04-25 20:26
下一篇 2025-04-25 20:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信