R语言做正态分布检验

2023-05-16

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

    首先准备两个样本:

set.seed(0)
a <- runif(100, min = -3, max = 3)
 b <- rnorm(100, mean = 0, sd = 9)

    

    正态分布检验的方法有:

    1. ks.test()

    ks.test函数是R语言自带的函数, 对单样本或双样本做Kolmogorov-Smirnov检验, 是用来检验数据的累计函数是否来自某个确切的分布, 故如果假设的正态分布的均值和方差, 可用ks.test函数进行正态分布检验, ks.test函数的声明如下:

ks.test(x, y, ...,
        alternative = c("two.sided", "less", "greater"),
        exact = NULL)

   x: 向量, 是要验证的数据;

    y: 如果是一个向量, 则验证其和x的累计分布是否一致; 也可以是一个字符串, 比如"pnorm", 指向具有连续型累积分布函数的分布;

    ...: 如果y是一个字符串, 则在这里设置y分布的参数;

    alternative: 备择假设, 默认检验两分布的累计密度分布相同;

    exact: 是否需要计算精确的p值, 默认一个样本, 样本数少于100, 且没有相同值, 或者双样本, 样本数的乘积少于10000时, 会精确计算p值.    


    比如要检验a,b是否来自标准正态分布以及a,b是否来自同一个分布:

ks.test(a,"pnorm", mean = 0, sd = 9)  # 1.692e-12
ks.test(b,"pnorm", mean = 0, sd = 9)  # 0.2196
ks.test(a, b)  # 1.001e-07


    2. shapiro.test()

    shapiro.test函数也是R语言自带的一个函数, 用来做Shapiro-Wilk正态性检验, 函数声明如下:

shapiro.test(x)

    x: 需要做正态性检验的数据, 非缺失值个数应在3到5000个.

    

    比如要检验a,b是否来自正态分布:

shapiro.test(a)  # 0.002126
shapiro.test(b)  # 0.1671


    3. nortest包

    只有5个函数的包, 而这5个函数都是用来做正态性检验的, 5个函数的声明如下:   

ad.test(x)
cvm.test(x)
lillie.test(x)
pearson.test(x, n.classes = ceiling(2 * (n^(2/5))), adjust = TRUE)
sf.test(x)

    x: 要验证正态性的数据;

    n.classes: 分组的数目, 默认以Moore (1986)为准;

    adjust: p值的计算是否需要调整, 默认为TRUE, 则计算的时候认为统计量来自自由度为n.classes - 3的卡方分布, 否则来自自由度为n.classes - 1的卡方分布.


    ad.test是Anderson-Darling正态性检验,;

    cvm.test是Cramer-von Mises正态性检验;

    lillie.test是Lilliefors (Kolmogorov-Smirnov)正态性检验;

    pearson.test是pearson卡方正态性检验;

    sf.test是Shapiro-Francia正态性检验, 用这些检验验证a,b的正态性.

ad.test(a)  # 0.002495
cvm.test(a)  # 0.004729
lillie.test(a)  # 0.03081
pearson.test(a)  # 0.1667
sf.test(a)  # 0.008442

ad.test(b)  # 0.09009
cvm.test(b)  # 0.1537
lillie.test(b)  # 0.0235
pearson.test(b)  # 0.003961
sf.test(b)  # 0.1458


   4. fBasics包

    fBasics包是一个处理金融数据的基础包, 包含了6个正态性检验的函数, 并且包含了nortest包的5个正态性检验函数, 声明如下: 

ksnormTest(x, title = NULL, description = NULL)

jarqueberaTest(x, title = NULL, description = NULL)
dagoTest(x, title = NULL, description = NULL)

jbTest(x, title = NULL, description = NULL)
shapiroTest(x, title = NULL, description = NULL)
normalTest(x, method = c("sw", "jb"), na.rm = FALSE)

