数理基础------离散型随机变量(均匀、指数、正态分布)和连续型随机变量(二项、泊松分布)对象的创建、期望、方差,概率密度函数和分布函数的绘制

一.连续型随机变量

1. 正态分布

1.1 正态分布对象创建,期望及方差

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats
#(1)满足标准正态分布 X~N(μ,σ²) μ=0,σ=1
s1=np.random.randn(1000)
print(s1)
#(2)满足正态分布 X~N(μ,σ²) X~N(3,16)
#第1个参数:μ ,2:σ
s2=np.random.normal(3,4,1000)
print(s2)
#(3)正态分布 X~N(μ,σ²)
#生成μ=3,σ=4的正态分布
# norm(loc=μ,scale=σ)
#根据分布,随机生成1500个样本点
s3=scipy.stats.norm(loc=3,scale=4)
print(s3)
sample=s3.rvs(1500)
print(sample)
# print(scipy.stats.norm(loc=3, scale=4).rvs(1000))
#期望 E(X)=μ=4
print(sample.mean())
#方差 D(X)=σ²=25
print(sample.var())
import scipy.stats
#设 X~ N(50,100), 计算 P(X≤62)
#生成分布
dist1=scipy.stats.norm(loc=50,scale=10)
#计算 P(X≤62)=F(62)
print('P(X≤62)=',dist1.cdf(62))
# P(45≤X≤62)=? =F(62)-F(45)
print(dist1.cdf(62)-dist1.cdf(45))

1.2 正态分布绘图

方法一(绘制概率密度函数和分布函数):

import matplotlib.pyplot as plt
import scipy.stats
#正态分布 X~N(μ,σ²)
#生成μ=4,σ=5的正态分布
# norm(loc=μ,scale=σ)
dist=scipy.stats.norm(loc=4,scale=5)
#生成数据
x=np.linspace(-10,25,100)
#概率密度函数 f(x)
pdf=dist.pdf(x)
#分布函数 F(x)
cdf=dist.cdf(x)
#绘制图像(以子图的形式)
plt.subplot(121)
plt.plot(x,pdf)  #左边绘制概率密度函数
plt.subplot(122)
plt.plot(x,cdf)  #右边绘制分布函数
plt.show()

方法二(自定义绘制概率密度函数):

import matplotlib.pyplot as plt
import numpy as np
#定义函数:用代码自定义完成正态分布密度函数公式
def normal(x):
    mu=x.mean()  #期望
    sigma=x.std() #标准差
    a=((x-mu)**2)/(2*sigma**2)
    #根号:sqrt
    y=1/(np.sqrt(2*np.pi)*sigma)*np.exp(-a)
    return y,mu,sigma

if __name__ == '__main__':
    #生成数据,使用numpy生成 -5-5 之间100个点
    x=np.linspace(-5,5,100)
    y,mu,sigma=normal(x) #调用函数,计算 y对应的值
    # 绘制正态分布的概率密度函数图像
    plt.plot(x,y,label=r'$\mu={:.2f},\sigma={:.2f}$'.format(mu,sigma))
    #:.2f: 保留两位小数
    plt.legend()
    plt.show()

2. 均匀分布

2.1 均匀分布对象创建,期望及方差

import numpy as np
import scipy.stats

#(1)满足0-1均匀分布 X~U(a,b)  a=0,b=1
t1=np.random.rand(1000)
print(t1)
#(2)满足均匀分布 X~U(a,b)  a=3,b=5
#第1个参数:a ,2:b
t2=np.random.uniform(3,5,1000)
print(t2)
#(3)生成均匀分布 X~U(a,b)
#生成均匀分布 X~U(3,5) a=3,b=5
#uniform(loc=a,scale=b-a)
#根据分布,随机生成1500个样本点
t3=scipy.stats.uniform(loc=3,scale=5)
print(t3)
sample1=t3.rvs(1500)
print(sample1)
#期望 E(X)=(a+b)/2=7/2=3.5
print(sample1.mean())
#方差 D(X)=(b-a)²/12=3/4=0.75
print(sample1.var())

2.2 均匀分布绘图

方法一(绘制均匀分布概率密度函数和分布函数图像):

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

#生成均匀分布 X~U(a,b)
#生成均匀分布 X~U(2,5) a=2,b=5
#uniform(loc=a,scale=b-a)
dist=scipy.stats.uniform(loc=2,scale=3)
#生成数据
x=np.linspace(0,10,100)
#概率密度函数
pdf=dist.pdf(x)
#分布函数
cdf=dist.cdf(x)
#绘制图像
plt.subplot(121)
plt.plot(x,pdf)
plt.subplot(122)
plt.plot(x,cdf)
plt.show()

方法二(自定义均匀分布概率密度函数):

import matplotlib.pyplot as plt
import numpy as np

def uniform(x,a,b):
    ls=[]
    for i in x:
        if a<=i<=b:
            y=1/(b-a)
            ls.append(y)
        else:
            ls.append(0)
    return ls
    # y = [1 / (b - a) if a <= i and i <= b else 0 for i in x]
    # return y

