检验数据是否符合正态分布的统计方法

Shapiro-Wilk检验、Kolmogorov-Smirnov检验和Anderson-Darling检验都是常见用于检验数据是否符合正态分布的统计方法。以下是它们的简要介绍:

  1. Shapiro-Wilk检验

    • Shapiro-Wilk检验是一种用于小到中等样本量的检验方法。它的原假设是数据来自正态分布。如果p值小于显著性水平(通常为0.05),则可以拒绝原假设,即认为数据不符合正态分布。
  2. Kolmogorov-Smirnov检验

    • Kolmogorov-Smirnov检验是一种用于大样本量的检验方法,可以用于检验数据是否符合特定的理论分布,包括正态分布。它的原假设也是数据来自正态分布。如果p值小于显著性水平,就可以拒绝原假设。
  3. Anderson-Darling检验

    • Anderson-Darling检验也是一种用于检验数据是否符合某一理论分布的方法,包括正态分布。与前两种方法不同,Anderson-Darling检验还提供了一种测量数据偏离理论分布的程度的方式。它的原假设是数据来自正态分布,如果统计值小于临界值,则可以接受原假设。

 

不同的正态性检验方法在使用上有不同的前提要求和特点。以下是一些常见的正态性检验方法以及它们的主要前提和特点:

  1. Shapiro-Wilk测试

    • 前提要求: 数据是连续型的,并且样本量通常不宜太小(通常建议样本量大于5或10)。
    • 特点: 这是一种相对较强大的正态性检验方法,适用于各种数据集大小。它对非正态性的敏感性相对较高,可以用于小样本和大样本。
  2. Kolmogorov-Smirnov测试

    • 前提要求: 数据是连续型的。对于单样本检验,通常要求样本量不宜太小,对于双样本检验,两个样本的大小应该接近。
    • 特点: 这个测试适用于比较数据与理论正态分布的累积分布函数。它比较灵活,可用于单样本和两样本比较。但对于小样本数据,可能不够敏感。
  3. Anderson-Darling测试

    • 前提要求: 数据是连续型的。通常用于大样本数据。
    • 特点: 这个测试是Shapiro-Wilk的扩展,对大样本数据效果较好,通常用于更大的样本量。它提供了一些不同权重的统计量,可用于不同的分布检验。
  4. Q-Q图(Quantile-Quantile图)

    • 前提要求: 适用于连续型数据。不需要特定的样本量,但图形解释可能需要经验。
    • 特点: 这是一种可视化方法,通过直观比较数据的分位数和理论正态分布的分位数来判断数据是否符合正态分布。它提供了一个快速的初步印象,但不提供具体的p-value。
  5. Lilliefors测试

    • 前提要求: 适用于小样本数据,通常用于样本量较小的情况。
    • 特点: 这是Kolmogorov-Smirnov测试的变体,专门用于小样本数据。与标准Kolmogorov-Smirnov测试相比,它对小样本数据更敏感。

每种测试方法都有其适用范围和局限性,选择合适的方法取决于您的数据特点和研究问题。通常,建议结合多种方法的结果来做出最终的判断。此外,正态性检验通常是统计分析的一个步骤,而不是最终结论。

这些检验在实际应用中都有其优点和限制,选择哪种检验应该根据数据的特点和研究目的来决定。此外,需要谨慎解释检验结果,因为在大样本中,即使数据略微偏离正态分布,也可能导致检验结果拒绝原假设,而在小样本中则可能不敏感。因此,通常需要综合考虑多种方法和图形分析来评估数据的分布情况。

import numpy as np
from scipy import stats

# 创建一个示例数据集,这里使用Numpy生成一个正态分布样本
np.random.seed(0)
data = np.random.normal(0, 1, 100)  # 均值为0,标准差为1的正态分布样本,共100个数据点

# Shapiro-Wilk检验
shapiro_stat, shapiro_p = stats.shapiro(data)
print("Shapiro-Wilk检验统计值:", shapiro_stat)
print("Shapiro-Wilk检验p值:", shapiro_p)
if shapiro_p < 0.05:
    print("Shapiro-Wilk检验拒绝了正态分布假设")
