首页 > 编程知识 正文

python 正态分布随机数,用python创建100个服从正态分布的随机数

时间:2023-05-05 17:43:36 阅读:192660 作者:4055

2018年10月12日

正态分布

在统计学发展历史中,正态分布有着非常重要的地位,因为它允许从数学上近似不确定性和变异性。

虽然原始数据通常并不符合正态分布,但误差通常是符合正态分布的,对于大规模样本的均值和总数,也是一样的。

要将数据转换为z分数,需要减去数据的均值,再除以标准偏差。这样,所生成的数据才可以与正态分布进行对比。

标准化:标准化(也称为归一化),通过减去均值并除以标准偏差,将所有变量置于同一尺度。该方式避免了变量的原始测量规模对模型产生过度的影响。
我们一般称如上的标准化的值为z分数。这时,测量值可以用“偏离均值的标准偏差”表示,这样,变量对模型的影响就不会受到原始变量规模的影响。

绘制正态分布曲线

#导入工具包import numpy as npimport matplotlib.pyplot as plt #绘图模块import scipy.stats as stats #该模块包含了所有的统计分析函数import matplotlib.style as stylefrom IPython.core.display import HTML​#PLOTTING CONFIG 绘图配置%matplotlib inlinestyle.use('fivethirtyeight')plt.rcParams['figure.figsize']=(14,7)plt.figure(dpi=100)<matplotlib.figure.Figure at 0x1bd827ec6d8><matplotlib.figure.Figure at 0x1bd827ec6d8>#PDF 概率密度函数 plt.plot(np.linspace(-4,4,100),stats.norm.pdf(np.linspace(-4,4,100))) #从(-4,4)中随机选取100个数,绘制该事件的概率密度函数plt.fill_between(np.linspace(-4,4,100),stats.norm.pdf(np.linspace(-4,4,100)),alpha=.15)#对曲线内部进行填充​#CDF 累积概率密度函数 plt.plot(np.linspace(-4,4,100),stats.norm.cdf(np.linspace(-4,4,100))) #cdf函数表示之前的概率累积的结果,-4处为0,4处为1​#LEGEND 图例plt.text(x=-1.5,y=0.7,s="pdf(normed)",rotation=.65,weight="bold",color="#008fd5")plt.text(x=-0.4,y=0.5,s="cdf",rotation=.65,weight="bold",color="#fc4f30")​#Ticks 坐标轴plt.tick_params(axis="both",which="major",labelsize=18)plt.axhline(y=0,color="black",linewidth=1.3,alpha=.7)​


#可以看出pdf是一个标准的正态分布曲线,均值为0,方差为1,符合该事件的规律。

#CDF 累积概率密度函数plt.plot(np.linspace(-4,4,100),stats.norm.cdf(np.linspace(-4,4,100))) #cdf函数表示之前的概率累积的结果,-4处为0,4处为1#LEGEND 图例plt.text(x=-0.4,y=0.5,s="cdf",rotation=.65,weight="bold",color="#fc4f30")Text(-0.4,0.5,'cdf')

均值 #不同的均值绘制出来的正态分布曲线形状也不同​#PDF MU默认为0时plt.plot(np.linspace(-4,4,100),stats.norm.pdf(np.linspace(-4,4,100)))plt.fill_between(np.linspace(-4,4,100),stats.norm.pdf(np.linspace(-4,4,100)),alpha=.15)​#PDF MU=2时plt.plot(np.linspace(-4,4,100),stats.norm.pdf(np.linspace(-4,4,100),loc=2))plt.fill_between(np.linspace(-4,4,100),stats.norm.pdf(np.linspace(-4,4,100)),alpha=.15)​#PDF MU=-2时plt.plot(np.linspace(-4,4,100),stats.norm.pdf(np.linspace(-4,4,100),loc=-2))plt.fill_between(np.linspace(-4,4,100),stats.norm.pdf(np.linspace(-4,4,100)),alpha=.15)​#LEGEND 图例plt.text(x=-1,y=.35,s="$ mu=0$",rotation=.65,alpha=.75,weight="bold",color="#008fd5")plt.text(x=1,y=.35,s="$ mu=2$",rotation=.65,alpha=.75,weight="bold",color="#fc4f30")plt.text(x=-3,y=.35,s="$ mu=-2$",rotation=.65,alpha=.75,weight="bold",color="#e5ae38")​#Ticks 坐标轴plt.tick_params(axis="both",which="major",labelsize=18)plt.axhline(y=0,color="black",linewidth=1.3,alpha=.7)<matplotlib.lines.Line2D at 0x1bd859b9208>