x=np.linspace(-10,10,100)
ls=[(-8,0),(-3,3),(2,7)]
for k in ls:
    a,b=k[0],k[1]
    y=uniform(x,a,b)
    plt.plot(x,y,label='a={},b={}'.format(a,b))
    plt.legend()
plt.show()
plt.savefig('abcdrfg.png')

3. 指数分布

3.1 指数分布常见对象创建,期望及方差

import scipy.stats
#指数分布 X~e(λ)
#生成分布 X~e(3) λ=3
#expon(scale=1/λ)
dist=scipy.stats.expon(scale=1/3)
#根据已知分布,随机生成1200个数据
sample=dist.rvs(1200)
#期望 E(X)=1/λ=1/3
print(sample.mean())
#方差 D(X)=1/λ² =1/9
print(sample.var())

3.2 指数分布绘图

方法一(绘制指数分布概率密度函数和分布函数):

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

#指数分布 X~e(λ)
#生成分布 X~e(3) λ=3
#expon(scale=1/λ)
dist=scipy.stats.expon(scale=1/3)
#生成数据
x=np.linspace(0,5,100)
#密度函数
pdf=dist.pdf(x)
#分布函数
cdf=dist.cdf(x)
#绘制图像
plt.subplot(121)
plt.plot(x,pdf)
plt.subplot(122)
plt.plot(x,cdf)
plt.show()

方法二(自定义指数分布概率密度函数):

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats

def expon(x,r):
    y = r * np.exp(-r * x)
    return y

if __name__ == '__main__':
    x=np.linspace(0,10,1000) #使用numpy生成 0-5之间100个点
    r=6             # λ设置为3
    y=expon(x,r)  #调用函数,计算y对应的值
    plt.plot(x,y)  #绘制指数分布的概率密度函数图像
    plt.show()

二. 离散型随机变量

1. 二项分布

1.1 二项分布的创建

import scipy.stats

#二项分布的创建(n=10,p=0.3)
b1=scipy.stats.binom(10,0.3)
print(b1)
#期望E(x)=np
print(b1.mean())
#方差D(x)=npq
print(b1.var())

1.2 二项分布图像(散点图)的绘图

方法一(绘制二项分布率和分布函数):

import scipy.stats

dist=scipy.stats.binom(10,0.3)
x=np.arange(11)
#分布律
pmf=dist.pmf(x)
#分布函数F(x)
cdf=dist.cdf(x)
plt.subplot(121)
plt.scatter(x,pmf)
plt.subplot(122)
plt.scatter(x,cdf)
plt.show()

方法二(自定义二项分布):

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

def bioxiang(n,p):
    # la=[]
    # for k in range(n+1):
    #     y=sp.comb(n,k)*p**k*(1-p)**(n-k)
    #     la.append(y)
    # return la
    y=[sp.comb(n,k)*p**k*(1-p)**(n-k) for k in range(n+1)]
    return y

if __name__ == '__main__':
    n = 10
    p = 0.6
    # x=np.arange(n+1) #使用numpy生成 0,1...10  11个点
    x=[i for i in range(n+1)]
    y=bioxiang(n,p) #调用函数,计算 y对应的值
    plt.scatter(x,y,marker='o') #绘制分布律函数图像
    plt.savefig('b.jpeg')
    plt.show()

2. 泊松分布

2.1 泊松分布的创建

import scipy.stats
p1=scipy.stats.poisson(6)
print(p1)
#期望E(x)=λ
print(p1.mean())
#方差D(x)=λ
print(p1.var())

2.2 泊松分布图像(散点图)的绘制

方法一(绘制泊松分布率和分布函数):

import scipy.stats
dist=scipy.stats.poisson(5)
# 生成数据
# x=np.arange(11)
x=np.array([range(11)])
#分布律
pmf=dist.pmf(x)
#分布函数F(x)
cdf=dist.cdf(x)
plt.subplot(121)
plt.scatter(x,pmf)
plt.subplot(122)
plt.scatter(x,cdf)
plt.show()
# 已知x-p(4),求
# (1)概率p(x<=8)=F(8)
dd=scipy.stats.poisson(4)
print(dd.cdf(8))
#(2)p(1<x<4)=p(x=2)+p(x=3)
print(dd.pmf(3) + dd.pmf(2))

方法二(自定义泊松分布):

import matplotlib.pyplot as plt
import numpy as np

def possion(n,rua):
    # ls=[]
    # for k in range(n+1):
    #     y=rua**k/(sp.factorial(k))*np.exp(-rua)
    #     ls.append(y)
    # return ls

    ls=[rua**k/(sp.factorial(k))*np.exp(-rua) for k in range(n+1)]
    return ls
    
if __name__ == '__main__':

    n=11
    rua=5
    x=np.arange(n+1)#使用numpy生成 0,1...20  21个点
    y=possion(n,rua)#调用函数,计算 y对应的值
    plt.scatter(x,y,marker='o')#绘制分布律函数图像
    plt.show()

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小飞龙程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值