Scipy_常见随机分布

Weijia Li

关注公众号,一起学习~

无聊e编程

from scipy.stats import *
import numpy as np
import matplotlib.pyplot as plt

前言

常用的方法

主要公共方法是:

rvs:随机变量

pdf:概率密度函数

pmf:离散变量质量函数

cdf:累积分布函数

sf:生存功能(1-CDF)

ppf:百分比点函数(CDF的逆)

isf:逆生存函数(SF的逆)

统计信息:返回均值,方差,(费舍尔)偏度或(费舍尔)峰度

矩:分布的非中心矩

常见连续变量

1.指数分布

mean,var,skew,kurt=expon.stats(moments='mvsk')
mean,var,skew,kurt#均值,方差,偏度,峰度

(array(1.), array(1.), array(2.), array(6.))


x=np.linspace(expon.ppf(0.01),expon.ppf(0.99),100)
plt.plot(x,expon.pdf(x),'b-',label='pdf')
r=expon.rvs(size=1000)
plt.hist(r,density=True,alpha=0.2)

2.均匀分布

mean,var,skew,kurt=uniform.stats(moments='mvsk')
mean,var,skew,kurt#均值,方差,偏度,峰度

(array(0.5), array(0.08333333), array(0.), array(-1.2))


x=np.linspace(uniform.ppf(0.01),uniform.ppf(0.99),10000)
plt.plot(x,uniform.pdf(x),'b-')
r=uniform.rvs(loc=0,scale=1,size=1000)
plt.hist(r,density=True,alpha=0.5)

3.正态分布

mean,var,skew,kurt=norm.stats(moments='mvsk')
mean,var,skew,kurt#均值,方差,偏度,峰度

(array(0.), array(1.), array(0.), array(0.))


x=np.linspace(norm.ppf(0.01),norm.ppf(0.99),100)
plt.plot(x,norm.pdf(x),'b-')
r=norm.rvs(loc=0,scale=1,size=1000)
plt.hist(r,density=True,alpha=0.2)

4.卡方分布

mean,var,skew,kurt=chi2.stats(df=55,moments='mvsk')
mean,var,skew,kurt#均值,方差,偏度,峰度

(array(55.), array(110.), array(0.38138504), array(0.21818182))
#自由度不同
df=40

x=np.linspace(chi2.ppf(0.01,df),chi2.ppf(0.99,df),100)
plt.plot(x,chi2.pdf(x,df),'r-')
y=np.linspace(chi2.ppf(0.01,df+4),chi2.ppf(0.99,df+4),100)
plt.plot(y,chi2.pdf(y,df+4),'g-')
z=np.linspace(chi2.ppf(0.01,df+8),chi2.ppf(0.99,df+8),100)
plt.plot(z,chi2.pdf(z,df+8),'y-')
w=np.linspace(chi2.ppf(0.01,df+12),chi2.ppf(0.99,df+12),100)
plt.plot(w,chi2.pdf(w,df+12),'b-')
#近似正态分布
o=np.linspace(chi2.ppf(0.01,100),chi2.ppf(0.99,100),100)
plt.plot(o,chi2.pdf(o,100),'m+')
r=chi2.rvs(df,size=1000)
plt.hist(r,density=True,alpha=0.2)

5.t分布

mean,var,skew,kurt=t.stats(df=55,moments='mvsk')
mean,var,skew,kurt

(array(0.), array(1.03773585), array(0.), array(0.11764706))


#当n接近60时,t分布近似正态分布(蓝色)
df=55
x=np.linspace(t.ppf(0.01,df),t.ppf(0.99,df),100)
plt.plot(x,t.pdf(x,df),'b-')
#小样本n=9
y=np.linspace(t.ppf(0.01,8),t.ppf(0.99,8),100)
plt.plot(y,t.pdf(x,8),'r-')
#大样本(近似正态分布)
z=np.linspace(t.ppf(0.01,1000),t.ppf(0.99,1000),100)
plt.plot(z,t.pdf(z,1000),'m+')
r=t.rvs(size=1000,df=df)
plt.hist(r,alpha=0.2,density=True)

6.F分布

dfn,dfd=29,18
mean,var,skew,kurt=f.stats(dfn,dfd,moments='mvsk')
mean,var,skew,kurt

(array(1.125), array(0.28055727), array(1.80656765), array(7.07463602))


