当前位置: 首页 > news >正文

【Python】Numpy中的Gumbel分布和Logistic分布

文章目录

    • 极值分
    • Gumbel
    • Logistic分布

极值分

X 1 , X 2 … , X n X_1,X_2\dots,X_n X1,X2,Xn为从总体 F F F中抽出的独立同分布样本,且

M = max ⁡ ( X 1 , … , X n ) , m = min ⁡ ( X 1 , … , X n ) M=\max(X_1,\dots,X_n), m=\min(X_1,\dots,X_n) M=max(X1,,Xn),m=min(X1,,Xn)

若存在 C n > 0 C_n>0 Cn>0 D n D_n Dn,使得 C n M + D n C_nM+D_n CnM+Dn按分布收敛于 G ( x ) G(x) G(x),则此 G ( x ) G(x) G(x)为极大值分布,同理可定义极小值分布。Fisher和Tippett证明了极值分布只有三种形式,分别是

I型 G 1 ( x ) = exp ⁡ ( − e − x ) G_1(x)=\exp(-e^{-x}) G1(x)=exp(ex)Gumbel分布
II型 G 2 ( x ) = exp ⁡ ( − x − α ) , x > 0 , α > 0 G_2(x)=\exp(-x^{-\alpha}), x>0, \alpha>0 G2(x)=exp(xα),x>0,α>0Fréchet分布
III型 G 3 ( x ) = exp ⁡ ( − ( − x ) α ) , x < 0 , α > 0 G_3(x)=\exp(-(-x)^\alpha), x<0, \alpha>0 G3(x)=exp((x)α),x<0,α>0Weibull分布

上面的三个表达式均未考虑x的偏移,若是存在存在位置 μ \mu μ和尺度 λ \lambda λ的偏移,可将 x x x替换为 x − μ λ \frac{x-\mu}{\lambda} λxμ

Gumbel

Numpy中,Gumbel分布被实现为gumbel([loc, scale]),其中locscale分别对应 μ , λ \mu, \lambda μ,λ,其具体表达式为

p ( x ) = exp ⁡ [ − z − e − z ] , z = x − μ λ p(x)=\exp[{-z-e^{-z}}], z=\frac{x-\mu}{\lambda} p(x)=exp[zez],z=λxμ

μ = 0 , λ = 1 \mu=0, \lambda=1 μ=0,λ=1时,得到标准极小值分布,其期望值为

E ( z ) = ∫ z e z e − e z d z = ∫ z e − e z d e z = ∫ 0 ∞ ln ⁡ z e − z d z = − γ E(z)=\int ze^ze^{-e^z}\text dz=\int ze^{-e^z}\text de^z=\int_0^\infty\ln z e^{-z}\text dz=-\gamma E(z)=zezeezdz=zeezdez=0lnzezdz=γ

其中 γ ≈ − 0.577 \gamma\approx-0.577 γ0.577,为欧拉常数,接下来可以尝试计算一下

import numpy as np
from numpy.random import gumbel
xs = gumbel(loc=0, scale=1, size=20000)
print(np.mean(xs))
# 0.5836924011336291

通过调整\lambda可以调整Gumbel分布的形状

import matplotlib.pyplot as plt
for lam in [2,1,0.5]:
    xs = gumbel(scale=lam, size=20000)
    plt.hist(xs, bins=200, label=f"lambda={lam}", alpha=0.5)

plt.legend()
plt.show()

如图所示,

在这里插入图片描述

可见\lambda越大,则Gumbel分布越宽。

Logistic分布

如果两个随机变量 X 1 X_1 X1 X 2 X_2 X2均服从Gumbel分布,那么 X 1 − X 2 X_1-X_2 X1X2服从Logistic分布。

如果把 X 1 X_1 X1 X 2 X_2 X2理解为某一随机样本的最大值分布和最小值分布,那么Logistic分布也可以解释为,从指数分布的总体中,抽取容量为n的随机样本,当n趋于无穷大时,样本极差所处的分布状态,其概率密度函数为

p ( x ) = ( x − μ ) / s s ( 1 + exp ⁡ [ − ( x − μ ) / s ] ) 2 p(x)=\frac{(x-\mu)/s}{s(1+\exp[-(x-\mu)/s])^2} p(x)=s(1+exp[(xμ)/s])2(xμ)/s

其分布图像为

在这里插入图片描述

loc, scale = 10, 1
s = np.random.logistic(loc, scale, 10000)
plt.hist(s, bins=50)

相关文章:

  • UID走私:一种在线跟踪用户的新技术
  • 面向对象的软件工程
  • Android 11.0 SystemUI 音量条UI定制的功能(一)
  • 【Java基础知识复盘】HashMap篇——持续更新中
  • 【SpringBoot框架篇】32.基于注解+redis实现表单防重复提交
  • Javaweb会话跟踪技术(Cookie和Session)
  • C++类和对象(三)
  • 第28章 MySQL 复制表教程
  • Java编程实战20:设计一个文本编辑器
  • 嵌入式微功耗RTU的功能与特点介绍、技术参数详情
  • ubuntu 安装supervisord
  • C++11标准模板(STL)- 算法(std::prev_permutation)
  • 【Vue】利用v-model特性封装Dialog弹窗或可编辑窗口。
  • 微信公众号迁移,需要做些什么
  • 白话说Java虚拟机原理系列【第三章】:类加载器详解
  • C++——STL之list详解
  • 【Numpy基础知识】结构化数组
  • Android实现戴口罩人脸检测和戴口罩识别(附Android源码)
  • 作为码农的我,要怎么提高自己的收入?
  • SpringBoot系列之整合框架JUnit