5.22 R语言-正态性检验

正态性检验

正态性检验的目的是确定一组数据是否符合正态分布(也称高斯分布)。在统计分析和数据建模中,正态性假设是许多统计方法和模型的基础。了解数据是否符合正态分布有助于选择适当的统计方法和确保分析结果的有效性。

本文主要从概率统计方面来进行正态性检验。即假设检验的角度来说,数据是否服从正态分布可以通过与“数据服从正态分布”这样一个零假设进行假设检验计算,构建相关统计量来计算出检验结果。文中提及的Q-Q Plot是描述性统计方法。

先把这篇好文章放在开头!!!

正态检验 (Normality Test)——常见方法汇总与简述-CSDN博客文章浏览阅读5.5w次,点赞89次,收藏374次。前 言在科学研究中,往往需要对数据进行差异性检验,而常用的参数检验需要数据服从正态分布,因此在决定是否采用参数检验之前需要先对数据进行正态性检验。这一步在任何统计学软件中(如SPSS、SAS、Origion、GraghPad等)都能够轻易实现,但每个软件都会同时包括多种正态检验方法,此时该选哪个方法来对自己的数据进行正态性检验呢?这就是本文要解决的主要问题。在查阅相关资料后,本文将对多种常见的正态检验方法进行简单地归纳总结,尽可能写清楚每个检验方法的适用范围,但对于每个检验方法的数学统计学原理不作深入解_正态检验https://blog.csdn.net/qq_33924470/article/details/114668701

正态性检验的目的

  1. 验证正态性假设

    • 许多统计方法(如 t 检验、ANOVA、回归分析)假设数据来自正态分布。正态性检验可以帮助确认这些假设是否合理。
  2. 指导统计方法的选择

    • 如果数据符合正态分布,可以使用参数统计方法,这些方法在正态性假设下更有效。
    • 如果数据不符合正态分布,应该使用非参数统计方法,这些方法不依赖于正态性假设。
  3. 识别数据特征

    • 正态性检验可以揭示数据的分布特征,如偏态和峰态,这对于数据预处理和特征工程很重要。

正态性检验的意义

  1. 确保分析的准确性

    • 确保使用的统计方法适用于数据,避免因不合理的假设导致错误的结论。
  2. 提高模型性能

    • 符合正态分布的数据在许多机器学习和统计模型中表现更好,正态性检验帮助识别和处理偏离正态分布的数据。
  3. 数据预处理

    • 正态性检验结果可以指导数据变换(如对数变换、平方根变换),使数据更符合正态分布,优化模型性能。

上图中,shapiro.test 函数用于进行Shapiro-Wilk正态性检验,以确定数据是否来自正态分布。使用 shapiro.test 检验了 ide2 数据框中 IDE 为 "VStudio" 的 Time 列,。

示例

shapiro.test(ide2[ide2$IDE == "VStudio",]$Time)

    Shapiro-Wilk normality test

data:  ide2[ide2$IDE == "VStudio", ]$Time
W = 0.84372, p-value = 0.004191

结果解释

  • W 值: Shapiro-Wilk检验的统计量。值接近1表明数据接近正态分布,值较小则表明偏离正态分布。
  • p-value: 用于判断数据是否符合正态分布的显著性水平。
    • 如果 p-value > 0.05,表示无法拒绝原假设,即数据可能来自正态分布。
    • 如果 p-value ≤ 0.05,表示拒绝原假设,即数据显著偏离正态分布

本次的结果中:

  • W = 0.84372: W 值表明数据可能存在偏离正态分布的情况。
  • p-value = 0.004191: p-value 小于 0.05,表示数据显著偏离正态分布。

进一步步骤

  1. 非参数检验:由于数据不符合正态分布,可以考虑使用非参数检验方法,比如 Mann-Whitney U 检验(也称为 Wilcoxon 秩和检验)来比较不同组别的数据。

  2. 数据变换:尝试对数据进行变换(如对数变换或平方根变换)以使其更接近正态分布,然后重新进行正态性检验。

常用的正态性检验方法

  1. Shapiro-Wilk Test

    • 用于小样本数据(n < 50)。
    • 例子:shapiro.test(data)
  2. Kolmogorov-Smirnov Test

    • 用于大样本数据。
    • 例子:ks.test(data, "pnorm", mean=mean(data), sd=sd(data))
  3. Anderson-Darling Test

    • 对尾部更敏感。
    • 需要额外的包,例如 nortest
    • 例子:library(nortest); ad.test(data)
  4. Q-Q Plot (Quantile-Quantile Plot)

    • 通过图形方法直观检查数据是否符合正态分布。
    • 例子:qqnorm(data); qqline(data)