else:
    print("Shapiro-Wilk检验未拒绝正态分布假设")

# Kolmogorov-Smirnov检验
ks_stat, ks_p = stats.kstest(data, 'norm')
print("\nKolmogorov-Smirnov检验统计值:", ks_stat)
print("Kolmogorov-Smirnov检验p值:", ks_p)
if ks_p < 0.05:
    print("Kolmogorov-Smirnov检验拒绝了正态分布假设")
else:
    print("Kolmogorov-Smirnov检验未拒绝正态分布假设")

# Anderson-Darling检验
anderson_stat, anderson_critical_values, anderson_significance_levels = stats.anderson(data, 'norm')
print("\nAnderson-Darling检验统计值:", anderson_stat)
print("Anderson-Darling检验临界值:", anderson_critical_values)
print("Anderson-Darling检验显著性水平:", anderson_significance_levels)

# 判断是否符合正态分布
if anderson_stat < anderson_critical_values[2]:  # 选择2.5%的显著性水平
    print("Anderson-Darling检验未拒绝正态分布假设")
else:
    print("Anderson-Darling检验拒绝了正态分布假设")

这个示例代码首先生成一个包含100个正态分布数据点的样本。然后,分别使用Shapiro-Wilk检验、Kolmogorov-Smirnov检验和Anderson-Darling检验来检验这些数据是否符合正态分布。

  • Shapiro-Wilk检验使用stats.shapiro()函数,返回统计值和p值。如果p值小于显著性水平(通常为0.05),则拒绝正态分布假设。

  • Kolmogorov-Smirnov检验使用stats.kstest()函数,返回统计值和p值。同样,如果p值小于显著性水平,就拒绝正态分布假设。

  • Anderson-Darling检验使用stats.anderson()函数,返回统计值、临界值和显著性水平。在这里,我们选择了2.5%的显著性水平来判断是否符合正态分布。如果统计值小于临界值,则未拒绝正态分布假设。

根据这些检验的结果,你可以判断数据是否符合正态分布的假设。请注意,这些检验的结果可能受样本大小和显著性水平的影响,因此需要谨慎解释结果。

-------------

Shapiro-Wilk检验的统计值是检验的统计量,它用于衡量样本数据是否符合正态分布的程度。在Python的SciPy库中,使用stats.shapiro()函数执行Shapiro-Wilk检验时,该函数的返回值中包含了两个值:

  1. Shapiro-Wilk检验统计值(Shapiro-Wilk test statistic):这是检验的统计量,通常表示为W。该值的计算依赖于样本数据的排序顺序和样本大小。统计值的大小反映了数据偏离正态分布的程度,如果统计值远离1,那么数据越偏离正态分布。通常,更小的统计值表明数据更不符合正态分布。

  2. p值(p-value):p值是用于判断检验的显著性的指标。它表示在原假设为真的情况下,观察到的统计值或更极端情况出现的概率。如果p值小于显著性水平(通常为0.05),则可以拒绝原假设,即认为数据不符合正态分布。如果p值大于显著性水平,则不拒绝原假设,即认为数据可能符合正态分布。

在Shapiro-Wilk检验的结果中,我们通常关注p值,因为它用于决定是否拒绝正态分布的假设。如果p值小于显著性水平,那么我们倾向于拒绝正态分布假设,否则,我们不拒绝正态分布假设。

简而言之,Shapiro-Wilk检验统计值越小,表明数据越不符合正态分布,而p值用于确定检验结果的显著性。

-----------------------------

