精华内容
下载资源
问答
  • 二维正态分布概率密度函数为钟形曲面,等高线是椭圆线族,并且二维正态分布的两个边缘分布都是正态分布,如图numpy生成个服从多元正态分布的数组multivariate_normal(mean, cov, size=None, check_...

    标准正态分布的概率密度公式

    1800705-20200926161632984-176028649.png

    正态分布概率密度公式

    1800705-20200926161550014-1541470664.png

    多元正态分布的概率密度公式

    1800705-20200926164159742-1200946164.png

    上式为 x 服从 k 元正态分布,x 为 k 维向量;|Σ| 代表协方差矩阵的行列式。

    二维正态分布概率密度函数为钟形曲面,等高线是椭圆线族,并且二维正态分布的两个边缘分布都是一维正态分布,如图

    1800705-20200926164501817-1312317924.png

    numpy生成一个服从多元正态分布的数组

    multivariate_normal(mean, cov, size=None, check_valid=None, tol=None)

    各参数含义:

    mean:均值,维度为1,必选参数;

    cov:协方差矩阵,必选参数;

    size: 指定生成矩阵的维度,若size=(1, 1, 2),则输出的矩阵的 shape 即形状为 1X1X2XN(N为mean的长度);

    check_valid:可取值 warn,raise以及ignore;

    tol:检查协方差矩阵奇异值时的公差,float类型。

    示例:

    import numpy as np

    import matplotlib.pyplot as plt

    mean = (1, 1)

    cov = np.array([[0.1, 0], [0, 1]])

    x = np.random.multivariate_normal(mean, cov, (500,), 'raise') # nx2

    plt.scatter(x[:, 0], x[:, 1])

    plt.xlim(-3, 5)

    plt.ylim(-3, 5)

    plt.show()

    运行结果:

    1800705-20200926165130845-1802125961.png

    参考资料

    展开全文
  • 正态分布(平均值为0,标准差为1)的ndarraynormal(size=(N,M,...)) 生成个NM...的正态(高斯)分布的ndarray>>> import numpy as np>>> np.random.normal(size=(3,4))array([[-0.80403424, -2.26403495, 1....

    randn(N, M, ...) 生成一个NM...的正态分布(平均值为0,标准差为1)的ndarray

    normal(size=(N,M,...)) 生成一个NM...的正态(高斯)分布的ndarray

    >>> import numpy as np

    >>> np.random.normal(size=(3,4))

    array([[-0.80403424, -2.26403495, 1.39152869, -0.90893755],

    [-0.2589969 , -1.31959684, 1.09861245, -0.53453221],

    [ 1.66536752, -0.78309767, 1.38870488, 1.0001 ]])

    >>> np.random.randn(3,4)

    array([[-0.28923004, 0.14990385, -0.22618601, -0.18700602],

    [ 0.39336849, -0.14007346, -0.15958946, -0.60184563],

    [ 1.68451529, 0.04972581, 0.50062887, 0.61770662]])

    randn和normal是不是一个意思? 都是生成正态分布的ndarray? 到底是生成什么样的数组呢?比如这两个数组到底有什么性质,所以才被称为服从“正态分布”的数组呢?

    “若随机变量X服从一个数学期望为μ、方差为σ^2的正态分布,记为N(μ,σ^2)。其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。当μ=0,σ=1时的正态分布是标准正态分布。”

    “正态分布的概率密度函数曲线呈钟形,因此人们又经常称之为钟形曲线。正态曲线呈钟型,两头低,中间高,左右对称,曲线与横轴间的面积总等于1。”

    这个公式又是怎么回事?怎么得来的?

    bVTkfH?w=200&h=76

    概率论真的不好理解啊。

    展开全文
  • 如何使用Python生成正态分布的人员身高体重信息?下面是生成的数据的分布情况,身高数据在各个区间大致呈正态分布。对应的代码如下,先用pd.cut进行各个区间分桶,然后使用sort_index按照区间名排序。f = pd.read_...

    如何使用Python生成正态分布的人员身高体重信息?

    下面是生成的数据的分布情况,身高数据在各个区间大致呈正态分布。

    对应的代码如下,先用pd.cut进行各个区间分桶,然后使用sort_index按照区间名排序。

    f = pd.read_csv('./datasets/boygirl200.csv', encoding='gbk')des = df.describe()bins = range(des.height['min'].astype(int), des.height['max'].astype(int), 2)cutdf = pd.cut(df.height, bins=bins, include_lowest=True)cutdf.value_counts().sort_index().plot.bar()

    生成正态分布数据

    使用np.random.normal(mean,scale,size)可以生成很多数值呈正态分布数字。如下图所示,mean就是中间竖线的位置,scale就是横向挤压或拉伸程度,size是生成数字个数。

    但是这里也有问题,由于是基于概率的,就无法避免生成及少量超级小或超级大的值,比如身高1厘米或体重300公斤的异常值数据都有可能产生。最简单的情况是对生成后的数据用DataFrame.loc()条件表达式直接截取最小值和最大值之间的值。

    下面是代码部分。首先使用一个男生名字列表来生成一系列name字段,这个数据可以从下面的百度网盘下载。链接:https://pan.baidu.com/s/1jf-H-VdQ5gS44ODaajJmLQ 密码:blvp

    girlnamedf=pd.read_csv('datasets/En_girl_names.csv',index_col=0)

    girldf.head()

    下面是生成数据的代码,先生成正态分布的身高,然后生成正态分布的bmi体重指数,然后根据身高和体重指数计算出体重,根据bmi进行分箱操作生成fitness健康标签。最后使用loc把异常值去除。

    girldf2 = pd.DataFrame(girlnamedf.sample(frac=1)[:ncount]['0'].to_list(),columns=['name'])girldf2['height'] = np.random.normal(170, 5, ncount).astype(int)  #正态分布身高

    girldf2['bmi'] = np.random.normal(20, 5, ncount).round(1)  #正态分布bmi

    girldf2['weight'] = [int(h * h * b / 10000) for h, b in zip(girldf2.height, girldf2.bmi)]bins = [0, 18, 25, 100]labels = ['slim', 'healthy', 'fat']girldf2['fitness'] = pd.cut(girldf2['bmi'], bins=bins, labels=labels)girldf2['sex'] = 'woman'girldf2 = girldf2.loc[(girldf2.height > 150) & (girldf2.height < 210), :]girldf2 = girldf2.loc[(girldf2.bmi > 15) & (girldf2.bmi < 30), :]girldf2=girldf2[:100]girldf2.head(5)

    合并数据表

    同理也可以生成女生数据girldf2。男女生数据合并使用concat方法,代码如下:

    boygirldf=pd.concat([boydf2,girldf2])

    boygirldf=pd.DataFrame(boygirldf.sample(frac=1))

    boygirldf

    最后保存为csv文件。

    boygirldf.to_csv('datasets/boygirl200.csv')

    最终可以使用开篇的代码进行测试,也可以随时使用boygirldf.fitness.value_counts()查看实际数据分布情况。

    展开全文
  • 什么是正态分布关于什么是正态分布,早在中学时老师就讲过了。通俗来讲,就是当我们把数据绘制成频率直方图,所构成曲线的波峰位于中间,两边对称,并且随着往两侧延伸逐渐呈下降趋势,这样的曲线就可以说是符合数学...
    2c33c7c33c4c4288a53257fcf720b5ff.png

    什么是正态分布

    关于什么是正态分布,早在中学时老师就讲过了。通俗来讲,就是当我们把数据绘制成频率直方图,所构成曲线的波峰位于中间,两边对称,并且随着往两侧延伸逐渐呈下降趋势,这样的曲线就可以说是符合数学上的正态分布。由于任何特征的频率总和都为100%或1,所以该曲线和横轴之间部分的面积也为100%或1,这是正态分布的几何意义。

    如下图,是数据统计实例中出现的正态分布性数据:

    9c69f7bbe325463b7b698fb32c3e5fb4.png

    为什么要做正态性检验

    对此我的理解是,正态性可以保证随机性,因为随机数就是正态分布的,这里可以用高尔顿板来形象化地理解:

    高尔顿板为一块竖直放置的板,上面有交错排列的钉子。让小球从板的上端自由下落,当其碰到钉子后会随机向左或向右落下。最终,小球会落至板底端的某一格子中。假设板上共有 n 排钉子,每个小球撞击钉子后向右落下的概率为 ρ(当左、右概率相同时

    为 0.5),则小球落入第 k 个格子概率为二项分布,根据中心极限定理,当 n 足够大时,该分布近似于正态分布。此时,将大量小球落至格中,格子中的小球数量即近似于正态分布的钟形曲线。

    d0d82d5a1badfbcd2efa6fde3d2af175.png

    高尔顿绘制的高尔顿板示意图

    高尔顿板是多个二次分布的累加,是离散的,但如果是无数次进行累加,那么它的极限状态就是一个钟形曲线的正态分布。举个通俗的例子,如果统计全国成年女性的身高,那么结果曲线的波峰大概率落在 160-165cm 这个范围内,然后左侧对应偏低数据与右侧对应的偏高数据,占据比例极小,如果收集的数据足够多又保证随机,那么最后的曲线就应该近似正态分布。

    因此许多统计方法都是以正态分布为基础的,如方差分析、相关和回归分析等等。也有许多统计方法虽然不要求必须服从正态分布,但具有统计意义的数据量在极大的时候,是接近正态分布的,所以针对其使用的统计方法依然是以正态分布为理论基础进行改进的。

    用 Python 如何检验正态性

    1. Shapiro-Wilk test

    方法:scipy.stats.shapiro(x)

    官方文档:SciPy v1.1.0 Reference Guide

    参数:x - 待检验数据

    返回:W - 统计数;p-value - p值

    2. scipy.stats.kstest

    方法:scipy.stats.kstest (rvs, cdf, args = ( ), N = 20, alternative ='two-sided', mode ='approx')

    官方文档:SciPy v0.14.0 Reference Guide

    参数:rvs - 待检验数据,可以是字符串、数组;

    cdf - 需要设置的检验,这里设置为 norm,也就是正态性检验;

    alternative - 设置单双尾检验,默认为 two-sided

    返回:W - 统计数;p-value - p值

    3. Anderson-Darling test

    方法:scipy.stats.anderson (x, dist ='norm' )

    该方法是由 scipy.stats.kstest 改进而来的,可以做正态分布、指数分布、Logistic 分布、Gumbel 分布等多种分布检验。默认参数为 norm,即正态性检验。

    官方文档:SciPy v1.1.0 Reference Guide

    参数:x - 待检验数据;dist - 设置需要检验的分布类型

    返回:statistic - 统计数;critical_values - 评判值;significance_level - 显著性水平

    4. scipy.stats.normaltest

    方法:scipy.stats.normaltest (a, axis=0)

    该方法专门用来检验数据是否为正态性分布,官方文档的描述为:

    Tests whether a sample differs from a normal distribution.

    This function tests the null hypothesis that a sample comes from a normal distribution. It is based on D’Agostino and Pearson’s [R251], [R252] test that combines skew and kurtosis to produce an omnibus test of normality.

    官方文档:SciPy v0.14.0 Reference Guide

    参数:a - 待检验数据;axis - 可设置为整数或置空,如果设置为 none,则待检验数据被当作单独的数据集来进行检验。该值默认为 0,即从 0 轴开始逐行进行检验。

    返回:k2 - s^2 + k^2,s 为 skewtest 返回的 z-score,k 为 kurtosistest 返回的 z-score,即标准化值;p-value - p值

    展开全文
  • python统计分析常用函数库 scipy包中的stats模块和statsmodels包是python...小样本数据的正态性检验用途 夏皮洛-维尔克检验法 (Shapiro-Wilk) 用于检验参数提供的一组小样本数据线是否符合正态分布,统计量越大则表...
  • 主要介绍了python 如何判断一组数据是否符合正态分布,帮助大家更好的利用python分析数据,感兴趣的朋友可以了解下
  • 正态分布:若随机变量x服从有个数学期望为μ,方差为σ2 的正态分布,记为N(μ,σ)其中期望值决定密度函数的位置,标准差决定分布的幅度,当υ=0,σ=0 时的正态分布是标准正态分布判断方法有画图/k-s检验画图:#导入...
  • 正态分布:若随机变量x服从有个数学期望为μ,方差为σ2 的正态分布,记为N(μ,σ)其中期望值决定密度函数的位置,标准差决定分布的幅度,当υ=0,σ=0 时的正态分布是标准正态分布判断方法有画图/k-s检验画图:#导入...
  • 正态分布随机数应用广泛,有时候我们需要生成多组正态分布的随机数序列,而且组数和每组的个数我们也希望能自己设定。本文给出了能实现这工作的python代码。本程序中,设定随机种子为1,目的是使得每次程序运行...
  • spss三组数据检验其正态分布有一组不符合,另外两组符合怎么办
  • 正态分布:若随机变量x服从有个数学期望为μ,方差为σ2 的正态分布,记为N(μ,σ)其中期望值决定密度函数的位置,标准差决定分布的幅度,当υ=0,σ=0 时的正态分布是标准正态分布判断方法有画图/k-s检验画图:#导入...
  • %第个分布的参数sigma1=2;%第个分布的参数miu2=6;%第二个分布的参数sigma2=1;%第二个分布的参数R = 0.2*normrnd(miu1,sigma1,M,N)+0.8*normrnd(miu2,sigma2,M,N);单点的概率全是0,那你取出来的随机数算什么?...
  • 正态分布: 若随机变量x服从有个数学期望为μ,方差为σ2的正态分布,记为N(μ,σ) 其中期望值决定密度函数的位置,标准差决定分布的幅度,当υ=0,σ=0 时的...#构造一组随机数据 s = pd.DataFrame(np.random.randn.
  • 在很多模型及假设检验中都需要满足个假设条件:数据需服从正态分布。这篇文章主要讲讲如何判断数据是否符合正态分布。主要分为两种方法:描述统计方法和统计检验方法。 描述统计方法 描述统计就是用描述的数字或...
  • 正态分布广泛存在于自然现象、生产、生活的方方面面,例如试卷命题难度,产品的使用寿命、农作物产量...很多时候,在进行数据分析工作时,首先要看的就是数据是服从何种概率分布,而正态分布则是最重要的种概率分...
  • A=[4 3.7 4 4 4 3.7 3.1 4.1 3.9 1.88889 3.9 4 2.6 3.9 3.9 2.3 2.9 3.4 2.7 1.1 4.3 3.2 3.9 3.6 3.1 3.5 3.7];... alpha = 0.05%正态分布判断 [mu, sigma] = normfit(A; p1 = normcdf(A, mu, sigma; [H1,s1] = kste
  • 也就是两个人同时来决定个事,而最终的决定权在2,2决定是不是服从正态分布。 比如1说,h=0假设符合正态分布。而2说,p<0.05。那么就拒绝了1的说法,那么就不服从正态分布。 比如说,h=1假设不
  • 打开Minitab之后 点击Stat>Basic Statistics> Normality Test  分析之后若 P value(P值)>0.05,说明此数据服从正态分布
  • 1、 2组数据正态和一组正态数据进行差异性比较,是用参数检验还是参数检验? 2、海拔对3个物种的5项指标是否存在显著性差异,之前数据正态时用的是二因素(海拔和物种)方差分析,但现在数据为...
  • 在MATLAB上获得一组正态分布数据很容易,常利用: 1.normrnd函数——例:R=normrnd(μ,σ) 从具有均值参数 μ 和标准偏差参数 σ 的正态分布生成随机数 2.randn函数——例:R=randn 返回一个从标准正态分布中...
  • 其实学习没有捷径,如何合格的数据分析人员,让我们先看摘自《数据科学实战》书中的关于数据科学技能与自我认知的主要元素:可见要想成为合格的数据分析师,我们需要具备一定的数学、统计学、计算机能力,还需要...
  • (2)介绍几种非正态分布转化为正态分布的方法; 1. 正态分布判别 常用的正态分布判别方法主要有三种方法: (1)直方图:直方图(Histogram)又称质量分布图。是种统计报告图,由系列高度不等的纵向条纹或线段...
  • 非正态分布数据转换成正态分布

    千次阅读 2020-06-29 09:42:26
    常用的变量变换方法有对数变换、平方根变换、倒数变换、平方根反正弦变换等,应根据资料性质选择适当...(1)使服从对数正态分布的数据正态化。如环境中某些污染物的分布,人体中某些微量元素的分布等,可用对数正态...
  • 数据拟合,将一组数据作直方图,并在同一幅图中做出相应的正态拟合曲线

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,548
精华内容 14,219
关键字:

一组正态一组非正态