shapiro.test 函数会自动选择合适的方法进行正态性检验(这也太方便了吧)。通常情况下,它会根据数据样本的大小来选择适当的统计方法

在 R 中,shapiro.test 函数主要使用 Shapiro-Wilk 检验来进行正态性检验。Shapiro-Wilk 检验对于样本量较小(一般小于 50)的情况较为适用。对于较大的样本量,该函数可能会使用其他方法,但是这些细节通常是隐藏的,不需要用户来指定。

当调用 shapiro.test 函数时,你只需要提供要进行正态性检验的数据,函数会自动选择适当的方法并返回检验结果,包括统计量和 p 值。

能否指定检验方法呢?

要指定使用特定的检验方法,需要使用其他的正态性检验函数,例如 ad.testlillie.testcvm.test 等。以下是一些常见的正态性检验方法及其相应的函数:

概率统计(假设检验角度):

  1. Shapiro-Wilk Testshapiro.test
  2. Anderson-Darling Testad.test(需要加载额外的包,如 nortest
  3. Lilliefors Testlillie.test(需要加载额外的包,如 nortest
  4. Cramér-von Mises Testcvm.test(需要加载额外的包,如 goftest) 
# 加载 nortest 包
library(nortest)

# 使用 Anderson-Darling 正态性检验
ad.test(data)


# 使用 lillie.test 函数进行 Lilliefors 正态性检验
lillie.test(data)



# 加载 goftest 包
library(goftest)

# 使用 cvm.test 函数进行 Cramér-von Mises 正态性检验
cvm.test(data)

 描述性统计:

m = aov(Time ~ IDE, data=ide2) # fit model
shapiro.test(residuals(m)) # test residuals
qqnorm(residuals(m)); qqline(residuals(m)) # plot residuals

其中aov用于拟合方差分析模型。为了评估方差分析模型(ANOVA)假设的正态性,使用qqnorm和qqline绘制 Q-Q 图。

Q-Q 图(Quantile-Quantile Plot)是一种图形方法,用于比较数据的分布与正态分布。如果数据点大致沿着一条直线分布,则数据可以被认为是正态分布的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/636710.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安全牛专访美创CTO周杰:数据安全进入体系化建设阶段,数据安全管理平台应用正当时

在数字经济时代&#xff0c;数据作为生产要素发挥越来越重要的作用&#xff0c;数据安全也得到了前所未有的重视。而随着数据安全能力已经进入了相对体系化建设的阶段&#xff0c;更加智能化、协同化的新一代数据安全管理平台得到了各类企业组织的广泛关注。 本期牛人访谈邀请到…

java中写word换行符 poi 换行

省流&#xff1a; 表格外的文本&#xff0c;使用“\r”或者“(char)11”来换行&#xff0c;建议用"\r"。 表格内的文本&#xff0c;使用“(char)11”来换行。 正文&#xff1a; 测试用word文档&#xff1a; t1.doc内容如下&#xff1a; t2.doc内容如下&#xff…

芯片半导体研发公司的数据防泄漏解决方案

在当今信息化时代&#xff0c;半导体研发公司的数据防泄密工作显得尤为重要。半导体行业涉及大量的核心技术、研发文档和客户信息&#xff0c;一旦数据泄露&#xff0c;将给企业带来无法估量的损失。因此&#xff0c;建立一套有效的数据防泄密解决方案成为半导体研发公司的当务…

最新腾讯音乐人挂机脚本,号称日赚300+【永久脚本+使用教程】

项目介绍 首先需要认证腾讯音乐人&#xff0c;上传自己的歌曲&#xff0c;然后用小号通过脚本去刷自己的歌曲 &#xff0c;赚取播放量 &#xff0c;1万播放大概就是50到130之间 腾讯认证不需要露脸&#xff0c;不吞量&#xff0c;不封号 脚本&#xff0c;全自动无脑挂机&…

链表经典OJ问题【环形链表】

题目导入 题目一&#xff1a;给你一个链表的头节点 head &#xff0c;判断链表中是否有环 题目二&#xff1a;给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 NULL。 题目一 给你一个链表的头节点 head &#xff0c;…

【CTF Web】CTFShow web3 Writeup(SQL注入+PHP+UNION注入)

web3 1 管理员被狠狠的教育了&#xff0c;所以决定好好修复一番。这次没问题了。 解法 注意到&#xff1a; <!-- flag in id 1000 -->但是拦截很多种字符。 if(preg_match("/or|\-|\\|\*|\<|\>|\!|x|hex|\/i",$id)){die("id error"); }使用…

Hadoop+Spark大数据技术 实验7 Spark综合编程

删除字符串 package HelloPackageimport scala.io.StdInobject DeleteStr {def main(args: Array[String]): Unit {var str1 ""var str2 ""var i 0var j 0var flag 0print("请输入第一个字符串:")str1 StdIn.readLine()print("请输…

Docker简单使用

1.简单认识 软件的打包技术&#xff0c;就是将打乱的多个文件打包为一个整体&#xff0c;比如想使用nginx&#xff0c;需要先有一台linux的虚拟机&#xff0c;然后在虚拟机上安装nginx.比如虚拟机大小1G&#xff0c;nginx100M。当有了docker后我们可以下载nginx 的镜像文件&am…

Excel/WPS《超级处理器》同类项处理,合并同类项与拆分同类项目

在工作中处理表格数据&#xff0c;经常会遇到同类项处理的问题&#xff0c;合并同类项或者拆分同类项&#xff0c;接下来介绍使用超级处理器工具如何完成。 合并同类项 将同一列中的相同内容合并为一个单元格。 1&#xff09;用分隔符号隔开 将AB列表格&#xff0c;合并后为…

chrome125.0.6422.60驱动包下载

百度网盘地址:https://pan.baidu.com/s/1DAr_O58GQ6m4sk_QePZscA?pwd=5t0j 提取码:5t0j Chrome驱动包(ChromeDriver)是一个用于支持自动化测试的工具,它提供了对Google Chrome浏览器的控制,使您可以编写和运行自动化脚本来测试网站。这个驱动程序是由Selenium项目开…

Web安全:SQL注入之时间盲注原理+步骤+实战操作

「作者简介」&#xff1a;2022年北京冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础对安全知识体系进行总结与归纳&#xff0c;著作适用于快速入门的 《网络安全自学教程》&#xff0c;内容涵盖系统安全、信息收集等…

【Python】 Python脚本中的#!(Shebang):使用指南与最佳实践

基本原理 在Python脚本编程中&#xff0c;#!&#xff08;通常称为shebang&#xff09;是一个特殊的行&#xff0c;它告诉操作系统使用哪个解释器来执行脚本。在Unix-like系统中&#xff0c;shebang是必需的&#xff0c;因为它允许脚本作为独立的程序运行&#xff0c;而不需要显…

mysql 、oss 结合使用

以下是一个使用 Express、MySQL、OSS 和 axios 的 Node.js 示例。这个示例创建了一个 Express 服务器&#xff0c;该服务器有一个路由用于处理视频上传的请求。视频文件首先被上传到 OSS&#xff0c;然后视频的 OSS URL 被存储到 MySQL 数据库。 首先&#xff0c;我们需要安装必…

mysql实战——xtrabackup全量备份/增量备份及恢复

一、测试前准备 mysql数据库 端口3306数据文件目录 /data/mysql/3306/data 安装目录/usr/lcoal/mysql配置文件/etc/my.cnf 创建数据库 testXtra 创建备份目录 备份目录/data/backup/备份恢复数据文件目录/data/mysql/3307/data备份恢复配置文件/etc/my_3307.cnf 二、开始…

【spring】@ResponseBody注解学习

ResponseBody介绍 ResponseBody 是一个Spring框架中的注解&#xff0c;主要用于Web开发&#xff0c;特别是在Spring MVC框架中。它的核心作用是改变Spring MVC处理HTTP请求响应的行为&#xff0c;使得从控制器方法返回的数据直接写入HTTP响应体&#xff08;Response Body&…

tomcat--安全配置多虚拟机

端口8005/tcp 安全配置管理 8005是Tomcat的管理端口&#xff0c;默认监听在127.0.0.1上。无需验证就可发送SHUTDOWN (大小写敏感)这个字符串&#xff0c;tomcat接收到后就会关闭此Server。此管理功能建议禁用&#xff0c;可将SHUTDOWN改为一串猜不出的字符串实现或者port修改成…

自己手写一个线性表List【C风格】

#include <iostream>//线性表、顺序表List#define MAX_SIZE 20 #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0typedef int Status;//返回状态类型 typedef int ElemType;//元素类型//结构体 typedef struct {ElemType data[MAX_SIZE];//数据类型&#x…

探索 JavaScript 新增声明命令与解构赋值的魅力:从 ES5 迈向 ES6

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; ES5、ES6介绍 文章目录 &#x1f4af;声明命令 let、const&#x1f35f;1 let声明符&a…

Linux程序开发(十一):进程与进程间通信设计之趣味猫咪抓老鼠游戏

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

Java堆栈分区

Java在内存分配区域&#xff1a;栈区&#xff08;stack&#xff09;、堆区&#xff08;heap&#xff09;、方法区&#xff08;Method Area&#xff09;、常量池。 一、栈区 每个方法&#xff08;Method&#xff09;执行时&#xff0c;都会创建一个方法栈区。用于存储局部变量表…