x=np.linspace(f.ppf(0.01,dfn,dfd),f.ppf(0.99,dfn,dfd),100)
plt.plot(x,f.pdf(x,dfn,dfd),'b-')
r=f.rvs(dfn,dfd,size=1000)
plt.hist(r,density=True,alpha=0.2)

常见离散变量

1.0-1分布(伯努利分布)

p=0.2
mean,var,skew,kurt=bernoulli.stats(p,moments='mvsk')
mean,var,skew,kurt

(array(0.2), array(0.16), array(1.5), array(0.25))


x=np.arange(bernoulli.ppf(0.01,p),bernoulli.ppf(0.99,p)+1)
plt.plot(x,bernoulli.pmf(x,p),'bo',ms=8,lw=1)
plt.vlines(x,0,bernoulli.pmf(x,p),colors='b',lw=4,alpha=0.5)

#十次实验,成功和失败

bernoulli.rvs(p,size=10)

array([1, 0, 0, 0, 1, 0, 0, 1, 1, 0])

2.二项分布

#当n足够大时,近似正态分布
n,p=200,0.4
mean,var,skew,kurt=binom.stats(n,p,moments='mvsk')
mean,var,skew,kurt

(array(80.), array(48.), array(0.02886751), array(-0.00916667))


x=np.arange(binom.ppf(0.01,n,p),binom.ppf(0.99,n,p)+1)
plt.plot(x,binom.pmf(x,n,p),'bo',ms=8,lw=1)
plt.vlines(x,0,binom.pmf(x,n,p),colors='b',lw=4,alpha=0.5)

#十次n为200的伯努利实验,每次的成功实验数
binom.rvs(n,p,size=10)

array([86, 78, 81, 79, 75, 82, 72, 80, 69, 77])

3.几何分布

p=0.50
#概率越小,越密集;概率越大,越疏。
mean,var,skew,kurt=geom.stats(p,moments='mvsk')
mean,var,skew,kurt

(array(2.), array(2.), array(2.12132034), array(6.5))


x=np.arange(geom.ppf(0.01,p),geom.ppf(0.99,p)+1)
plt.plot(x,geom.pmf(x,p),'bo')
plt.vlines(x,0,geom.pmf(x,p),colors='b',alpha=0.2)

#十次实验,成功的次数
geom.rvs(p,size=10)

array([1, 4, 7, 2, 3, 1, 1, 2, 1, 1])

4.超几何分布

#假设我们有20种动物的集合,
#其中7种是狗。然后,如果我们
#想知道如果随机选择20只动物中
#的12只,则发现找到给定数量的
#狗的概率
[M, n, N] = [20, 7, 12]
mean,var,skew,kurt=hypergeom.stats(M,n,N,moments='mvsk')
mean,var,skew,kurt

(array(4.2), array(1.14947368), array(-0.06218122), array(-0.15266106))


x=np.arange(hypergeom.ppf(0.01,M,n,N)-1,hypergeom.ppf(0.99,M,n,N)+1)
plt.plot(x,hypergeom.pmf(x,M,n,N),'bo')
plt.vlines(x,0,hypergeom.pmf(x,M,n,N),'b',lw=2,alpha=0.2)

#进行十次M取N的实验,其中抽到n的次数

hypergeom.rvs(M,n,N,size=10)

array([4, 4, 4, 3, 4, 3, 4, 5, 5, 5])

5.poisson分布

mu=2
mean,var,skew,kurt=poisson.stats(mu,moments='mvsk')
mean,var,skew,kurt

(array(2.), array(2.), array(0.70710678), array(0.5))


x=np.arange(poisson.ppf(0.01,mu),poisson.ppf(0.99,mu)+1)
plt.plot(x,poisson.pmf(x,mu),'bo')
plt.vlines(x,0,poisson.pmf(x,mu),'b',alpha=0.2)

poisson.rvs(mu,size=10)

array([2, 2, 4, 1, 0, 4, 4, 5, 1, 1])

