当前位置: 首页 > news >正文

Shapiro-Wilk正态性检验(Shapiro和Wilk于1965年提出)

Shapiro-Wilk正态性检验是一种用于确定数据集是否服从正态分布的统计方法。它基于Shapiro和Wilk于1965年提出的检验统计量。以下是其基本原理和用途:

基本原理:

  1. 零假设(Null Hypothesis):Shapiro-Wilk检验的零假设是数据集来自于正态分布。这意味着,如果数据确实服从正态分布,则零假设成立。

  2. 计算Shapiro-Wilk统计量:检验首先计算Shapiro-Wilk统计量,这是一个衡量数据与正态分布拟合的度量。该统计量基于数据的观察值和正态分布的期望值之间的差异。

  3. 与临界值比较:接下来,Shapiro-Wilk统计量与临界值进行比较。临界值是根据所选的显著性水平(通常为5%)和数据集的大小计算得出的。如果Shapiro-Wilk统计量小于临界值,就意味着数据不太可能来自于正态分布。

  4. 做出决策:根据统计量与临界值的比较,可以决定是否拒绝零假设。如果统计量足够小,小于临界值,通常会拒绝零假设,这意味着数据不服从正态分布。否则,不能拒绝零假设,这表示数据可能服从正态分布。

用途:

  1. 数据分布检查:Shapiro-Wilk检验可用于验证数据是否符合正态分布的假设。这对于许多统计分析和模型建立的前提非常重要,因为许多统计方法都要求数据服从正态分布。

  2. 质量控制:在制造业和质量控制中,Shapiro-Wilk检验可以用来检查生产过程是否产生了正态分布的输出。如果不是,可能需要采取措施来改进过程。

  3. 金融分析:在金融领域,正态分布假设经常用于分析资产价格变动。Shapiro-Wilk检验可以用来验证这种假设的有效性。

  4. 生物统计学:在生物统计学中,研究人员可能使用Shapiro-Wilk检验来确定生物数据是否遵循正态分布,例如基因表达数据或生物测量数据。

总之,Shapiro-Wilk正态性检验是一种常用的统计工具,可用于验证数据是否符合正态分布的假设,从而支持各种领域的分析和决策。它在小样本情况下的效力较高,适用于许多统计问题。

from scipy import stats
import numpy as np# 创建一个示例数据集(这里使用正态分布数据)
data = np.random.normal(0, 1, 100)# 执行Shapiro-Wilk正态性检验
statistic, p_value = stats.shapiro(data)# 输出检验结果
print("Shapiro-Wilk统计量:", statistic)
print("p-value:", p_value)# 根据p-value做出决策
alpha = 0.05  # 显著性水平
if p_value > alpha:print("不能拒绝零假设,数据可能服从正态分布")
else:print("拒绝零假设,数据不服从正态分布")

 

Shapiro-Wilk正态性检验对检验样本大小有一定的要求。具体来说,Shapiro-Wilk检验在样本大小较小(通常小于大约50-200,具体取决于不同文献和实践)时可能不太适用,并且在这种情况下其效力可能会降低。这是由于统计检验的性质和假设。

主要的考虑因素包括:

  1. 统计性能:Shapiro-Wilk检验在大样本下通常具有较好的统计性能,可以较好地检测到数据的偏离正态分布的情况。但是在小样本下,其性能可能较差,可能无法可靠地识别非正态性。

  2. 假设的严格性:Shapiro-Wilk检验对于样本大小的要求与其检验假设的严格性有关。较小的样本容易受到偶然因素的影响,从而影响检验的结果。

  3. 显著性水平:样本大小较小时,为了达到一定的显著性水平,需要更大的统计效力。这可能需要更严格的判定标准,从而增加了拒绝零假设的难度。

如果你的样本较小,而且需要进行正态性检验,可以考虑使用其他方法,如观察Q-Q图、直方图、小样本正态性检验(如Shapiro-Francia检验),或者考虑非参数统计方法,这些方法在小样本情况下可能更适合。此外,正态性检验通常应与领域知识和问题的背景结合使用,而不应仅仅依赖于统计检验的结果。

 

http://www.lryc.cn/news/180235.html

相关文章:

  • debian设置允许ssh连接
  • 【C语言经典100例题-66】(用指针解决)输入3个数a,b,c,按大小顺序输出。
  • 【STM32 CubeMX】移植u8g2(一次成功)
  • 华为云智能化组装式交付方案 ——金融级PaaS业务洞察及Web3实践的卓越贡献
  • Halcon Image相关算子(二)
  • Rust 多线程编程
  • JavaScript高阶班之ES6 → ES11(八)
  • 网页中嵌套网页制作方法
  • 系统集成项目管理总结(笔记)
  • 如何给Nginx配置访问IP白名单
  • 【VIM】VIM配合使用的工具
  • git你学“废”了吗?——git本地仓库的创建
  • AWS Lambda Golang HelloWorld 快速入门
  • 【C++】单例模式
  • 【kubernetes】使用luakube访问kubernetes api
  • 【算法分析与设计】贪心算法(下)
  • Arm Cache学习资料大汇总
  • Docker 学习总结(79)—— Dockerfile 编写技巧总结
  • 链表经典面试题(二)
  • 89、Redis 的 value 所支持的数据类型(String、List、Set、Zset、Hash)---->Zset 相关命令
  • 知识图谱02——使用python将信息录入neo4j
  • greenDAO-Android轻量级快速ORM框架
  • 结构型设计模式——组合模式
  • 40. 组合总和 II
  • 安卓玩机-----给app加注册码 app加弹窗 云注入弹窗
  • NLP的不同研究领域和最新发展的概述
  • 1.物联网射频识别,RFID概念、组成、中间件、标准,全球物品编码——EPC码
  • MySQL函数与控制结构
  • 【论文极速读】Prompt Tuning——一种高效的LLM模型下游任务适配方式
  • 如何在 Elasticsearch 中使用 Openai Embedding 进行语义搜索