adTest(x, title = NULL, description = NULL)
cvmTest(x, title = NULL, description = NULL)
lillieTest(x, title = NULL, description = NULL)
pchiTest(x, title = NULL, description = NULL)
sfTest(x, title = NULL, description = NULL)

    x: 数值向量或者是S4对象形式的时间序列;

    tittle: 可以指定输出标题;

    description: 可以指定输出详细情况;

    method: normalTest函数的参数, 设定正态性检验的函数;

    na.rm: normalTest函数的参数, 检验前是否删除NA数据, 默认为FALSE.


    ksnormTest进行Kolmogorov-Smirnov正态性检验;

    jarqueberaTest进行Jarque-Bera正态性检验;

    dagoTest进行D'Agostino正态性检验;

    jbTest进行JB LM和ALM检验;

    shapiroTest进行Shapiro-Wilk's正态检验;

    normalTest是为了兼容SPlus/Finmetrics而设置的函数, method可以设置成"ks","jb","da","sw","ad", 从而调用ksnormTest, jarqueberaTest, dagoTest,  shapiroTest, adTest函数得到结果, 默认为shapiroTest的结果;

    adTest是兼容nortest包中的ad.test函数;

    cvmTest是兼容nortest包中的cvm.test函数;

    lillietest是兼容nortest包中的lillie.test函数;

    pchiTest是兼容nortest包中的pearson.test函数;

    sfTest是兼容nortest包中的sf.test函数.


    用这11个函数做正态性检验:

ksnormTest(scale(a))  # 0.345 0.1734 0.4033
jarqueberaTest(a)  # 0.0548 
dagoTest(a)  # 4.732e-07 0.7064 7.292e-08
jbTest(a)  # 0.045 0.053 0.055
shapiroTest(a)  # 0.002126
normalTest(a)  # 0.002126
adTest(a)  # 0.002495
cvmTest(a)  # 0.004729
lillieTest(a)  # 0.03081
pchiTest(a)  # 0.1667 0.2919 
sfTest(a)  # 0.008442

ksnormTest(scale(b))  # 0.3136 0.6009 0.1574  
jarqueberaTest(b)  # 0.3622 
dagoTest(b)  # 0.3686 0.1781 0.6689
jbTest(b)  # 0.274 0.293 0.362
shapiroTest(b)  # 0.1671
normalTest(b)  # 0.1671
adTest(b)  # 0.09009
cvmTest(b)  # 0.1537
lillieTest(b)  # 0.0235
pchiTest(b)  # 0.003961 0.01131 
sfTest(b)  # 0.1458


     Kolmogorov-Smirnov能检验数据是否来自某个特定的分布(连续分布), 而ksnormTest函数只能检验数据是否来自标准正态分布;

     Kolmogorov-Smirnov检验和Lilliefor检验在样本数大于100的时候, 会用近似计算p值, 比较不精准, 但是随着样本数的增加近似结果会变好.

    pearson卡方正态性检验和Kolmogorov-Smirnov检验都采用实际频数和期望频数进行检验, 前者既可用于连续总体, 又可用于离散总体, 而Kolmogorov-Smirnov检验只适用于连续和定量数据.

    Shapiro-Wilk检验只适用于小样本场合, 在一些软件里面, 只在样本数小于2000时选用这个方法, 其他方法的检验功效一般随样本容量的增大而增大.

    Jarque-Bera检验易受异常值的影响, 检验功效就会降低.

    Shapiro-Wilk检验和Lilliefor检验都是进行大小排序后得到的,所以易受异常值的影响.

    pearson卡方正态性检验的检验结果依赖于分组,而其他方法的检验结果与区间划分无关.

    假设检验的目的是拒绝原假设, 当p值不是很大时, 应根据数据背景再作讨论.


    由上面的结果可以看出, 不同的检验可以得到完全不一样的结论, 一般而言, 我们不去做所有的检验, 可根据具体情况衡量用哪种方法分析.    


    PS:

    SPSS 规定: 当样本含量3 ≤ n ≤ 5000时, 结果以Shapiro-Wilk为准, 当样本含量n > 5000结果以Kolmogorov-Smirnov为准.

    而SAS 规定: 当样本含量n ≤ 2000时, 结果以Shapiro-Wilk为准, 当样本含量n >2000时, 结果以Kolmogorov-Smirnov为准.