#标准差

#当标准差不同时,正态分布曲线的形状也不同plt.figure(dpi=100)​#PDF SIGMA=1plt.plot(np.linspace(-4,4,100),stats.norm.pdf(np.linspace(-4,4,100),scale=1))plt.fill_between(np.linspace(-4,4,100),stats.norm.pdf(np.linspace(-4,4,100),scale=1),alpha=.15)​#PDF SIGMA=1plt.plot(np.linspace(-4,4,100),stats.norm.pdf(np.linspace(-4,4,100),scale=2))plt.fill_between(np.linspace(-4,4,100),stats.norm.pdf(np.linspace(-4,4,100),scale=2),alpha=.15)​#PDF SIGMA=1plt.plot(np.linspace(-4,4,100),stats.norm.pdf(np.linspace(-4,4,100),scale=0.5))plt.fill_between(np.linspace(-4,4,100),stats.norm.pdf(np.linspace(-4,4,100),scale=0.5),alpha=.15)​#LEGEND 图例plt.text(x=-1,y=.35,s="$ sigma=1$",rotation=.65,alpha=.75,weight="bold",color="#008fd5")plt.text(x=2,y=.15,s="$ sigma=2$",rotation=.65,alpha=.75,weight="bold",color="#fc4f30")plt.text(x=0,y=.6,s="$ sigma=0.5$",rotation=.65,alpha=.75,weight="bold",color="#e5ae38")​#Ticks 坐标轴plt.tick_params(axis="both",which="major",labelsize=18)plt.axhline(y=0,color="black",linewidth=1.3,alpha=.7)<matplotlib.lines.Line2D at 0x1bd8556a780>


#只有标准差不同时,标准差越大,正态分布曲线越平缓,标准差越小,正态分布曲线越陡。

获取正态分布的随机几个样本
可以使用norm.rvs()其中默认均值=0,方差=1,也可以自己指定。

from scipy.stats import norm#获得1个正态分布的随机样本print(norm.rvs(),end="nn")​#获得10个正态分布的随机样本print(norm.rvs(size=10),end="nn")​#自己指定均值和方差print(norm.rvs(loc=1,scale=0.1),end="nn")-0.8316623062885056[-0.02327842 0.62434293 -1.09564122 0.7642425 1.5418008 0.19240094 -0.67902596 1.89146273 -0.33651528 1.39595893]0.9700560621457974PDF 概率密度函数 (Probability Density Function)import numpy as npimport matplotlib.pyplot as plt%matplotlib inlinestyle.use('fivethirtyeight')plt.rcParams['figure.figsize']=(14,7)​**#随机变量X、Y的相对概率**x=-1y=2print("pdf(x)= {}npdf(y)= {}".format(norm.pdf(x),norm.pdf(y)))pdf(x)= 0.24197072451914337pdf(y)= 0.05399096651318806#绘制连续的概率密度曲线x_s=np.linspace(-3,3,100)y_s=norm.pdf(x_s)plt.scatter(x_s,y_s)<matplotlib.collections.PathCollection at 0x1bd85aca6a0>

CDF 累积概率密度函数 (Cumnlative Probability Density Function) 可以指定一个范围求累积概率密度

from scipy.stats import norm#X小于0.3的概率密度之和print("P(x<0.3)={}".format(norm.cdf(0.3)))P(x<0.3)=0.6179114221889526#X大于-0.2,小于0.2的概率密度之和print("P(-0.2<x<0.2)={}".format(norm.cdf(0.2)-norm.cdf(-0.2)))P(-0.2<x<0.2)=0.15851941887820603

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。