在对数据建模前,很多时候我们需要对数据做正态性检验,进而通过检验结果确定下一步的分析方案。下面介绍 Python 中常用的几种正态性检验方法:
scipy.stats.kstest

kstest 是一个很强大的检验模块,除了正态性检验,还能检验 scipy.stats 中的其他数据分布类型

kstest(rvs, cdf, args=(), N=20, alternative=’two_sided’, mode=’approx’, **kwds)

对于正态性检验,我们只需要手动设置三个参数即可:

rvs:待检验的数据
cdf:检验方法,这里我们设置为‘norm’,即正态性检验
alternative:默认为双尾检验,可以设置为‘less’或‘greater’作单尾检验
>>> import numpy as np
>>> from scipy.stats import kstest
>>> x = np.linspace(-15, 15, 9)
>>> kstest(x, 'norm')
(0.44435602715924361, 0.038850142705171065)

输出结果中第一个为统计数,第二个为P值

具体见官方文档 scipy.stats.kstest
scipy.stats.shapiro

与 kstest 不同,shapiro 是专门用来做正态性检验的模块
注意:shapiro 不适合做样本数>5000的正态性检验,检验结果的P值可能不准确

scipy.stats.shapiro(x, a=None, reta=False)

一般我们只用 x 参数就行,x 即待检验的数据

>>> from scipy import stats
>>> np.random.seed(12345678)
>>> x = stats.norm.rvs(loc=5, scale=3, size=100)
>>> stats.shapiro(x)
(0.9772805571556091, 0.08144091814756393)

输出结果中第一个为统计数,第二个为P值

具体见官方文档 scipy.stats.shapiro
scipy.stats.normaltest

normaltest 也是专门做正态性检验的模块

scipy.stats.normaltest(a, axis=0, nan_policy=’propagate’)

这里的三个参数都有必要看一下:

a:待检验的数据
axis:默认为0,表示在0轴上检验,即对数据的每一行做正态性检验,我们可以设置为 axis=None 来对整个数据做检验
nan_policy:当输入的数据中有空值时的处理办法。默认为 ‘propagate’,返回空值;设置为 ‘raise’ 时,抛出错误;设置为 ‘omit’ 时,在计算中忽略空值。
>>> import numpy as np
>>> from scipy.stats import normaltest
>>> x = np.random.randn(10, 20)
>>> normaltest(x, axis=None)
>>> NormaltestResult(statistic=0.3582062593239369, pvalue=0.83601967652440512)

输出结果中第一个为统计数,第二个为P值

具体见官方文档 scipy.stats.normaltest
scipy.stats.anderson

anderson 是修改版的 kstest,说是增强版也不为过。也可以做多种分布的检验,默认的检验时正态性检验。

scipy.stats.anderson(x, dist=’norm’)

参数这里就不多说了,但对输出结果说明一下:
anderson 有三个输出值,第一个为统计数,第二个为评判值,第三个为显著性水平, 评判值与显著性水平对应
对于正态性检验,显著性水平为:15%, 10%, 5%, 2.5%, 1%

import numpy as np
from scipy.stats import anderson
x = np.linspace(-15, 15, 9)
anderson(x)
AndersonResult(statistic=0.13676646631470213, critical_values=array([ 0.507, 0.578, 0.693, 0.808, 0.961]), significance_level=array([ 15. , 10. , 5. , 2.5, 1. ]))

转自:https://blog.csdn.net/QimaoRyan/article/details/72861387 