Scipy_常见随机分布相关推荐

  1. 常见随机分布的数学期望及方差

  2. 一、三大基础随机分布与数学特征

    一.三大基础随机分布 均匀.指数.正态 1.均匀分布 表示在相同长度间隔的分布概率是等可能的 其概率密度.均值.方差 2.指数分布 事件以恒定平均速度连续且独立地发生的过程(泊松过程中的事件之间的时间 ...

  3. comsol随机几何 随机分布颗粒 纤维混凝土 不干涉模型 随机球体 随机裂缝

    comsol随机几何模型 在常见的材料中,严格来讲均质单一性的材料并不常见,更多的是随机材料.这就使得在几何建模时需要考虑材料的随机性,这里讲介绍几种常见的随机材料模型及在comsol内构建该模型的方 ...

  4. TensorFlow入门教程:14:噪声数据: 随机分布

    前面的文章中主要就线性回归进行了模拟,这篇文章重点讨论一下学习和训练过程中训练数据的问题. 前文中y=3*x + 1的训练数据,直接使用的数据是完全符合的数据,没有任何误差,散点信息如下所示: 绘图代 ...

  5. Silverlight实用窍门系列:28.Silverlight制作随机分布雷达扫描点,模拟雷达扫描图之被扫描设备【附带源码实例】...

    实际项目中,我们模拟一个监控多台电脑的雷达扫描图效果.我们假设发现了很多台设备,这些设备具有CPU使用率这个属性,在雷达扫描的时候,如果CPU的值高于90则报警为红色. 本节实例建立在上一节的基础之上 ...

  6. 地图点随机分布均匀_英国标准协会(BSI)推荐的三坐标测点分布策略

    在使用三坐标测量机进行测量并且评价形位公差时,首先要做的就是根据图纸要求,测量对应特征,使用对应基准特征,建立坐标系. 为了达到测量的目的,每种特征在数学上均定义了最少测点数(如下图所示),例如两点定 ...

  7. 统计学中常见的分布汇总及相关概念

    常见分布 统计学中有很多常见的分布,在此对这些分布进行梳理. 离散型随机变量分布 1.离散型均匀分布 若随机变量有n个不同值,具有相同概率,则我们称之为离散均匀分布,通常发生在我们不确定各种情况发生的 ...

  8. Greenplum 分布键 distribute hash分布和随机分布

    Greenplum是分布式系统,创建表时需要指定分布键,目的是为了数据能够平均分布到各个段,所以选择分布键十分重要,选择错了会导致数据不一致. 分布方式: Hash分布:按分布键对数据列进行hash取 ...

  9. 力扣随机数randX——透过现象看本质之二元独立随机分布

    用randX 实现 randY(X < Y) 其中,randN表示等概生成[1,N]的数 从一个力扣上的例子来引入吧 470. 用 Rand7() 实现 Rand10() 最直观的想法是用ran ...

最新文章

  1. 邀请了阿里的学长学姐分享
  2. 机器学习中的L1与L2正则化图解!
  3. 数据库查询速度极慢【个人工作问题解决过程记录】
  4. 【Python之路Day17】Python Web框架之 Django
  5. Linux服务之nginx服务篇一(概念)
  6. 这就是科研爱情:硕士毕业工作6年后,二人一起辞职携手攻读博士学位
  7. CentOS yum安装mcrypt详细图解教程[linux]
  8. 点击li标记中的a标记改变li背景图片怎样实现
  9. Pytorch1.7.1与SimpleITK2.0.0在centos7上终端运行冲突的情况
  10. mysql oltp_oltp数据库mysql
  11. MIT 6.828 main.c文件分析
  12. Swift - 设置应用程序图标的提醒个数(右上角小红圈)
  13. 斗鱼直播分享html代码,用纯javascript实现斗鱼直播弹幕效果,代码也才这么点-优酷弹幕怎么设置...
  14. 为什么“隐性知识”比“刻意练习”更重要?
  15. C语言实现图片找茬,[创意心得]大家来找茬(C语言)
  16. 算法面试题-用单向链表表示十进制整数,求两个正整数之和。1234+34=1268
  17. 第二章、Android UI 布局 - Android移动开发基础笔记
  18. Node 开发一个多人对战的射击游戏(实战长文)
  19. android 电商app组件化,APICloud AVM多端开发案例深度解析(一)--生鲜电商app开发
  20. 顺序查找 题目编号:517

热门文章

  1. ZeroMQ的订阅发布(publish-subscribe)模式
  2. Ubuntu查看版本信息
  3. 投资理财__读懂现金流量表
  4. 【剑指offer】剪绳子(动态规划)
  5. VS编程中_T与L的区别
  6. 『 图片处理 』移动目录下文件到所属文件夹的目录
  7. 基于Matlab实现硬币计数
  8. 575万奖金! 2021数学界「诺奖」阿贝尔奖揭晓,以色列数学家威格森获奖,曾担任阿里达摩院十大祖师...
  9. 在v8系统上显示数据库的数据
  10. 如何本地化部署ChatGPT