转载于:https://my.oschina.net/u/1791586/blog/293114

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R语言做正态分布检验 的相关文章

  • git提交到一半关闭时

    一 xff1a 出现问题 最近写东西 xff0c 在提交代码时 xff0c 突然出现一大推文件 忘记加 gitignore文件了 xff0c 导致所有的安装依赖也都上传了 所以 xff0c 点击了关闭按钮 xff0c 当下一次提交时 xff
  • 实录分享 | IBM马达:Kubernetes/Swarm on Mesos

    4月17日 xff0c Mesos爱好者在北京P2联合创业办公社迎来了第四次Mesos User Group约会 xff0c 下面是来自IBM马达的分享实录 作者介绍 xff1a 马达 xff0c IBM 高级软件工程师 xff0c Kub
  • 人工智能技术在呼叫中心的应用

    随着人工智能技术的不断发展 xff0c 研究成果被应用到各行各业 xff0c 今天我们主要分享一下人工智能技术在客户服务方面的应用 智能语音服务方面 xff1a 利用智能语音识别及分析技术 xff0c 在传统IVR基础上 xff0c 实时通
  • delphi开发回忆录——示例源码下载

    今天把最新的源码上传上来 xff0c 给有需要学习的朋友 xff0c 如果有朋友需要调试的话 xff0c 再向我要数据库 下载地址 xff1a http files cnblogs com edrp Demo rar
  • python异常继承树

    BaseException 43 SystemExit 43 KeyboardInterrupt 43
  • apk闪退 ncnn_README.md · benjaminwan/OcrLiteAndroidNcnn - Gitee.com

    ChOcrLiteAndroidOnnxToNcnn Demo APK下载 Gitee下载 https gitee com benjaminwan ocr lite android ncnn releases 介绍 Chineseocr L
  • 直立平衡车的姿态测量卡尔曼滤波算法原理与应用(附代码及调试截图)

    鄙人最近测量调试直立平衡车的姿态角度时 xff0c 用到了卡尔曼滤波算法 本着知其然还需知其所以然的学习精神 xff0c 在网上阅览了很多关于滤波原理及算法应用的文章 xff0c 加上自己的调试经验 xff0c 有了一点小小的心得 xff0
  • 【设计模式】我终于读懂了享元模式。。。

    祝大家开工大吉 x1f9e7 x1f9e7 x1f9e7 xff01 xff01 主页有红包哦 点这里 文章目录 祝大家开工大吉 x1f9e7 x1f9e7 x1f9e7 xff01 xff01 主页有红包哦 点这里 https blink
  • bus总线

    有时候两个组件也需要通信 xff08 非父子关系 xff09 当然Vue2 0提供了Vuex xff0c 但在简单的场景下 xff0c 可以使用一个空的Vue实例作为中央事件总线 eventBus js放在assets import Vue
  • 3层模式下长时间调用的进度条提示方案

    Winform 43 WCF 43 IIS 方式 任务执行时间在几分钟 xff0c 需要在客户端显示进度条 xff0c 与提示 原理 xff1a 客户端发出任务调用请求后 xff0c 服务启用一个独立线程来执行 xff0c 将执行过程与结果
  • [原]win7与linux网络共享挂载nfs配置

    网络文件系统 NFS Network File System 是一种将远程主机上的分区 目录 经网络挂载到本地的一种机制 xff0c 通过对网络文件系统的支持 xff0c 用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区 目录
  • Asp.net实现直接在浏览器预览Word、Excel、PDF、Txt文件(附源码)

    功能说明 输入文件路径 xff0c 在浏览器输出文件预览信息 xff0c 经测试360 极速 xff08 Chrome xff09 IE9 10 Firefox通过 分类文件及代码说明 DemoFiles 存放可测试文件 Default a
  • 不是技术也能看懂云计算,大数据,人工智能

    我今天要讲这三个话题 xff0c 一个是云计算 xff0c 一个大数据 xff0c 一个人工智能 xff0c 我为什么要讲这三个东西呢 xff1f 因为这三个东西现在非常非常的火 xff0c 它们之间好像互相有关系 xff0c 一般谈云计算
  • 那些在调试器里没问题(在开发环境没问题),但是独立运行却出问题的原因汇总...

    为什么80 的码农都做不了架构师 xff1f gt gt gt 1 静态编译的动态库依赖 xff0c 在调试器中会把程序的起始目录放在当前项目目录 xff0c 因此如果依赖库在当前项目目录则不会出问题 2 权限问题 xff0c 比如调试器可
  • Android-Parcelable理解与使用(对象序列化)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt parcel定义介绍 xff1a android提供了一种新的类型 xff1a parcel xff08 英文解释 xff1a 包裹 xff0c 小包 xff09 xff0
  • 参考ElementUI的文档实现方案,实现自己组件库的说明文档

    实现使用markdown编写的个人组件库说明文档 前一篇文章实现了按需加载封装个人的组件库功能 xff0c 有了组件库 xff0c 当然还要有配套说明文档 xff0c 这样使者用起来才更方便 打包完成的dist目录是最终可放到服务器中 xf
  • 【设计模式】我终于读懂了代理模式。。。

    文章目录 x1f466 代理模式的基本介绍 x1f467 代理模式示意图 x1f469 静态代理 x1f468 应用实例 x1f476 思路分析图解 类图 x1f475 静态代理优缺点 x1f474 动态代理 x1f471 JDK 中生成代
  • 今年读过的还不错的计算机类书籍

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 今年读过的还不错的计算机类书籍 一年又快过去了 xff0c 今年恶补了很多计算机基础知识 xff0c 参kao了网上各种程序员必读书目 xff0c 看下来觉得很有收获 1
  • <ps> ps aux 和ps -aux和 ps -ef的选择

    Linux中的ps命令是Process Status的缩写 ps命令用来列出系统中当前运行的那些进程 ps命令列出的是当前那些进程的快照 xff0c 就是执行ps命令的那个时刻的那些进程 xff0c 如果想要动态的显示进程信息 xff0c
  • python学习笔记(六):常用模块

    一 模块 包 什么是模块 xff1f 模块实质上就是一个python文件 它是用来组织代码的 xff0c 意思就是说把python代码写到里面 xff0c 文件名就是模块的名称 xff0c test py test就是模块名称 什么是包 x