观察数据的统计指标,如均值、中位数、标准差、偏度和峰度是一种初步判断数据是否符合正态分布的方法。以下是这些指标如何用于判断数据的分布情况:

  1. 均值和中位数:在正态分布中,均值和中位数应该非常接近,因为正态分布是对称的。如果均值和中位数之间的差异很小,这可能表明数据近似正态分布。

  2. 标准差:正态分布的标准差通常是数据分布的一个重要特征。标准差衡量数据点与均值之间的离散程度。在正态分布中,标准差应该保持相对稳定,不随样本的变化而大幅度变化。

  3. 偏度:偏度衡量数据分布的偏斜程度。在正态分布中,偏度应接近0。正偏度表示数据右偏(右侧的尾部较长),负偏度表示数据左偏(左侧的尾部较长)。较接近0的偏度可能表明数据近似正态分布。

  4. 峰度:峰度衡量数据分布的尖锐程度。正态分布的峰度通常为3,被称为正常峰度。较接近3的峰度可能表明数据近似正态分布。高于3的峰度表示尖峭峰(比正态峰更尖锐),低于3的峰度表示平顶峰(比正态峰更平坦)。

需要注意的是,这些统计指标的使用只能提供初步的判断,不能确定数据是否绝对符合正态分布。此外,小样本数据的统计指标可能不太可靠,因此更严格的检验方法(如Shapiro-Wilk检验、Kolmogorov-Smirnov检验和Anderson-Darling检验)通常更适合用于确定数据的分布情况。最好的做法是综合考虑多个方法和指标来评估数据的分布特性。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据分析之数据质量分析和数据特征分析 数据分析之数据质量分析和数据特征分析 1.数据质量分析 数据质量分析是数据挖掘中数据准备过程的重要⼀环,是数据预处理的前提,也是数据挖掘分析结论有效性和准确性的基础,没有可信的数据数据挖掘构建的模 型将是空中楼阁。 数据质量分析的主要任务是检查原始数据是否存在脏数据,脏数据⼀般是指不符合要求,以及不能直接进⾏相应分析的数据。在常见的数据挖掘⼯作中,脏数据 包括: (1)缺失; (2)异常; (3)不⼀致的; (4)重复数据及含有特殊符号(如#、¥、*)的数据。 1.1缺失分析 数据的缺失主要包括记录的缺失和记录中某个字段信息的缺失,两者都会造成分析结果的不准确,以下从缺失产⽣的原因及影响等⽅⾯展开 分析。 (1)缺失产⽣的原因 1)有些信息暂时⽆法获取,或者获取信息的代价太⼤。 2)有些信息是被遗漏的。可能是因为输⼊时认为不重要、忘记填写或对数据理解错误等⼀些⼈为因素⽽遗漏,也可能是由于数据采集设备的故 障、存储介质的故障、传输媒体的故障等⾮⼈为原因⽽丢失。 3)属性不存在。在某些情况下,缺失并不意味着数据有错误。对⼀些对象来说某些属性是不存在的,如⼀个未婚者的配偶姓名、⼀个⼉童 的固定收⼊等。 (2)缺失的影响 1)数据挖掘建模将丢失⼤量的有⽤信息。 2)数据挖掘模型所表现出的不确定性更加显著,模型中蕴含的规律更难把握。 3)包含空数据会使建模过程陷⼊混乱,导致不可靠的输出。 (3)缺失的分析 使⽤简单的统计分析,可以得到含有缺失的属性的个数,以及每个属性的未缺失数、缺失数与缺失率等。 1.2异常分析 异常分析是检验数据是否有录⼊错误以及含有不合常理的数据。忽视异常的存在是⼗分危险的,不加剔除地把异常包括进数据的计算分析过程中,会给结果带 来不良影响;重视异常的出现,分析其产⽣的原因,常常成为发现问题进⽽改进决策的契机。异常是指样本中的个别,其数明显偏离其余的观测。异常也 称为离群点,异常的分析也称为离群点分析。 (1)简单统计量分析 可以先对变量做⼀个描述性统计,进⽽查看哪些数据是不合理的。最常⽤的统计量是最⼤和最⼩,⽤来判断这个变量的取是否超出了合理 的范围。例如,客户年龄的最⼤为199岁,则该变量的取存在异常。 (2)3σ原则 如果数据服从正态分布,在3σ原则下,异常被定义为⼀组测定中与平均的偏差超过三倍标准差的。在正态分布的假设下,距离平均3σ 之外的出现的概率为P("x-µ">3σ) 0.003,属于极个别的⼩概率事件。如果数据不服从正态分布,也可以⽤远离平均的多少倍标准差来描述。 (3)箱形图分析 箱形图提供了识别异常的⼀个标准:异常通常被定义为⼩于QL-1.5IQR或⼤于QU+1.5IQR的。QL称为下四分位数,表⽰全部观察中有 四分之⼀的数据⽐它⼩;QU称为上四分位数,表⽰全部观察中有四分之⼀的数据⽐它⼤;IQR称为四分位数间距,是上四分位数QU与 下四分位数QL之差,其间包含了全部观察的⼀半。箱形图判断异常的标准以四分位数和四分位距为基础,四分位数具有⼀定的鲁棒性:多达 25%的数据可以变得任意远⽽不会很⼤地扰动四分位数,所以异常不能对这个标准施加影响。由此可见,箱形图识别异常的结果⽐较客观,在 识别异常⽅⾯有⼀定的优越性,如图所⽰。 在平常的数据分析过程中可以发现,可能其中有部分数据是缺失的,但是如果数据记录和属性较多,使⽤⼈⼯分辨的⽅法就很不切合实际,所 以这⾥需要编写程序来检测出含有缺失的记录和属性以及缺失率个数和缺失率等。同时,也可使⽤箱形图来检测异常。R语⾔检测代码如下所 ⽰。 # 设置⼯作空间 # 把"数据及程序"⽂件夹拷贝到F盘下,再⽤setwd设置⼯作空间 setwd("F:/数据及程序/chapter3/⽰例程序") # 读⼊数据 saledata <- read.csv(file = "./data/catering_sale.csv", header = TRUE) # 缺失检测 并打印结果,由于R把TRUE和FALSE分别当作1、0,可以⽤sum()和mean()函数来分别获取缺失样本数、缺失⽐例 sum(complete.cases(saledata)) sum(!complete.cases(saledata)) mean(!complete.cases(saledata)) saledata[!complete.cases(saledata), ] # 异常检测箱线图 sp <- boxplot(saledata$"销量", boxwex = 0.7) title("销量异常检测箱线图") xi <- 1.1 sd.s <-
第一部分 基础篇 001 第一个C程序 002 运行多个源文件 003 求整数之积 004 比较实数大小 005 字符的输出 006 显示变量所占字节数 007 自增/自减运算 008 数列求和 009 乘法口诀表 010 猜数字游戏 011 模拟ATM(自动柜员机)界面 012 用一维数组统计学生成绩 013 用二维数组实现矩阵转置 014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字转换为罗马数字 027 字符替换 028 从键盘读入实数 029 字符行排版 030 字符排列 031 判断字符串是否回文 032 通讯录的输入输出 033 扑克牌的结构表示 034 用“结构”统计学生成绩 035 报数游戏 036 模拟社会关系 037 统计文件的字符数 038 同时显示两个文件的内容 039 简单的文本编辑器 040 文件的字数统计程序 041 学生成绩管理程序 第二部分 数据结构篇 042 插入排序 043 希尔排序 044 冒泡排序 045 快速排序 046 选择排序 047 堆排序 048 归并排序 049 基数排序 050 二叉搜索树操作 051 二项式系数递归 052 背包问题 053 顺序表插入和删除 054 链表操作(1) 055 链表操作(2) 056 单链表就地逆置 057 运动会分数统计 058 双链表 059 约瑟夫环 060 记录个人资料 061 二叉树遍利 062 浮点数转换为字符串 063 汉诺塔问题 064 哈夫曼编码 065 图的深度优先遍利 066 图的广度优先遍利 067 求解最优交通路径 068 八皇后问题 069 骑士巡游 070 用栈设置密码 071 魔王语言翻译 072 火车车厢重排 073 队列实例 074 K阶斐波那契序列 第三部分 数计算与趣味数学篇 075 绘制余弦曲线和直线的迭加 076 计算高次方数的尾数 077 打鱼还是晒网 078 怎样存钱以获取最大利息 079 阿姆斯特朗数 080 亲密数 081 自守数 082 具有abcd=(ab+cd)2性质的数 083 验证歌德巴赫猜想 084 素数幻方 085 百钱百鸡问题 086 爱因斯坦的数学题 087 三色球问题 088 马克思手稿中的数学题 089 配对新郎和新娘 090 约瑟夫问题 091 邮票组合 092 分糖果 093 波瓦松的分酒趣题 094 求π的近似 095 奇数平方的有趣性质 096 角谷猜想 097 四方定理 098 卡布列克常数 099 尼科彻斯定理 100 扑克牌自动发牌 101 常胜将军 102 搬山游戏 103 兔子产子(菲波那契数列) 104 数字移动 105 多项式乘法 106 产生随机数 107 堆栈四则运算 108 递归整数四则运算 109 复平面作图 110 绘制彩色抛物线 111 绘制正态分布曲线 112 求解非线性方程 113 实矩阵乘法运算 114 求解线性方程 115 n阶方阵求逆 116 复矩阵乘法 117 求定积分 118 求满足特异条件的数列 119 超长正整数的加法 第四部分 图形篇 120 绘制直线 121 绘制圆 122 绘制圆弧 123 绘制椭圆 124 设置背景色和前景色 125 设置线条类型 126 设置填充类型和填充颜色 127 图形文本的输出 128 金刚石图案 129 飘带图案 130 圆环图案 131 肾形图案 132 心脏形图案 133 渔网图案 134 沙丘图案 135 设置图形方式下的文本类型 136 绘制正多边形 137 正六边形螺旋图案 138 正方形螺旋拼块图案 139 图形法绘制圆 140 递归法绘制三角形图案 141 图形法绘制椭圆 142 抛物样条曲线 143 Mandelbrot分形图案 144 绘制布朗运动曲线 145 艺术清屏 146 矩形区域的颜色填充 147 VGA256色模式编程 148 绘制蓝天图案 149 屏幕检测程序 150 运动的小车动画 151 动态显示位图 152 利用图形页实现动画 153 图形时钟 154 音乐动画 第五部分 系统篇 155 读取DOS系统中的国家信息 156 修改环境变量 157 显示系统文件表 158 显示目录内容 159 读取磁盘文件 160 删除目录树 161 定义文本模式 162 设计立体窗口 163 彩色弹出菜单 164 读取CMOS信息 165 获取BIOS设备列表 166 锁住硬盘 167 备份/恢复硬盘分区表 168 设计口令程序 169 程序自我保护 第六部分 常见试题解答篇 170 水果拼盘 171 小孩吃梨 172 删除字符串中的特定字符 173 求解符号方程 174 计算标准差 175 求取符合特定要求的素数 176 统计符合特定条件的数 177 字符串倒置 178 部分排序 179 产品销售记录处理 180 特定要求的字符编码 181 求解三角方程 182 新完全平方数 183 三重回文数 184 奇数方差 185 统计选票 186 同时整除 187 字符左右排序 188 符号算式求解 189 数字移位 190 统计最高成绩 191 比较字符串长度 192 合并整数 193 矩阵逆置 194 删除指定的字符 195 括号匹配 196 字符串逆置 197 SIX/NINE问题 198 单词个数统计 199 方差运算 200 级数运算 201 输出素数 202 素数题 203 序列排序 204 整数各位数字排序 205 字符串字母移位 206 Fibonacc数列 第七部分 游戏篇 207 商人过河游戏 208 吃数游戏 209 解救人质游戏 210 打字训练游戏 211 双人竞走游戏 212 迷宫探险游戏 213 迷你撞球游戏 214 模拟扫雷游戏 215 推箱子游戏 216 五子棋游戏 第八部分 综合实例篇 217 综合CAD系统 218 功能强大的文本编辑器 219 图书管理系统 220 进销存管理系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值