Python怎么检验数据的正态分布的更多相关文章

  1. KS-检验(Kolmogorov-Smirnov test) -- 检验数据是否符合某种分布

    Kolmogorov-Smirnov是比较一个频率分布f(x)与理论分布g(x)或者两个观测值分布的检验方法.其原假设H0:两个数据分布一致或者数据符合理论分布.D=max| f(x)- g(x)|, ...

  2. python数据挖掘之数据探索第一篇

    目录 数据质量分析   当我们得到数据后,接下来就是要考虑样本数据集的数据和质量是否满足建模的要求?是否出现不想要的数据?能不能直接看出一些规律或趋势?每个因素之间的关系是什么?   通过检验数据集的 ...

  3. Python: sklearn库——数据预处理

    Python: sklearn库 —— 数据预处理 数据集转换之预处理数据:      将输入的数据转化成机器学习算法可以使用的数据.包含特征提取和标准化.      原因:数据集的标准化(服从均值为 ...

  4. python 发送json数据操作实例分析 - python

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 本文实例讲述了python 发送json数据操作.分享给大家供大家参考,具体如下: # !/usr/bin/env py ...

  5. 使用Python解析JSON数据的基本方法

    这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下:     ----------------------------------- ...

  6. python matplotlib plot 数据中的中文无法正常显示的解决办法

    转发自:http://blog.csdn.net/laoyaotask/article/details/22117745?utm_source=tuicool python matplotlib pl ...

  7. Python/Numpy大数据编程经验

    Python/Numpy大数据编程经验 1.边处理边保存数据,不要处理完了一次性保存.不然程序跑了几小时甚至几天后挂了,就啥也没有了.即使部分结果不能实用,也可以分析程序流程的问题或者数据的特点.   ...

  8. Windows下Python读取GRIB数据

    之前写了一篇<基于Python的GRIB数据可视化>的文章,好多博友在评论里问我Windows系统下如何读取GRIB数据,在这里我做一下说明. 一.在Windows下Python为什么无法 ...

  9. 为什么说Python 是大数据全栈式开发语言

    欢迎大家访问我的个人网站<刘江的博客和教程>:www.liujiangblog.com 主要分享Python 及Django教程以及相关的博客 交流QQ群:453131687 原文链接 h ...

随机推荐

  1. Ubuntu14.04中stopping log initial device creation错误或自动挂载错误失败(导致系统无法自动启动)

    出现问题的原因: 图一 出现问题的界面: 图二 按esc,无作用. 图三 按esc,按i,依然无作用. 图四 解决方法: (1)按esc,i无用,  在图2按s成功到登陆界面. (2)桌面修改为dis ...

  2. 用JavaScript来实现单例模式

    首先,了解一下什么是单例模式,这里我直接把菜鸟教程中的定义给copy过来: 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供 ...

  3. ubuntu下删除带锁文件夹

    1.终端下,cd 到要删带锁文件夹所在目录 2.输入 + 带锁文件夹名称 输入用户密码,解锁成功 3.现在该文件可以进行移动或者删除

  4. DC-1靶机

    DC-1 靶机获取:http://www.five86.com/ 发现IP:arp-scan --interface=eth0 -localnet arp-scan -l 靶机IP:192.168.0 ...

  5. 2019-10-20 李宗盛 spss作业

    SPSS: 1.有关SPSS数据字典的说法,正确的是 A.SPSS数据集的数据字典可以复制到其他数据集中 B.SPSS数据集的数据字典是不能复制的 C.SPSS的数据字典可以通过“复制”和“粘贴”在不 ...

  6. logging配置

    import logging def handle(): # 1.定义logger对象:负责产生日志,然后交给Filter过滤,然后交给不同的Handler输出 logger = logging.ge ...

  7. 【Qt开发】关于QWSServer

    QWS Server QT Embeded应用没有来严格的区分server和client进程,如果一个QT进程的启动参数中有-qws,那么这个进程就具有server管理功能,被称为QWS server ...

  8. S02_CH06_XADC实验

    S02_CH06_XADC实验 6.1实验概述 这次借助zynq的内嵌的XADC来采集zynq内部的一些参数: •VCCINT:内部PL核心电压 •VCCAUX:辅助PL电压 •VREFP:XADC正 ...

  9. java学习要想精炼掌握应运的必备知识(博文来源于网络)

    一: 编程基础 不管是C还是C++,不管是Java还是PHP,想成为一名合格的程序员,基本的数据结构和算法基础还是要有的.下面几篇文章从思想到实现,为你梳理出常用的数据结构和经典算法. 1-1 常用数 ...

  10. 牛客 72C 小H和游戏 (动态点分治)

    大意: 给定树, 每个点初始权值0, 每次询问给出$x$, $x$权值+1, 求距离$x$不超过2的权值和. 这题数据范围过大, 动态点分治卡不过去, 考虑其他做法 考虑每次只加范围$1$, c[0] ...