使用R检测数据是否符合正态分布(正态分布检验)

R语言正态检验; R语言QQ图; R语言概率密度曲线比较法;

详细的方法介绍在网上已经有很多了,推荐这篇

概括得来讲,主要分为4(or 5)种方法:

  • 概率密度曲线比较法
  • Q-Q图法
  • 经验法则
  • 夏皮罗-威尔克(Shapiro-Wilk)检验法,适用于50 < n < 100 时的正态性检验
  • SPSS 规定:当样本含量3 ≤n ≤5000 时,结果以Shapiro - Wilk (W 检验) 为准,当样本含量n > 5000 结果以Kolmogorov - Smirnov 为准。而SAS 规定:当样本含量n ≤2000 时,结果以Shapiro - Wilk (W 检验) 为准,规定当样本含量n >2000 时,结果以Kolmogorov - Smirnov (D 检验) 为准,所以我在这里也提一下 R语言中的 Kolmogorov-Smirnov 检验
ks.test(x, y, ...,        alternative = c("two.sided", "less", "greater"),            exact = NULL)R语言中ks.test有四个参数,第一个参数x为观测值向量,第二个参数y为第二观测值向量或者累计分布函数或者一个真正的累积分布函数如pnorm,只对连续CDF有效。第三个参数为指明是单侧检验还是双侧检验,exact参数为NULL或者一个逻辑值,表明是否需要计算精确的P值。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

我使用R编写了一个示例函数,同时使用了概率密度曲线比较法、Q-Q图法和夏皮罗-威尔克(Shapiro-Wilk)检验法。

至于经验法则,我不是很推荐,很玄这东西。

不废话,上码子

#input.data应为矩阵normal_test<- function(input.data,alpha=0.05,picplot=TRUE){  if(picplot==TRUE){#画图形    dev.new()#新建窗口画图    par(mfrow=c(2,1))    #Q-Q图法    qqnorm(input.data,main="qq图")    qqline(input.data)    #概率密度曲线比较法    hist(input.data,freq=F,main="直方图和密度估计曲线")        #如果画出的图缺少尖端部分则使用下面这句代码        #hist(input.data,freq=F,main="直方图和密度估计曲线",ylim = c(0,0.5))#使用合适的值来避免红蓝线缺少尖端部分,这里根据已经跑出来的图像我得出0.5    lines(density(input.data),col="blue") #密度估计曲线    x<-seq(min(input.data),max(input.data),0.0001)        #使用seq(),若取0.0000001太密集跑大一点的数据就容易死机,建议0.0001    lines(x,dnorm(x,mean(input.data),sd(input.data)),col="red")         #正态分布曲线,思想是根据求每个x应该对应的标准正态y值,然后将x与求出的y放在一起做出所求数据如果按照正态分布应该是怎样的,并于实际密度曲线(蓝线)对比   }#sd标准差 mean平均值  #夏皮罗-威尔克(Shapiro-Wilk)检验法【数据不能过大,范围为3~5000,假如有一个300*300的矩阵那么这个方法运行函数时作废】  shapiro_result<- shapiro.test(input.data)  if(shapiro_result$p.value>alpha){    print(paste("success:服从正态分布,p.value=",shapiro_result$p.value,">",alpha))      }else{    print(paste("error:不服从正态分布,p.value=",shapiro_result$p.value,"<=",alpha))  }  shapiro_result}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

使用的时候将以上代码运行后数据区会得到一个名为normal_test的函数,这时就可以调用它了。但之前我们先对要检验的数据进行预处理:

mydata<- read.table("xxxxxx.tsv", header=TRUE,sep="\t")#数据读入因人而异,我的是tsv文件(tab分隔),且带表头mydata<-as.matrix(mydata)#需要转换为矩阵
  • 1
  • 2

至于调用函数

normal_test(mydata)
  • 1

即可

附上一个符合正态分布数据画出的图

可以看到红蓝线拟合完美,qq图显示点集中在对角线上

再来一个不符合的图

可以看到红蓝线差别大,qq图显示点并不集中在对角线上


visitor tracker


           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net

