精华内容
下载资源
问答
  • python从正态分布中抽样
    千次阅读
    2020-12-28 22:48:01

    我试着从正态分布中取样,使用的是pandas数据帧中存储的均值和标准差。在

    例如:means= numpy.arange(10)

    means=means.reshape(5,2)

    产生:

    ^{pr2}$

    以及:sts=numpy.arange(10,20)

    sts=sts.reshape(5,2)

    产生:0 1

    0 10 11

    1 12 13

    2 14 15

    3 16 17

    4 18 19

    我如何生成另一个pandas数据帧,具有相同的形状,但使用相应的平均值和标准差从正态分布中采样。在

    也就是说,这个新数据帧的位置0,0将从具有mean=0和{}的正态分布中采样,依此类推。在

    我目前的职能:def make_distributions(self):

    num_data_points,num_species= self.means.shape

    samples=[]

    for i,j in zip(self.means,self.stds):

    for k,l in zip(self.means[i],self.stds[j]):

    samples.append( numpy.random.normal(k,l,self.n) )

    将为我从分布中采样,但我很难将数据放回与平均值和标准偏差dfs相同的形状的数据帧中。有人有什么建议吗?在

    提前谢谢。在

    更多相关内容
  • 直接多元正态分布讲起。多元正态分布公式如下: 这就是多元正态分布的定义,均值好理解,就是高斯分布的概率分布值最大的位置,进行采样时也就是采样的中心点。而协方差矩阵在多维上形式较多。 协方差矩阵 ...
  •     2)python绘制正态分布的概率密度函数图象   4、卡方分布的概率密度函数及其图象     1)卡方分布的概率密度函数及其图象     2)python绘制卡方分布的概率密度函数图象   5、t分布的概率密度...
  • python 服从正态分布下概率密度函数

    千次阅读 2019-10-11 00:13:40
    python 服从正态分布下概率密度函数和累积密度函数 服从正太分布下,概率密度函数公式 公式解释: f(x): 是某样本(样本以数值形式表现)为某数值时发生的概率 0<f(x)<1 x: 是随机抽样的数值,取值范围负...

    python 服从正态分布下概率密度函数

    服从正太分布下,概率密度函数公式
    

    在这里插入图片描述
    公式解释:
    f(x): 是某样本(样本以数值形式表现)为某数值时发生的概率
    0<f(x)<1

    x: 是随机抽样的数值,取值范围从负无穷大到正正无穷大
    e: 是自然数
    σ: 是样本的标准差
    μ:是样本的算术平均值(也叫均值)

    对服从正太分布下,概率密度函数的理解:
    (1) 当自变量x=μ时,f(x)取的最大值, 最大值=f(x=μ)
    即:当自变量取值为均值时,发生的概率最大(或者说:发生概率最大的数是均值)

    (2) 概率密度函数的图像(曲线图像)关于x=μ对称

    (3) 标准差σ越大, 则图像峰值(峰值也就是概率最大值,即:峰值=f(x=μ))越小

    (4) 概率最小值趋近于0

    应用python绘制图像

    """
    绘制正太分布函数曲线图
    
    """
    import matplotlib.pyplot as plt
    import math
    import numpy as np
    import matplotlib
    
    matplotlib.rcParams['axes.unicode_minus']=False#解决保存图像时负号'-'显示为方块的问题
    plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
    
    x = np.linspace(-10,30,num=1000)  # x轴的取值范围
    std1 = 1 # 定义标准差, 并输入标准差
    mean1 = 10  # 定义均值,并输入均值
    fx1 = 1 / (std1 * pow(2 * math.pi, 0.5)) * np.exp(-((x - mean1) ** 2) / (2 * std1 ** 2))  # 概率密度函数公式
    
    std2 = 2
    mean2 = 10
    fx2 = 1 / (std2 * pow(2 * math.pi, 0.5)) * np.exp(-((x - mean2) ** 2) / (2 * std2 ** 2))  # 概率密度函数公式
    
    std3 = 4
    mean3= 10
    fx3 = 1 / (std3 * pow(2 * math.pi, 0.5)) * np.exp(-((x - mean3) ** 2) / (2 * std3 ** 2))  # 概率密度函数公式
    
    std4 = 8
    mean4 = 10
    fx4 = 1 / (std4 * pow(2 * math.pi, 0.5)) * np.exp(-((x - mean4) ** 2) / (2 * std4 ** 2))  # 概率密度函数公式
    
    # 多条曲线在同一张图上进行对比
    plt.plot(x, fx1,label = 'std1 = 1')  # 绘制概率密度函数图像
    plt.plot(x,fx2,label = 'std2 = 2')
    plt.plot(x,fx3,label = 'std3 = 4')
    plt.plot(x,fx4,label = 'std4 = 8')
    plt.legend() # 显示标签 label
    plt.xlabel("数值")
    plt.ylabel('数值的概率')
    plt.title('服从正太分布的概率密度图')
    plt.show()  # 显示图像
    

    显示图像
    在这里插入图片描述
    由图像可知道: 标准差std 越大, 则峰值越小.(代码设置了均值相同)

    稍微修改均值和标准差后,重新绘图, 如下:

    import matplotlib.pyplot as plt
    import math
    import numpy as np
    import matplotlib
    
    matplotlib.rcParams['axes.unicode_minus']=False#解决保存图像时负号'-'显示为方块的问题
    plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
    
    x = np.linspace(-10,30,num=1000)  # x轴的取值范围
    std1 = 3 # 定义标准差, 并输入标准差
    mean1 = 6  # 定义均值,并输入均值
    fx1 = 1 / (std1 * pow(2 * math.pi, 0.5)) * np.exp(-((x - mean1) ** 2) / (2 * std1 ** 2))  # 概率密度函数公式
    
    std2 = 3
    mean2 = 10
    fx2 = 1 / (std2 * pow(2 * math.pi, 0.5)) * np.exp(-((x - mean2) ** 2) / (2 * std2 ** 2))  # 概率密度函数公式
    
    std3 = 3
    mean3= 12
    fx3 = 1 / (std3 * pow(2 * math.pi, 0.5)) * np.exp(-((x - mean3) ** 2) / (2 * std3 ** 2))  # 概率密度函数公式
    
    std4 = 3
    mean4 = 18
    fx4 = 1 / (std4 * pow(2 * math.pi, 0.5)) * np.exp(-((x - mean4) ** 2) / (2 * std4 ** 2))  # 概率密度函数公式
    
    # 多条曲线在同一张图上进行对比
    plt.plot(x, fx1,label = '均值 = 6')  # 绘制概率密度函数图像
    plt.plot(x,fx2,label = '均值 = 10')
    plt.plot(x,fx3,label = '均值 = 12')
    plt.plot(x,fx4,label = '均值 = 18')
    plt.legend() # 显示标签 label
    plt.xlabel("数值")
    plt.ylabel('数值的概率')
    plt.title('服从正太分布的概率密度图')
    plt.show()  # 显示图像
    

    图像显示:
    在这里插入图片描述
    由图像看出, 当标准差相同时(代码设置标准差相同), 峰值相同, 均值不同时, 对称轴位置不同

    再次修改代码对标准差和均值重新赋值(可跳过不用看代码, 直接看图像)

    import matplotlib.pyplot as plt
    import math
    import numpy as np
    import matplotlib
    
    matplotlib.rcParams['axes.unicode_minus']=False#解决保存图像时负号'-'显示为方块的问题
    plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
    
    x = np.linspace(-10,30,num=1000)  # x轴的取值范围
    std1 = 3 # 定义标准差, 并输入标准差
    mean1 = 6  # 定义均值,并输入均值
    fx1 = 1 / (std1 * pow(2 * math.pi, 0.5)) * np.exp(-((x - mean1) ** 2) / (2 * std1 ** 2))  # 概率密度函数公式
    
    std2 = 5
    mean2 = 10
    fx2 = 1 / (std2 * pow(2 * math.pi, 0.5)) * np.exp(-((x - mean2) ** 2) / (2 * std2 ** 2))  # 概率密度函数公式
    
    std3 = 6
    mean3= 12
    fx3 = 1 / (std3 * pow(2 * math.pi, 0.5)) * np.exp(-((x - mean3) ** 2) / (2 * std3 ** 2))  # 概率密度函数公式
    
    std4 = 2
    mean4 = 18
    fx4 = 1 / (std4 * pow(2 * math.pi, 0.5)) * np.exp(-((x - mean4) ** 2) / (2 * std4 ** 2))  # 概率密度函数公式
    
    # 多条曲线在同一张图上进行对比
    plt.plot(x, fx1,label = '均值 = 6, 标准差=3')  # 绘制概率密度函数图像
    plt.plot(x,fx2,label = '均值 = 10, 标准差=5')
    plt.plot(x,fx3,label = '均值 = 12, 标准差=6')
    plt.plot(x,fx4,label = '均值 = 18, 标准差=2')
    plt.legend() # 显示标签 label
    plt.xlabel("数值")
    plt.ylabel('数值的概率')
    plt.title('服从正太分布的概率密度图')
    plt.show()  # 显示图像
    

    图像显示:

    在这里插入图片描述
    通过图像可以观查出均值和标准差对概率的影响, 验证了上述的结论

    最后: 本人又另写一篇关于服从正太分布概率 离散情况下 概率密度函数和累积密度函数的文章. 有疑惑的可以查看一下

    展开全文
  • 正态分布,T分布,Python

    T分布

    T=\frac{Z}{\sqrt{\chi ^{2}/\nu }}

    Z为标准正态分布统计量,\chi ^{2}卡方分布,v为卡方分布自由度,T自由度=v;

    假设有相互独立的样本观测值x_{1},x_{2},x_{3}...x_{n},来自于一个均值为\mu,方差为\sigma ^{2}的正态统计,且均值\bar{x}符合正态分布:

     Z=\frac{\bar{x}-\mu }{\sqrt{\frac{\sigma ^{2}}{n}}}

    可知,卡方分布为:

    \chi ^{2}=\frac{(n-1)s^{2}}{\sigma ^{2}}    自由度 \upsilon = \left ( n-1 \right )

    卡方分布https://blog.csdn.net/Zohn_Sun/article/details/122970784?spm=1001.2014.3001.5501

    推导:


    由卡方分布可推   \chi ^{2}/\nu=\chi ^{2}/\left ( n-1 \right )=\chi ^{2}\cdot \frac{1}{n-1}

    推导可得:\chi ^{2}\cdot \frac{1}{n-1}=\frac{(n-1)s^{2}}{\sigma ^{2}}\cdot \frac{1}{n-1}   ---------->\chi ^{2}\cdot \frac{1}{n-1}=\frac{s^{2}}{\sigma^{2} }

    \sqrt{\chi^{2}/\nu }=\frac{s}{\sigma}

    此时T=\frac{\frac{\bar{x}-\mu }{\sqrt{\frac{\sigma ^{2}}{n}}}}{\frac{s}{\sigma }}=\frac{\frac{\sqrt{n}\left ( \bar{x}-\mu \right )}{\sigma}}{\frac{s}{\sigma }}=\frac{\sqrt{n}\left ( \bar{x}-\mu \right )}{s}=\frac{\bar{x}-\mu }{\frac{s}{\sqrt{n}}}

    化简推导:T=\frac{\bar{x}-\mu }{\frac{s}{\sqrt{n}}}


    此时我们可以看推导后的T分布公式,若s=\sigma,则T=Z公式符合正态分布,但一般情况下样本的总体方差\sigma ^{2}不可知,因此使用样本方差代替s^{2},此时样本符合T分布。

    T=\frac{\bar{x}-\mu }{\frac{s}{\sqrt{n}}}一般用于T检验。

    T分布应用:独立小样本两个总体均值差的区间估计https://blog.csdn.net/Zohn_Sun/article/details/122835360?spm=1001.2014.3001.5501

    import matplotlib.pyplot as plt
    from scipy.stats import t
    import numpy as np
    x = np.linspace( -3, 3, 100)
    plt.plot(x, t.pdf(x,1), label='df=1')
    plt.show()

    t分布的概率密度函数和正态分布的概率密度函数都是偶函数(左右对称的)。t分布随着自由度的增加,就越来越接近正态分布,即t分布的极限分布也是正态分布

    from scipy import stats
    
    # T分布
    stats.t
    #分布函数值
    stats.t.cdf(α,自由度);
    # 概率密度函数
    stats.t.pdf(α,自由度);
    # 右分位点,若取95%置信系数,则α=(1-0.95)/2
    stats.t.isf(α,自由度);

    展开全文
  • 拉丁超立方抽样-正态分布1、前期准备2、生成两个(具有正态分布的随机变量)参数的随机数2.1、生成第一个参数的随机数2.2、生成第二个参数的随机数3、将生成的随机数输出到Excel4、将生成的随机数输出到图像 ...

    0、拉丁超立方抽样的理论基础

    0.1、概况

    拉丁超立方体采样(LHS)最早由McKay等提出,并由Iman和Conover进一步发展,在很多领域中具有广泛的应用性。

    拉丁超立方抽样也是一种分层抽样,在蒙特∙卡罗抽样方法的基础上对采样策略进行了改进,从而做到在保持统计显著性的同时减小采样规模。根据对每个超立方体内样本点的确定方式不同,可将拉丁超立方抽样技术分为:

    • 中值拉丁超立方抽样法
    • 拉丁超立方重要抽样法
    • 含随机排序法的拉丁超立方抽样

    笔者重点介绍含随机排序法拉丁超立方抽样法的基本原理。

    0.2、基本原理

    拉丁超立方抽样的关键是对累积概率分布进行分层,累积概率在0到1之间,分成相等的间隔块后,根据间隔块的概率值得到样本区间。然后从每个样本区间中随机抽取样本,于是以抽样点代表每个区间的值。
    根据n个随机变量 x 1 x_1 x1, x 2 x_2 x2,∙∙∙, x k x_k xk,∙∙∙, x n x_n xn建立 n n n维向量空间,每个随机变量都遵循一定的概率分布, x k x_k xk的累积概率分布函数可以表示为
    y k = f ( x ) y_{k}=f\left ( x \right ) yk=f(x)

    0.3、基本步骤

    假设在每一维向量空间中抽取N个样本,得到拉丁超立方抽样模拟的步骤为:

    1. 将每一维向量空间分成N份,根据式上式的反函数求得对应区间,使得每个区间具有相同的概率;
    2. 在每一维的每个区间中随机选取一个点作为采样点;
    3. 对每一维空间选出的样本点进行随机排序组成各自向量;
    4. 将上面采集到的样本向量进行组合就得到一个 k × N k×N k×N的样本矩阵。

    如下图所示,累积概率分布函数曲线被分成三个区间,每个区间都抽取一个样本,每个区间都有样本取出,且一旦取出后,这个区间将不再被抽样。
    1
    避免了在抽样量较少时可能出现的“聚集”问题,样本可以更加准确反映输入概率分布,实际应用时具有高效性。

    1、导入库和基本准备

    #开头的基础设置
    from __future__ import division
    import math
    import numpy as np
    import matplotlib.pyplot as pl
    from numpy.random import RandomState #引入伪随机数器
    import scipy.stats as st #引入统计函数库,为了引出累计函数的逆函数
    #获取随机参数数据
    D = 2 #参数个数
    N = 100 #拉丁超立方层数,最终生成的数组个数
    
    result = np.empty([N, D]) # N行D列的随机数组
    e = np.empty([N, D]) # N行D列的随机数组---为了记录每个等概率区域边界的随机变量值
    temp = np.empty([N])      #一维随机数组
    emp = np.empty([N])       #一维随机数组---为了记录每个等概率区域边界的随机变量值
    #print(result,e,temp) #检查到这里之前阶段代码的正确性
    d = 1.0 / N
    

    2、生成两个(具有正态分布的随机变量)参数的随机数

    2.1、生成第一个参数的随机数

    代码转第6

    2.2、生成第二个参数的随机数

    代码转第6

    3、将生成的随机数输出到Excel中

    代码转第6

    4、将生成的随机数输出到图像中

    pl.figure(figsize=(22,22))    # 设置画布大小
    pl.grid(linestyle='--')       #设置网格线---这里是虚线
    #==========字体的引入==========
    import matplotlib.font_manager as fm
    myfont = fm.FontProperties(fname=r"C:\\WINDOWS\\Fonts\\simsun.ttc")  #将所给字体文件转化为此处可以使用的格式,可使用自己电脑自带的其他字体文件,你可以使用自己电脑C:\Windows\Fonts下的字体
    #===绘制散点图===
    X = result[:,0]
    Y = result[:,1]
    pl.scatter(X,Y)
    #===图的标题---参数(图的标题,字体,字号, 颜色, 位置),注:颜色取值在0到1之间===
    pl.title('作图',fontproperties=myfont, fontsize=20, color=(0.4,0.4,0.4), loc='center') 
    #===设置轴坐标刻度值的大小以及刻度值的字体===
    
    #***这个地方会报警告——无视(注意版本太新可能未必有这个命令)***
    ax=pl.subplot(111) #注意:一般都在ax中设置,不在plot中设置,这个是用来设置多个子图的位置, 
    
    labels = ax.get_xticklabels() + ax.get_yticklabels()
    [label.set_fontname('Times New Roman') for label in labels]
    #===设置轴坐标的名称以及对应字体格式===
    font2 = {'family': 'Times New Roman',
             'weight': 'normal',
             'size': 20,
             }
    pl.xlabel('Dimension-1', font2)
    pl.ylabel('Dimension-2', font2)
    #===设置轴坐标的其他相关设置===
    
    para1=e[:-1,0]   #因为正态分布的随机变量由负无穷到正无穷,而坐标值需要是个具体的值,而记录边界值的数组e 不是,包含"正无穷"点,故需要舍掉才容易表示到图上,
    para2=e[:-1,1]   # 数组e 的第一个数就是从第一个等概率区域的右边界点开始记录的,故相当于已经舍掉“负无穷”点
                     #这里再舍掉“正无穷”点-即最后一个数据就是绘图轴坐标数据
    #print(para)
    biao_q1=np.around(para1, decimals=3) #numpy.around() 函数---要舍入的小数位数(默认值:0),如果小数为负数,则指定小数点左边的位数。1. 可以传递给Decimal整型或者字符串参数,但不能是浮点数据,因为浮点数据本身就不准确。2. Decimal还可以用来限定数据的总位数。
    biao_q2=np.around(para2, decimals=3)
    pl.tick_params(axis='x', labelsize=10)    # 设置x轴标签大小
    pl.xticks(para1,biao_q1)
    pl.xticks(rotation=80)    # 设置x轴标签旋转角度
    pl.tick_params(axis='y', labelsize=10)    # 设置y轴标签大小
    pl.yticks(para2,biao_q2)
    pl.tight_layout()#自动调整标签使之不重叠,---“整个布局自适应”
    #绘图并保存图片,且注意savefig和show的顺序一定不能变
    pl.margins(0.01,0.03)  #去除空白
    fig = pl.gcf()
    pl.show()
    fig.savefig('LHS.svg', dpi=300) #dpi是设置清晰度的,大于300就比较清晰了
    

    显示结果:
    2

    5、代码肯定可以实现抽样,若需一步一步的更详尽解释,请“挪步”佐佑思维公众号→免费、有问必答!

    6、 ★佐佑思维二维码★

    佐佑思维

    展开全文
  • Using Python, how can I sample data from a multivariate log-normal distribution? For instance, for a multivariate normal, there are two options. Let's assume we have a 3 x 3 covariance matrix and a 3-...
  • 正态分布正态分布采样及Python实现

    万次阅读 多人点赞 2018-12-27 22:22:10
    正态分布正态分布采样及Python实现多元正态分布(多元高斯分布)协方差矩阵协方差分解变量的线性变换(正态分布采样原理)python实现参考文献 多元正态分布(多元高斯分布) 直接多元正态分布讲起。多元正态分布公式...
  • Python正态分布,卡方分布
  • 对于整数,范围有统一的选择。 对于序列,存在随机元素的统一选择、用于生成列表的随机排列的函数、以及用于随机抽样而无需替换的函数。在实数轴上,有计算均匀、正态(高斯)、对数正态、负指数、伽马和贝塔...
  • 拉丁超立方抽样-对数正态分布0、拉丁超立方抽样的理论基础1、导入库和基本准备2、生成(具有对数正态分布的随机变量)参数的随机数3、将生成的随机数输出到Excel4、将生成的随机数输出到图像5、代码肯定可以实现...
  • python正态分布代码

    万次阅读 2017-09-05 16:52:58
    # Python实现正态分布 # 绘制正态分布概率密度函数 import numpy as np import matplotlib.pyplot as plt import math u = 0 # 均值μ u01 = -2 sig = math.sqrt(0.2) # 标准差δ x = np.linspace(u - 3*sig
  • 如何在numpy范围内获得正态分布

    千次阅读 2020-12-06 12:03:41
    我们应该得到一组带有边界的随机w.r.t正态分布.我们可以使用np.random.normal()获得正态分布数,但它不提供任何绑定参数.我想知道怎么做?解决方法:truncnorm的参数化很复杂,所以这里有一个将参数化转换为更直观的...
  • 通过强制求和temp=100,您在至少两个数据点之间引入了一个依赖关系,使得无法创建一组独立采样的随机数据点。在一个更简单的例子:想象一下掷硬币。...在因此,您可以将系统的总随机性2位减少...
  • 在教学和软件常用的是检验数据是否来自于正态分布。 # -*- coding: utf-8 -*- import numpy as np import statsmodels.api as sm import pylab test = np.random.normal(0,1, 1000) sm.qqplot(test, line='45') ...
  • 本次选取泰坦尼克号的数据,利用python进行抽样分布描述及实践。 备注:数据集的原始数据是泰坦尼克号的数据,本次截取了其中的一部分数据进行学习。Age:年龄,指登船者的年龄。Fare:价格,指船票价格。Embark:登船...
  • n趋近于无穷,为正态分布 3、性质 (1)自由度可加性 (2)均值与方差 二、t分布 分子服从正态分布,定义域为负无穷至正无穷。分子服从卡方分布,定义域为正。综上,t分布定义域为负无穷至正无穷。 三...
  • 1.验证数据是否服从正态分布?import pandas as pdimport numpy as nppath = 'E:\\english\\data.xlsx'data=pd.read_excel(path)######按照港口分类,计算数据的统计量embark = data.groupby(['Embarked'])embark_...
  • 实现标准正态分布抽样 实现是三角分布抽样, 实现均匀分布抽样 实现指数分布抽样, 实现尔朗分布抽样, 实现泊松分布抽样, 实现韦布尔分布和伽马分布抽样 见实验代码WeibullDistribution.py 和GammaDistribution.py...
  • 直接点击下列链接,回顾往期内容:R统计学(01): 伯努利分布、二项分布R统计学(02): 几何分布R... 正态分布 (一)给定一个任意分布(均值为,标准差为)的总体,每次这些总体可重复地随机抽取n个样品,一共抽m次, ...
  • 昨天介绍了两连续变量的相关分析,今天来说说连续变量与分类变量(二分)之间的检验。通俗的来讲,就是去发现变量间的关系。连续变量数量为一个,分类变量数量.../ 01 / 正态分布在实际情况里,总体的信息往往难以获取...
  • 二维正态分布采样后,绘制置信椭圆 假设二维正态分布表示为: [x1x2]∼N([μ1μ2],[Σ11Σ12Σ21Σ22]) \left[\begin{array}{c} x_1 \\ x_2 \end{array}\right] \sim \mathcal{N}\left( \left[\begin{array}{c} \mu_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,543
精华内容 1,417
关键字:

python从正态分布中抽样