精华内容
下载资源
问答
  • 验证是否正态分布的方法分为两类:肉眼判断假设检验肉眼判断肉眼判断当然是一句玩笑话,我们不能只凭看两眼数据就认定是否符合正态分布了,我们是通过其与正态分布的数据相比较,并不是直接做个大仙,...

    最近太忙了,勉强利用宾馆的两个无聊的晚上,凑成了第二篇,关于正态分布的内容,正态分布是非常重要的前提,分析前需要先检验,然后看是否需要转换。

    在进行真正的检验之前,我们很多时候都忽略了进行正态分布的验证。验证是否是正态分布的方法分为两类:

    • 肉眼判断

    • 假设检验

    肉眼判断

    肉眼判断当然是一句玩笑话,我们不能只凭看两眼数据就认定是否符合正态分布了,我们是通过其与正态分布的数据相比较,并不是直接做个大仙,看上一眼就解决问题了。那么怎么和正态分布的数据做比较呢,比较直观并且肉眼可断的当然是看图了,看数再厉害也要晕。

    直方图和密度曲线的比较

    第一种方法就是对数据做直方图和密度曲线的图,然后看数据是否基本符合正太分布的特征(也就是那个钟形曲线),这里网上关于 R 验证正态分布的时候使用直方图 hist,以及密度曲线要用的 density,其实二者是一回事,本质上看图还是要靠核密度估计,我们先了解一下核密度估计。

    核密度估计是非参估计的一种,对我们最重要的是不需要先验知识,即可根据数据的本身特点和性质来进行拟合分布,查看数据分布的特点,最简单的是使用直方图,例如对 iris 的数据的萼片长度的分布进行查看:

    layout(matrix(c(1, 2, 3, 4), 2, 2, byrow = TRUE))hist(  iris$Sepal.Length,  freq = FALSE,  breaks = c(seq(4, 8, 0.05)),  main = "breaks = 0.05",  xlab = NULL)hist(  iris$Sepal.Length,  freq = FALSE,  breaks = c(seq(4, 8, 0.3)),  main = "breaks = 0.3",  xlab = NULL,  ylab = NULL)hist(  iris$Sepal.Length,  freq = FALSE,  breaks = c(seq(4, 8, 0.5)),  main = "breaks = 0.5",  xlab = "Sepal Length")hist(  iris$Sepal.Length,  freq = FALSE,  breaks = c(seq(4, 8, 0.8)),  main = "breaks = 0.8",  xlab = "Sepal Length",  ylab = NULL)

    d6545497621a2acdb1371ec6f7f225b4.png

    也就是说,我们划分每组长度的标准(bin 的宽度)不同,肉眼看上去,直方图的形状是有变化的。而且 bin 的宽度不管怎么变化,显示的分布并非是连续的变化,要避免这些问题,就需要引入核密度估计,核密度估计的曲线根据所有点在某个特定位置的权重来计算其在整个分布曲线上的距离,当在某一区域点的数量增加时,估计的概率就会增大。

    hist(  iris$Sepal.Length,  freq = FALSE,  xlab = "Sepal Length",  main = "Histogram and density of iris sepal length")lines(density(iris$Sepal.Length), col = 2, lwd = 2)

    7ad7e8f3ed8c5f488c5d054b2f4c0dda.png

    需要注意的是,不管怎样,我们很难得到非常完美的,或者理论上的分布曲线,只要曲线有一个峰值并且大致两侧对称,我们就认为是正太分布了。

    python 版本的验证:

    import pandas as pdimport statsmodels.api as smimport matplotlib.pyplot as pltimport seaborn as snsiris = pd.read_csv("./data/iris.csv")kwargs = dict(hist_kws={'alpha':.6}, kde_kws={'linewidth':2})plt.figure(figsize=(10,7), dpi= 80)ax = sns.distplot(iris["Sepal.Length"], label="Sepal Length histogram and density", **kwargs)ax.set_xlim([4,8])

    d081704266d6127a22634c174c64bc7c.png

    注意,形状的变化并非是因为错误,而是因为二者默认的 Kernal Density Estimation(KDE)方法不同,但这对我们来讲,没什么影响,因为这幅图看上去的密度曲线也是近似正态分布的。另外,作图的颜色等的差别并非 R 弱一些,因为我最近有点喜欢 base plot 的语法,所以没有用 ggplot2, 喜欢 tidyverse 语法的可以参考一下 "geom_density"。

    Q-Q plot

    相比密度直方图,Q-Q 图可能是更常见更容易理解的一种方式,Q 表示分位点,例如标准的正太分布曲线,0.5 的分位点是零,0.95 的分位点是 1.64。

    它的实现就是使用测量数据和理论分布的数据进行作图,如果测量数据是正态分布,那么很明显,它和理论正态分布所成的散点图应该在一条直线上。

    在 R 里,base plot 可以直接使用 qqnorm 和 qqline 来实现,但 car 包里 qqPlot 的实际上更贴心

    library(car)layout(matrix(c(1, 2), 1, 2))qqnorm(iris$Sepal.Length, pch = 21, col = 'blue', main = 'qqplot in base plot')qqline(iris$Sepal.Length, col = "red", lwd = 3)qqPlot(iris$Sepal.Length, main="qqplot in car package", col="blue", col.lines="red")

    87d59b0237c585c4538ee54656aeb8bf.png

    car 会贴心的画出 95% 置信区间,以及 outlier(原始数据)。这个与上面提到的一样,不可能完全在一条直线上,大致是在一起就可以了。

    python 里的实现也很简单:

    import pandas as pdimport statsmodels.api as smiris = pd.read_csv("./data/iris.csv")sm.qqplot(iris["Sepal.Length"], line ='q')

    5d2517a6231f55c56b575aa909619da4.png

    其实单纯统计的细节来讲,Python 远没 R 顺手。毕竟是统计学家编的软件,不能把老本行丢了。

    假设检验

    上面的肉眼判断毕竟太过主观,要客观的评价,还是需要通过假设检验,用的很多,非常有名的方法为:Shapiro-Wilk 检验,它的零假设是样本来自正态分布的母本,这样的话,我们需要 p 值大于 0.05。

    还是上面的数据:

    shapiro.test(iris$Sepal.Length)
    ##
    ## Shapiro-Wilk normality test
    ##
    ## data: iris$Sepal.Length
    ## W = 0.97609, p-value = 0.01018

    非常简单,一行代码搞定,结果让我们非常失望,数据不是正态分布。事实证明,上面的肉眼判断,我的看法是错误的。

    python 的 scipy 中也有同样的方法:

    from scipy import statsimport pandas as pdiris = pd.read_csv("./data/iris.csv")stats.shapiro(iris["Sepal.Length"])
    ## (0.9760899543762207, 0.010180278681218624)

    尽管值略有差别,充分体现了主观的判断的不靠谱。那我们只能试试怎么将数据转换为正态分布的方法了。

    常用的正态转换方法

    当然,如果样本量超过了30,或者50更好,正态分布的检验并非十分重要。当然转换为正态分布的方法比较多,下面的一幅图即可概括:

    ad8e0d494169d65a9ce2f064f4f82ecc.png

    来自 Applied Multivariate Statistics for the Social Sciences

    方法这么多,其实也没太多特别的,就是将数据转换一下,例如我们使用最简单的对数转换看一下:

    shapiro.test(log10(iris$Sepal.Length))
    ##
    ## Shapiro-Wilk normality test
    ##
    ## data: log10(iris$Sepal.Length)
    ## W = 0.98253, p-value = 0.05388

    如果是写文章,我想这也就是死里逃生的感觉了,但毕竟比不转换强多了,上面图中列举的方法都比较简单,就不一一尝试了。

    参考资料

    Amrhein, Valentin, Sander Greenland, and Blake McShane. 2019. “Scientists Rise up Against Statistical Significance.” Naturehttps://doi.org/10.1038/d41586-019-00857-9.

    DeepAI. 2017. “What Is a Kernel Density Estimation?” https://deepai.org/machine-learning-glossary-and-terms/kernel-density-estimation.

    Ed. 2017. “Transforming Data for Normality.” https://www.statisticssolutions.com/transforming-data-for-normality/.

    Ford, Clay. 2017. “Understanding Q-Q Plots.” https://data.library.virginia.edu/understanding-q-q-plots/.

    “Kernel Density Estimation(KDE).” 2017. https://blog.csdn.net/unixtch/article/details/78556499.

    R Core Team. 2020. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.

    Wasserstein, Ronald L., Allen L. Schirm, and Nicole A. Lazar. 2019. “Moving to a World Beyond ‘P < 0.05’.” The American Statisticianhttps://doi.org/10.1080/00031305.2019.1583913.

    展开全文
  • 数据服从正态分布是很多分析方法的前提条件,在进行方差分析、回归分析等分析前...01. 正态图正态分布图可直观地展示数据分布情况,并结合正态曲线判断数据是否符合正态分布。操作步骤:SPSSAU→可视化→正态图分析...

    fd97a9ad2ded0cb8a4abb67c2013c32a.png

    数据服从正态分布是很多分析方法的前提条件,在进行方差分析、回归分析等分析前,首先要对数据的正态性进行分析,确保方法选择正确。如果不满足正态性特质,则需要考虑使用其他方法或对数据进行处理。

    检测数据正态性的方法有很多种,以下为几种常见方法介绍:图示法、统计检验法、描述法。

    01. 正态图

    正态分布图可直观地展示数据分布情况,并结合正态曲线判断数据是否符合正态分布。

    aa84e682394fbc2e57163fd4ec6172ad.png
    操作步骤:SPSSAU→可视化→正态图

    分析时,选择【可视化】-【正态图】,拖拽分析项到右侧分析框内,点击“开始正态图分析”即可得到结果。

    97f452495e5ff0c96f20d490381f2bf8.gif
    • 若数据基本符合正态分布,则会呈现出中间高、两侧低、左右基本对称的“钟形”分布曲线。
    • 若数据为定类数据或数据量较少,一般很难呈现出标准的正态分布,此时建议只要图形呈现出“钟形”也可接受数据服从正态分布。
    • 若数据分布完全偏离正态,则说明数据不符合正态分布。

    02. P-P图/Q-Q图

    P-P图和Q-Q图,都是通过散点与正态分布的预测直线法重合程度以说明数据是否服从正态分布。

    d33d68e96a055e53f35009eddada190e.png

    P-P图是将实际数据累积比例作为X轴,将对应正态分布累积比例作为Y轴,作散点图,反映实际累积概率与理论累积概率的符合程度。

    5b485b6c0a22aefa8ef8da0ff64f07be.png

    Q-Q图将实际数据作为X轴,将对应正态分布分位数作为Y轴,作散点图,反映变量的实际分布与理论分布的符合程度。

    如数据服从正态分布,则散点分布应近似呈现为一条对角直线。反之则说明数据非正态。P-P图和Q-Q图的功能一致,使用时没有区别。

    03.正态性检验

    利用统计图分析正态性,往往是依靠分析者的主观判断进行。因而容易产生结果偏差。因此需要结合其他方法,对数据的正态性指标进行统计描述。

    正态性检验分析定量数据是否具有正态分布特质。操作时,选择【通用方法】-【正态性检验】分析方法,拖拽分析项到右侧分析框内,点击“开始正态性检验”即可得到结果。

    7b988a6ac21a1823037848321a57cc07.png
    分析结果

    如果样本量大于50,则应该使用Kolmogorov-Smirnov检验结果,反之则使用Shapro-Wilk检验的结果。

    上图中,样本量为300,因而选择K-S检验。P值=0.149>0.05,说明数据服从正态分布。

    8519e71d8a9329d24e7474c16acde499.png

    04. 描述法

    描述法即通过描述数据偏度和峰度系数检验数据的正态性。

    9252ce067c028510637c279070356bcd.png

    偏度和峰度可通过描述性分析得到,也可在正态性检验中直接查看。

    ​理论上讲,标准正态分布偏度和峰度均为0,但现实中数据无法满足标准正态分布,因而如果峰度绝对值小于10并且偏度绝对值小于3,则说明数据虽然不是绝对正态,但基本可接受为正态分布。

    其他说明

    (1)检验数据正态性的方法有很多,其中统计检验法对于数据的要求最为严格,而实际数据由于样本不足等原因,即使数据总体正态但统计检验出来也显示非正态,实用性上不如图示法直观,接受程度高,因此一般情况下使用图示法相对较多。

    (2)当正态图和正态性检验结果出现矛盾,如正态图显示数据分布对称而正态性检验结果P<0.05,此时建议不要追求绝对的正态,如数据基本满足正态性即可接受服从正态分布。

    (3)正态性检验要求严格通常无法满足,如果峰度绝对值小于10并且偏度绝对值小于3,则说明数据虽然不是绝对正态,但基本可接受为正态分布。

    (4)若想将非正态性数据转化为正态性数据,可将数据取对数、开根号等处理,以接近正态性

    更多分析方法相关内容可登录SPSSAU官网查看

    SPSSAU:回归分析超实用总结

    SPSSAU:方差分析超实用总结

    SPSSAU:三种T检验的详细区分

    展开全文
  • 原标题:如何判断数据是否符合正态分布?在前面的文章中讲过,很多模型的假设条件都是数据是服从正态分布的。这篇文章主要讲讲如何判断数据是否符合正态分布。主要分为两种方法:描述统计方法和统计检验方法。描述...

    原标题:如何判断数据是否符合正态分布?

    在前面的文章中讲过,很多模型的假设条件都是数据是服从正态分布的。这篇文章主要讲讲如何判断数据是否符合正态分布。主要分为两种方法:描述统计方法和统计检验方法。

    描述统计方法

    描述统计就是用描述的数字或图表来判断数据是否符合正态分布。常用的方法有Q-Q图、P-P图、直方图、茎叶图。

    1. Q-Q图

    此Q-Q非用于聊天的QQ,Q是quantile的缩写,即分位数。 分位数就是将数据从小到大排序,然后切成100份,看不同位置处的值。比如中位数,就是中间位置的值。

    Q-Q图的x轴为分位数,y轴为分位数对应的样本值。x-y是散点图的形式,通过散点图可以拟合出一条直线, 如果这条直线是从左下角到右上角的一条直线,则可以判断数据符合正态分布,否则则不可以。

    拟合出来的这条直线和正态分布之间有什么关系呢?为什么可以根据这条直线来判断数据是否符合正态分布呢。

    我们先来想一下正态分布的特征,正态分布的x轴为样本值,从左到右x是逐渐增大的,y轴是每个样本值对应的出现的概率。概率值先上升后下降,且在中间位置达到最高。

    可以把Q-Q图中的y轴理解成正态分布中的x轴, 如果拟合出来的直线是45度,可以保证中位数两边的数值分布是一样的,即正态分布中基于中位数左右对称。

    在Python中可以使用如下代码来绘制Q-Q图:

    from scipy import stats

    fig = plt.figure

    res = stats.probplot(x, plot=plt)

    plt.show

    与Q-Q图类似的是P-P图,两者的区别是前者的y轴是具体的分位数对应的样本值,而后者是累计概率。

    2. 直方图

    直方图分为两种,一种是频率分布直方图,一种是频数分布直方图。频数就是样本值出现的次数,频率是某个值出现的次数与所有样本值出现总次数的比值。

    在Python中我们可以使用如下代码来绘制频数分布直方图:

    importmatplotlib.pyplot asplt

    plt.hist(x,bins = 10)

    可以使用如下代码来绘制频率分布直方图:

    importseaborn assns

    sns.distplot(x)

    与直方图类似的还有茎叶图,茎叶图是类似于表格形式去表示每个值出现的频次。

    统计检验方法

    讲完了描述统计的方法,我们来看一下统计检验的方法。统计检验的方法主要有SW检验、KS检验、AD检验、W检验。

    SW检验中的S就是偏度,W就是峰度,峰度和偏度与正态的关系我们在前面的文章有讲过,没看过的同学可以去看看:你到底偏哪边的?

    1. KS检验

    KS检验是基于样本累积分布函数来进行判断的。可以用于判断某个样本集是否符合某个已知分布,也可以用于检验两个样本之间的显著性差异。

    如果是判断某个样本是否符合某个已知分布,比如正态分布,则需要先计算出标准正态分布的累计分布函数,然后在计算样本集的累计分布函数。两个函数之间在不同的取值处会有不同的差值。我们只需要找出来差值最大的那个点D。然后基于样本集的样本数和显著性水平找到差值边界值(类似于t检验的边界值)。判断边界值和D的关系, 如果D小于边界值,则可以认为样本的分布符合已知分布,否则不可以。

    PDF( probability density function):概率密度函数

    CDF( cumulative distribution function):累积分布函数,是概率密度函数的积分

    在Python中有现成的包可以直接用于KS检验:

    fromscipy.stats importkstest

    kstest(x,cdf = "norm")

    x表示待检验的样本集,cdf用来指明要判断的已知分布类型,有:‘norm’,’expon’,’logistic’,’gumbel’,’gumbel_l’, gumbel_r’,

    ‘extreme1’值可以选,其中norm表示正态分布检验。

    kstest会返回两个值:D和对应的p_value值。

    2. AD检验

    AD检验是在KS基础上进行改造的,KS检验只考虑了两个分布之间差值最大的那个点,但是这容易受异常值的影响。 AD检验考虑了分布上每个点处的差值。

    在Python中可以用如下代码:

    fromscipy.stats importanderson

    anderson(x, dist= 'norm')

    x为待检验的样本集,dist用来指明已知分布的类型。可选值与ks检验中可选值一致。

    上面代码会返回三个结果: 第一个为统计值,第二个为评判值,第三个为每个评判值对应的显著性水平

    AD检验和anderson有啥关系呢?anderson发明了AD检验。

    3. W检验

    W检验(Shapiro-Wilk的简称)是基于两个分布的相关性来进行判断,会得出一个类似于皮尔逊相关系数的值。 值越大,说明两个分布越相关,越符合某个分布。

    在Python中的实现代码如下:

    fromscipy.stats importshapiro

    shapiro(x)

    上面的代码会返回两个结果:W值和其对应的p_value。

    shapiro是专门用于正态性检验的,所以不需要指明分布类型。且 shapiro 不适合做样本数>5000的正态性检验。

    非正态数据的处理办法

    一般数据不是正态就是偏态,如果偏态不严重可以对数据取平方根来进行转换。如果偏态很严重,则可以对数据进行对数转换。转换方法在偏态文章中也有讲过。

    来源:俊红的数据分析之路

    责任编辑:

    展开全文
  • 1. 正态分布的定义正态分布:The Normal Distribution,假设一随机变量X服从一个期望为 ,方差为 的正态分布,概率密度函数为 则可记为: 。import matplotlib.pyplot as plt import numpy as np def gaussian_...

    1. 正态分布的定义

    正态分布:The Normal Distribution,假设一随机变量X服从一个期望为

    ,方差为
    的正态分布,
    概率密度函数

    则可记为:

    import matplotlib.pyplot as plt
    import numpy as np
    
    def gaussian_distribution(x, mu, sigma):
        y = 1/(np.sqrt(2*np.pi)*sigma) * np.exp(-(x-mu)**2 / (2*sigma**2))
        return y
    
    x = np.arange(-4, 4, 0.01)
    
    y1 = gaussian_distribution(x, 0, np.sqrt(0.2))
    y2 = gaussian_distribution(x, 0, np.sqrt(1.0))
    y3 = gaussian_distribution(x, 0, np.sqrt(5.0))
    y4 = gaussian_distribution(x, -2, np.sqrt(1.0))
    
    plt.plot(x, y1, color="red", label='$mu=0,sigma^2=0.2$')
    plt.plot(x, y2, color="blue", label='$mu=0,sigma^2=1.0$')
    plt.plot(x, y3, color="green", label='$mu=0,sigma^2=5.0$')
    plt.plot(x, y4, '--', color="blue", label='$mu=-2,sigma^2=1.0$')
    
    plt.legend()
    plt.savefig("gaussian_distribution.png", dpi=500)

    13323f309462e508b3add858f52a196d.png

    (1)正态分布为什么常见?真正原因是中心极限定理(Central Limit Theorem)。根据中心极限定理,如果一个事物受到多种因素的影响,不管每个因素本身是什么分布,它们加总后,结果的平均值就是正态分布。

    (2)正态分布只适合各种因素累加的情况,如果这些因素不是彼此独立的,会相互影响,那么就不是正态分布了。ps:如果各种因素对结果的影响不是相加的,而是相乘,那么最终结果不是正态分布,而是对数正态分布。

    2. 试验:高尔顿钉板

    弗朗西斯·高尔顿爵士(1822-1911),查尔斯·达尔文的表弟,英格兰维多利亚时代的生物统计学家。他发明了一个叫高尔顿钉板的装置,展示了正态分布的产生过程:高尔顿钉板是一种装置,它是一个木盒子,里面均匀的分布若干个钉子。从入口处把小球导倒入钉板,弹珠往下滚的时候,撞到钉子就会随机选择往左走还是往右走,一颗弹珠一路滚下来会多次选择方向,最终的分布会接近正态分布。

    高尔顿钉板有两处细节:

    • 顶上只有一处开口。这是要求弹珠的起始状态一致,即要求同分布。
    • 开口位于顶部中央。这倒无所谓,开在别的位置,分布形态不变,只是平移。

    b689b6c528f02f952a0114090dd680b7.png

    用代码实现高尔顿钉板,其中:

    • n个小球
    • 盒子宽度为box_width
    • 盒子内部有钉子为row_count行和col_count

    问题的本质是:给定一个初始状态,执行row_count次随机增减,最终得到的数组满足正态分布。

    高尔顿钉板可以做出一些改动,变动之后仍然满足正态分布。比如移动开口的水平位置;或者改变小球碰到钉子之后的随机性,即便是不均匀的分布依旧最终也会形成正态分布。

    import matplotlib.pyplot as plt
    import numpy as np
    
    n = 500000
    box_width = 1 
    row_count = 1000
    col_count = 1000
    
    a = np.ones(n) * box_width / 2
    for i in range(row_count):
        delta = (np.random.randint(0,2,n)-0.5) * box_width / col_count
        a = a + delta
        a = np.clip(a, 0, box_width)
    
    plt.hist(a, col_count // 2, color='blue')
    plt.savefig("galton_nailboard .png", dpi=500)

    d4e737f97d91b4d66fd3e4af92979a4d.png

    自然界为何如此多的变量都服从正态分布?因为每一个变量都是由一系列随机变量组成的。例如人的身高是由饮食、气候、基因等很多独立变量组成,这些独立变量就像钉子一样一层一层独立的摆放,最初人的身高是固定的,就像从中间下滑的小球,经过多次随机因素之后,人的身高就变成了正态分布。

    每个人都相信它(正态分布):实验工作者认为它是一个数学定理,数学研究者认为它是一个经验公式。-- 加布里埃尔·李普曼

    正态分布是么有道理的,它是一种经验分布。

    3. 正态性检验:

    3.1 偏度与峰度方法

    偏度Skewness)描述数据分布不对称的方向及其程度。

    204c3cc4e08f4a137f7139b05ef6267f.png
    • 当偏度≈0时,可认为分布是对称的,服从正态分布;
    • 当偏度>0时,分布为右偏,即拖尾在右边,峰尖在左边,也称为正偏态;
    • 当偏度<0时,分布为左偏,即拖尾在左边,峰尖在右边,也称为负偏态;

    注意:数据分布的左偏或右偏,指的是数值拖尾的方向,而不是峰的位置,容易引起误解。

    峰度Kurtosis):描述数据分布形态的陡缓程度。

    563e222d055c7c221d995da20aa46f28.png
    • 当峰度≈0时,可认为分布的峰态合适,服从正态分布(不胖不瘦);
    • 当峰度>0时,分布的峰态陡峭(高尖);
    • 当峰度<0时,分布的峰态平缓(矮胖);

    利用偏度和峰度进行正态性检验时,可以同时计算其相应的Z评分(Z-score),即:偏度Z-score=偏度值/标准误,峰度Z-score=峰度值/标准误。在α=0.05的检验水平下,若Z-score在±1.96之间,则可认为资料服从正态分布。

    了解偏度和峰度这两个统计量的含义很重要,在对数据进行正态转换时,需要将其作为参考,选择合适的转换方法。

    3.2 正态性检验:P-P图和Q-Q图方法

    P-P图反映了变量的实际累积概率与理论累积概率的符合程度,Q-Q图反映了变量的实际分布与理论分布的符合程度,两者意义相似,都可以用来考察数据资料是否服从某种分布类型。若数据服从正态分布,则数据点应与理论直线(即对角线)基本重合。

    3.3 正态性检验:非参数检验方法

    正态性检验属于非参数检验,原假设为“样本来自的总体与正态分布无显著性差异,即符合正态分布”,也就是说P>0.05才能说明资料符合正态分布。

    通常正态分布的检验方法有两种,一种是Shapiro-Wilk检验,适用于小样本资料(SPSS规定样本量≤5000),另一种是Kolmogorov–Smirnov检验,适用于大样本资料(SPSS规定样本量>5000)。

    4. 大数定理与中心极限定理

    4.1 定义

    大数定理(Law of Large Numbers):采样足够多的时候,

    个采样的平均数
    会接近单个分布的
    均值

    中央极限定理(Central Limit Theorem):采样足够多的时候,

    个采样的平均数
    的分布会接近一个
    正态分布。且该正态分布的均值等于单个分布的均值
    ,方差等于单个分布的方差除以
    ,即

    4.2 代码实现

    我们以抛骰子为例,抛出多次后,抛出的骰子趋于点数3.5(大数定理)。假设每次抛出20次骰子,求这20次骰子的和,那么抛出多次后,此和的分布趋近于正态分布(中心极限定理)。

    # 随机的抛六面的骰子,出现的点数最后趋于均值3.5
    
    import numpy as np
    import matplotlib.pyplot as plt
    import random 
    
    """产生n个1-6的随机数"""
    def generate_random_int(n):
        return [random.randint(1,6) for i in range(n)]
    
    number = 50000
    x = [i for i in range(number+1) if i != 0]
    # 产生number个1-9的随机数
    total_random_int = generate_random_int(number)
    # 求n个[1,6]的随机数的均值,n=1,2,3,4,5...
    y = [np.mean(total_random_int[0:i+1]) for i in range(number)]
    
    plt.plot(x,y,'b-')
    plt.xlim(0,number)
    plt.grid(True)
    plt.savefig("lln.png", dpi=300)

    e18639dfd1635f4998a111c3cd7b0420.png
    # 随机的抛六面的骰子,计算三次点数的和的分布:
    # 事件 A = x1+x2+x3 ,其中x1,x2,x3是分别抛骰子的点数
    # 根据中心极限定理,由于x1,x2,x3属于独立同分布,所以说最终的事件A属于正态分布
    
    import random
    import numpy as np 
    import matplotlib as mpl 
    import matplotlib.pyplot as plt 
    
    """随机产生一个[1,6]的数字,表示一个六面的骰子的结果""" 
    """计算返回n次抛骰子的和的结果"""  
    def generate_sum(n):
       return np.sum([random.randint(1,6) for i in range(n)])
    
    # 进行多少次A事件
    n1 = 1000000
    # 表示每次A事件抛几次骰子
    n2 = 20
    
    # 进行n1次事件A的操作,每次事件A都进行n2次
    keys = [generate_sum(n2) for i in range(n1)]
    
    # 统计每个和数字出现的次数,eg:和为3的出现多少次,和为10的出现多少次
    result = {}
    for key in keys:
        count = 1
        if key in result:
            count += result[key]
        result[key] = count
    
    # 获取x和y
    x = sorted(np.unique(list(result.keys())))
    y = []
    for key in x:
        #将出现的次数进行一个百分比的计算
        y.append(result[key]/n1)
    
    plt.plot(x,y,'b')
    plt.xlim(x[0] -1 ,x[-1] +1)
    plt.grid(True)
    plt.savefig("clt.png", dpi=300)

    45b33c582b7b69b9404a4529a126ff9b.png

    4.3 公式推导

    傅里叶变换及其应用(斯坦福大学)讲义中3.6,3.7节有关于卷积和中心极限定理的证明。

    其3.6节(Convolution in Action III: The Central Limit Theorem

    67fe48593d504ba8c92c3ebe9ae077c8.png
    Convolution and probability density functions: The probability density function of the sum of two independent random variables is the convolution of the probability density functions of each. 两个独立随机变量和的概率密度函数是这两者概率密度函数的卷积。

    因此,无独立变量的概率密度函数卷积在一起就是它们和的概率密度函数,也就是一个正态分布(高斯分布)。

    其3.7节(The Central Limit Theorem: The Bell Curve Tolls for Thee

    中心极限定理的证明:

    e07202252713194ae0955817bae7c8f4.png

    bc56bdb5a0ee7dc9ba5e823cfee8fb0c.png
    展开全文
  • lillietest  Lilliefors检验 常用语法  [h,p]=lillietest(X) ... 返回值h为假设,只有0和1两种情况,h=0假设符合正态分布,h=1假设不符合正态分布  返回值p为方差概率,也可以说事情的发生概率,p&...
  • 在样本量比较大时,可根据直方图及对应的正态概率密度曲线的形状大致判断资料是否服从正态分布。 操作:图形-旧对话框-直方图 结果与分析 上图中横坐标为猪崽体重,纵坐标为猪崽频数。可以看出绘制的直方图与...
  • QQ图判断一个分布是否正态分布

    万次阅读 多人点赞 2018-01-27 10:01:56
    一、正态QQ图的原理 QQ图通过把测试样本数据的分位数与已知分布相比较,从而来检验数据的分布情况。[1] 分位数:亦称分位点,是指将一个随机...QQ图是一种散点图,对应于正态分布的QQ图,就是由标准正态分布的分位
  • 正态分布: 若随机变量x服从有个数学期望为μ,方差为σ2 的正态分布,记为N(μ,σ) 其中期望值决定密度函数的位置,标准差决定分布的幅度,当υ=0,σ=0 时的正态分布是标准正态分布 判断方法有画图/k-s检验 画图: ...
  • 正态分布的应用——基于描述性统计与分布的推论内容导入:大家好,这里是每天分析一点点。本期给大家介绍的是数据分析基础系列,包括分布的基本类型,集中趋势与分布的关系,离散趋势与分布的关系,再结合国民收入...
  • 正态性分布检验 ... %频数直方图(肉眼看是否左右对称,中间多,两边少) ...%正态性检验(离散点是否分布在一条直线上,表明样本来自正态分布,否则是非正态分布) 方法2衍生:{{{以下方法
  • 用到了就记一下= =太多了时间长了慢慢忘了。 1、Q-Q图 我们先看看标准的正态分布图: stats.probplot(df1['3#3temp'], dist="norm", plot=plt) plt.show() 结果:
  • 正态分布: 若随机变量x服从有个数学期望为μ,方差为σ2的正态分布,记为N(μ,σ) 其中期望值决定密度函数的位置,标准差决定分布的幅度,当υ=0,σ=0 时的正态分布是标准正态分布 判断方法有画图/k-s检验 画图...
  • 问题详情如何用c#判断一组数是否符合正态分布,并绘出正态分布曲线图.100分,出结果马上给.如何用c#判断一组数是否符合正态分布,并绘出正态分布曲线图.100分,出结果马上给.作者: fbyzlp发布时间: 2009-09-22高手们都...
  • 判断数据是否符合正态分布,比如使用3-sigma判断数据异常前,首先需要确定的是数据是否符合正态分布。今天一起梳理下检测正态分布的方法。Shapiro-Wilk testShapiro-Wilk test是一种在频率上统计检验中检验正态性的...
  • 数据是否服从正态分布

    千次阅读 2018-11-26 11:47:29
    1 SPSS详细操作:正态转换的多种方法 2 SPSS教程:判断数据正态分布的超多方法!
  • 很多时候,我们都需要基于单一样本中反映出的信息,利用统计推断的方法、去估计样本总体的参数信息,我们...比如,T检验、方差检验的前提假设都是数据呈正态分布,如果你的数据不满足正态分布,则需要转化成正...
  • 那么如何区分数据是否符合正态分布?如何使用SPSS软件判断参数的正态性?感兴趣的小伙伴跟小室一起学习下去吧~本期目录:一、正态性检验的目的二、案例分析三、SPSS操作四、正态性检验的实际应用一正态性检验的目的...
  • Python检验样本是否服从正态分布

    千次阅读 2020-09-06 16:41:10
    我们可以通过将样本可视化,看一下样本的概率密度是否正态分布来初步判断样本是否服从正态分布。 代码如下: import numpy as np import pandas as pd import matplotlib.pyplot as plt # 使用pandas和numpy...
  • 给定序列X=(x1,x2,x3,...,xn),判断是否该数据序列X符合正态分布。 二、方法 常见已知分布的检验方法:kstest、jbtest、lillietest、chi2gof等,这里使用使用Lilliefors检验进行描述。 语法: 1:h =...
  • 如何判断该组数据是否符合正态分布?图 1 需求示例【实现步骤】:Step1:为Excel加载“分析工具库”图 2 打开Excel选项设置对话框图 3 选择打开分析工具库设置对话框图 4 加载分析工具库图 5 加载后的效果Step2:...
  • 图形法检验正态分布的特点是直观,通过观察点、线、条等图形元素的形态和正态分布的差距来简要快速地判断是否(近似)服从正态分布。图形法总结:直观、简略、快速、大概、粗糙、实用。Shapiro-Wilk检验Shapiro-Wilk...
  • 分布检验问题)假设有n个随机数,检验这些随机数是否由高斯分布产生,方法如下: 1. 计算n个随机变量的平均值u; 2. 对n个随机变量排序,并计算相邻两个数的差dx; 3. 对第2个数到第n个数,计算z[i]=(x[i]-u)/...
  • 图形法检验正态分布的特点是直观,通过观察点、线、条等图形元素的形态和正态分布的差距来简要快速地判断是否(近似)服从正态分布。图形法总结:直观、简略、快速、大概、粗糙、实用。Shapiro-Wilk检验等显著性假设...
  • 很多时候,我们都需要基于单一样本中反映出的信息,利用统计推断的方法、去估计样本总体的参数信息,我们...比如,T检验、方差检验的前提假设都是数据呈正态分布,如果你的数据不满足正态分布,则需要转化成正...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 230
精华内容 92
关键字:

判断是否正态分布