随机推荐

  • Linux经常用到的命令

    1 Linux下用vim打开配置文件乱码 xff0c 在终端输入 xff1a LANG 61 即可 2 查看端口是否被占用 xff1a 3 netstat anp grep port netstat ltn 4 lsof i port 5
  • (部分清帐)关于收到部分还款SAP系统两种处理方法的说明和比较-转

    背景 销售货物给A顾客 同时开出发票16000元 数日后 进行收款作业 但收款金额为15000元 小于原发票金额 此时在系统中做收款 同时处理未清项 F 28收款 输入实际收款金额后进入 34 处理未清项 34 界面 可发现在右下角输入金额
  • Java获取单词的首字母的方法_java – 从句子中的每个单词中提取第一个字母

    我已经开发了一个语音到文本程序 用户可以说一个简短的句子 然后将其插入文本框 如何提取每个单词的首字母然后将其插入文本字段 xff1f 例如 如果用户说 xff1a Hello World 我想在文本框中插入HW 解决方法 如果你有一个字符
  • python学习笔记-(九)模块

    基础知识 1 定义 模块 xff1a 用来从逻辑上组织python代码 xff08 变量 xff0c 函数 xff0c 类 xff0c 逻辑 实现一个功能 xff09 xff0c 本质就是 py结尾的python文件 xff08 文件名 x
  • Ubuntu 查看磁盘空间大小命令<转>

    df h Df命令是linux系统以磁盘分区为单位查看文件系统 xff0c 可以加上参数查看磁盘剩余空间信息 xff0c 命令格式 xff1a df hl 显示格式为 xff1a 文件系统 容量 已用 可用 已用 挂载点 Filesyste
  • linux开机自动启动vnc,怎样实现重启linux后自动启动vncserver服务?

    linux开机自动启动vncserver服务 xff0c 需要先保证VNC安装无问题以及各种配置以及防火墙正常 xff0c 下面是vncserver服务安装 配置以及设置自启动的步骤 xff1a 首先需要检查一下服务器是否已经安装了VNC服
  • 【设计模式】我终于读懂了模板方法模式。。。

    x1f34e 豆浆制作问题 编写制作豆浆的程序 xff0c 说明如下 1 制作豆浆的流程 选材 gt 添加配料 gt 浸泡 gt 放到豆浆机打碎 2 通过添加不同的配料 xff0c 可以制作出不同口味的豆浆 3 选材 浸泡和放到豆浆机打碎这
  • python-Django中连接MySQL数据库及设置用户名密码

    为什么80 的码农都做不了架构师 xff1f gt gt gt 项目和应用创建好以后 xff0c 进入当前的目录所在的文件夹即可操作 xff0c 也可以用pycharm中的Tools工具运行manage py xff0c 本人采用的是运行p
  • gitlab linux环境搭建,Linux搭建gitlab

    由于上一篇搭建的git服务器 xff0c 进行权限控制时很不方便 xff0c 决定重新搭建gitlab作为管理项目工具 xff0c 有web页面操作起来也很方便 本文只记录安装过程以备后用 一 服务端 配置服务yum源 vim etc yu
  • 林帆:Docker运行GUI软件的方法

    欢迎关注大数据和人工智能技术文章发布的微信公众号 xff1a 清研学堂 xff0c 在这里你可以学到夜白 xff08 作者笔名 xff09 精心整理的笔记 xff0c 让我们每天进步一点点 xff0c 让优秀成为一种习惯 xff01 继上周
  • python内部函数如何修改外部函数变量

    2019独角兽企业重金招聘Python工程师标准 gt gt gt python3 nonlocal关键字 def func result 61 10 def down nonlocal result result 61 result 1
  • 解决bug的能力

    解决问题的高手都会努力保持明白的基础上加上一点不明白的现场模型 xff0c 所以他很喜欢把一些无聊的干扰因素直接删除掉 英语报错信息只能一边看一边读 xff0c 永远告诉自己 xff0c 我还没有读懂 转载于 https blog 51ct
  • Cannot open channel to 3 at election address :3888 java.net.ConnectException: Connection refused (Co...

    关于Linux中搭建分布式时可能遇到的问题 这个问题来自于今天安装zookeeper时踩的一个大坑 xff0c 害的我花了一天时间 在搭建zookeeper的分布式时 xff0c 往往要进行这样的配置 xff1a server 1 61 h
  • Xgboost 模型保存和载入()

    https blog csdn net u012884015 article details 78653178 xgb model get booster save model 39 xgb model 39 tar 61 xgb Boos
  • 新版福昕阅读器(Foxit Reader)启动速度慢解决办法

    新版福昕阅读器 xff08 FoxitReader xff09 启动速度慢解决办法之前喜欢使用福昕阅读器的原因就是看中了其小巧 xff0c 可是最近版本的阅读器打开速度变得慢了很多 xff08 不是电脑配置问题 xff09 xff0c 比A
  • 漫谈 SLAM 技术(上)

    欢迎大家前往腾讯云社区 xff0c 获取更多腾讯海量技术实践干货哦 作者 xff1a 解洪文 导语 随着最近几年机器人 无人机 无人驾驶 VR AR的火爆 xff0c SLAM技术也为大家熟知 xff0c 被认为是这些领域的关键技术之一 本
  • 【设计模式】我终于读懂了命令模式。。。

    文章目录 x1f436 智能生活项目需求 x1f42d 命令模式基本介绍 x1f439 命令模式的原理类图 x1f430 对原理类图的说明 即 命名模式的角色及职责 x1f43a 命令模式解决智能生活项目 x1f438 下面我们跟着代码de
  • css制作从下往上逐渐显示的div

    html代码 span class hljs tag lt span class hljs name div span span class hljs attr class span 61 span class hljs string 34
  • 清除redis缓存的命令,redis常用命令

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 清除redis缓存的命令 xff0c redis常用命令 Redis 命令 xff1a flushall gt 清空整个 Redis 服务器的数据 删除所有数据库的所有 k
  • R语言做正态分布检验

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 首先准备两个样本 code set seed 0 a lt runif 100 min 61 3 max 61 3 b lt rnorm 100 mean 61 0 sd