R 数据正态分布检验相关推荐

  1. R_数据正态分布检验

    使用R检测数据是否符合正态分布(正态分布检验) R语言正态检验; R语言QQ图; R语言概率密度曲线比较法; 详细的方法介绍在网上已经有很多了,推荐这篇 概括得来讲,主要分为4(or 5)种方法: 概 ...

  2. R语言学习——一元与多元正态分布检验(也可以用于其他分布的检验)

    文章目录 1 一元正态的评估 1.1 图像法 1.1.1 直方图 1.1.2 Q-Q图 1.2 峰度和偏度 1.3 统计检验 1.3.1 Shapiro-Wilks检验 1.3.2 Kolmogoro ...

  3. R语言shapiro.test()函数实现Shapiro-Wilk正态分布检验

    R语言shapiro.test()函数实现Shapiro-Wilk正态分布检验 目录 R语言shapiro.test()函数实现Shapiro-Wilk正态分布检验 #Shapiro-Wilk正态分布 ...

  4. 正态分布检验:检验序列数据是否符合正态分布

    正态分布检验 雅克-贝拉检验(Jarque-Bera-test)(JB检验) 介绍 JB检验主要适用于样本数量大于30,而且样本数越多,JB检验效果越准确. JB检验主要用于判断数据是否符合总体正态分 ...

  5. 浅尝辄止_数学建模(笔记_对数据进行正态分布检验)

    文章目录 对数据进行正态分布检验 一.正态分布 J B JB JB检验(大样本 n > 30 n>30 n>30) 1.偏度 2.峰度 3.Matlab中偏度和峰度的计算 4. J ...

  6. 统计学之正态分布检验

    统计学之正态分布检验 本次主要是对数据集数据进行正态分布检验,数据集地址为:http://jse.amstat.org/datasets/normtemp.dat.txt 主要包括三列数据,体温(F) ...

  7. 【R 数据科学】R语言进行数据科学整理最有用的包大全

    一.数据科学工作流程 1.1 数据导入 1.2 数据整理 1.3 反复理解数据 1.4 数据可视化 1.5 数据转换 1.6 统计建模 1.7 作出推断(比如预测) 1.8 沟通交流 1.9 自动化分 ...

  8. r语言t检验输出检验统计量_[转载]R语言:常用统计检验

    R语言:常用统计检验方法 写在前面 R已经成为当前国际学术界最流行的统计和绘图软件之一,该语言较为简单易学,统计分析功能强大,且具有很强的绘图功能,能够绘制学术出版要求的多种图表.R语言在生物信息学, ...

  9. 使用python实现正态分布检验

    本次的正态分布检验的数据描述为What's Normal? – Temperature, Gender, and Heart Rate中的数据,其中数据源中包含体温.性别和心率三个数据.这次我们选择文 ...

最新文章

  1. 【HDU/算法】最短路问题 杭电OJ 2544 (Dijkstra,Dijkstra+priority_queue,Floyd,Bellman_ford,SPFA)
  2. 跟小博老师一起学Servlet ——Servlet之HttpServletResponse
  3. JavaScript数据运算
  4. Linux 系统的配置文件
  5. docker-compose.yaml的一些坑(趁我还记得赶快记下来)
  6. 计算机基础知识整理 手抄报,科技小制作的手抄报资料简单字少
  7. 前端填空题_一年前端面试总结|入职字节|2020.8
  8. SSH框架之Spring4专题3:Spring与AOP
  9. arcgis更改字段名_ArcGIS怎么修改属性表字段名称
  10. ElasticSearch讲解
  11. python gc_Python垃圾收集(Python GC)
  12. 操,escape sequence的输入方法我以前找过一次,这次又忘了,又找了一次,记下来,...
  13. Linux dirname、basename 指令
  14. linux qt读取显示图片,Linux下使用QT调用opencv读取摄像头视频 调试心得
  15. pytorch函数测试
  16. bat文件建文件夹时乱码及失败问题
  17. 给定一个数组,求数组的最大连续子数组,使得该子数组的和最大
  18. 21个数据科学家面试必须知道的问题和答案
  19. python模拟访问js_百度统计原理分析-利用PHP/Python实现模拟访问
  20. python搭建博客系统_Mezzanine 搭建 BLOG 系统

热门文章

  1. sql 用户定义函数自动生成自增长ID
  2. Java学历很重要_Java开发找工作,学历重要还是技术重要?
  3. 智慧办公新棋局,看联想如何“落子”?
  4. 微信公众号运营实用小技巧分享
  5. 怎么把m4a转换成mp3,分享几个方法给大家!
  6. https://tieba.baidu.com/p/4008858829
  7. 好安卓博客收集【2022年】
  8. 大豆SNP位点查找V2.0
  9. node 热更新代码,无需每次重启命令
  10. web项目bug总结