ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Shapiro-Wilk与Shapiro-Francia检验:正态性检验的原理、选择与实战

2026/9/4 22:19:47 拓冰建站 浏览量
Shapiro-Wilk与Shapiro-Francia检验:正态性检验的原理、选择与实战 简介本资源是一份面向统计分析初学者与科研人员的正态性检验工具脚本聚焦于小样本至中等规模数据n3–5000的分布形态验证问题特别适用于假设检验前的数据预处理、生物医学或心理学实验数据分析等场景。压缩包仅含1个MATLAB函数文件.m体积精简至3KB代码实现基于Royston R94算法稳健支持Shapiro-Wilk检验同时自动识别峰度偏低platykurtic样本并调用Shapiro-Francia检验形成复合正态性判别逻辑。已有944人学习下载用户可直接调用函数输入向量即可获得W统计量、p值及检验结论无需额外依赖或配置脚本内嵌清晰注释与边界条件处理便于理解算法原理、调试异常输入或拓展为批量检验模块。1. 从一次数据异常说起为什么我们需要正态性检验最近在分析一组用户行为数据时我遇到了一个典型的“数据陷阱”。我们团队想评估一个新功能上线后用户完成某个核心任务的平均耗时是否显著缩短。数据收集上来后我习惯性地先看了一眼直方图和Q-Q图感觉分布似乎有点“右偏”但又不那么明显。为了严谨起见我决定跑一个正式的正态性检验。当时我脑子里第一个蹦出来的就是大名鼎鼎的Shapiro-Wilk检验因为它被公认为是最有效的正态性检验方法之一。然而当样本量超过5000时我常用的那个R语言包直接报错了提示样本量过大。这让我不得不去工具箱里翻找其他工具于是Shapiro-Francia检验进入了我的视野。这次经历让我意识到很多数据分析师和研究者都知道要用正态性检验但往往停留在“知道用Shapiro-Wilk”的层面对于其原理、适用边界以及像Shapiro-Francia这样的“备选方案”了解不深。正态性假设是众多统计模型如t检验、方差分析、线性回归的基石误用检验方法或者错误解读结果轻则影响模型效率重则可能导致完全错误的结论。今天我就结合自己的实操经验把Shapiro-Wilk和Shapiro-Francia这两个紧密相关的检验方法掰开揉碎了讲清楚重点不止于如何使用更在于理解它们为何被设计出来以及在什么场景下该选择谁。简单来说Shapiro-Wilk检验是检验正态性的“黄金标准”尤其适用于中小样本通常指n5000。而Shapiro-Francia检验可以看作是Shapiro-Wilk检验在大样本下的一个有效近似和扩展。它们核心思想同源都基于顺序统计量的相关性但在计算细节和适用规模上有所不同。理解这对“兄弟”检验能让你在面对不同规模的数据时都能做出稳健的正态性判断。2. 理解核心思想基于顺序统计量的相关性检验要弄懂Shapiro-Wilk (SW) 和 Shapiro-Francia (SF) 检验不能只停留在调用函数、查看p值的层面。它们的魅力在于其精巧的统计思想通过检验样本数据的分位数与标准正态分布分位数是否成良好的线性关系来判断总体是否服从正态分布。2.1 正态分布的Q-Q图原理我们可以从一个更直观的工具——Q-Q图分位数-分位数图说起。当我们怀疑一组数据来自正态分布时会做这样一件事将样本数据从小到大排序得到顺序统计量x_(1) ≤ x_(2) ≤ ... ≤ x_(n)。这些样本点可以看作是对总体分位数的一个估计。计算标准正态分布均值为0标准差为1对应的理论分位数m_i。通常m_i取标准正态分布的分位点一个常用的近似是Φ^{-1}((i - 3/8) / (n 1/4))其中Φ^{-1}是标准正态累积分布函数的反函数。这个公式是为了对理论分位数进行位置调整使其更优。以理论分位数m_i为横坐标样本顺序统计量x_(i)为纵坐标绘制散点图。如果样本真的来自正态分布那么这些散点应该大致排列在一条直线上。这条直线的斜率对应样本的标准差截距对应样本的均值。Q-Q图的本质就是可视化地检验这种线性关系。Shapiro-Wilk和Shapiro-Francia检验则将这个直观的想法转化为了一个严格的统计检验量。它们的目标是量化样本分位数与理论分位数之间的线性相关程度。2.2 Shapiro-Wilk检验的统计量构造Shapiro-Wilk检验的统计量W定义如下W (Σ_{i1}^n a_i * x_(i))^2 / Σ_{i1}^n (x_i - x̄)^2其中x_(i)是第 i 个顺序统计量第 i 小的样本值。x̄是样本均值。a_i是一组精心计算的权重系数它是基于标准正态分布顺序统计量的期望值、协方差矩阵计算得到的。这些系数可以查表获得也是现代统计软件内置的。这个公式的巧妙之处在于分子部分Σ a_i * x_(i)可以理解为用最优的权重a_i对顺序统计量进行线性组合得到一个对正态分布数据最敏感的“得分”。如果数据完全正态这个线性组合的平方分子将非常接近基于样本方差计算的总平方和分母从而使W值接近1。如何理解权重a_i你可以把a_i想象成一把“尺子”这把尺子是根据“如果数据完全正态顺序统计量应该怎么分布”这一标准提前锻造好的。我们用这把尺子去测量样本数据。如果数据正态测量结果分子和用普通方法测量的结果分母就会基本一致。如果数据严重偏离正态如严重偏态或有异常值这把特制的尺子就会量出一个明显偏小的值导致W统计量显著小于1。因此Shapiro-Wilk检验的假设是零假设 (H0):样本数据来自一个正态分布的总体。备择假设 (H1):样本数据不是来自一个正态分布的总体。检验时我们计算W统计量及其对应的 p-value。如果 p-value 小于显著性水平如0.05我们就有足够的证据拒绝“数据正态”的零假设。2.3 Shapiro-Francia检验的诞生与简化Shapiro-Wilk检验虽然功效很高但在计算机尚未普及的时代其计算有个痛点权重系数a_i依赖于样本量n并且需要通过复杂的矩阵运算涉及正态顺序统计量的协方差阵的逆来获得。对于大样本这个计算非常耗时甚至难以实现。Shapiro和Francia在1972年提出了一个简化版本。Shapiro-Francia检验的统计量W定义为W (Σ_{i1}^n b_i * x_(i))^2 / Σ_{i1}^n (x_i - x̄)^2看公式是不是很像关键区别在于权重b_i。在SF检验中b_i不再基于复杂的协方差矩阵逆计算而是直接取标准正态分布顺序统计量的期望值m_i即b_i m_i / sqrt(Σ m_j^2)。换句话说SF检验的权重直接使用了理论分位数本身经过标准化而SW检验的权重则考虑了顺序统计量之间的相关性协方差结构。这种简化带来了什么计算极大简化m_i的计算比SW的a_i简单得多使得SF检验能够轻松处理大样本数据。思想一致SF检验依然衡量的是样本分位数与理论分位数之间的线性相关性可以看作是SW检验思想的一种近似实现。大样本优势当样本量很大时顺序统计量之间的相关性结构对最终检验结果的影响相对变小此时SF检验的近似效果就非常好功效与SW检验相近。所以你可以把Shapiro-Francia检验理解为Shapiro-Wilk检验为了攻克大样本计算难题而诞生的一个“轻量级”或“近似”版本。在中小样本下SW更精确在大样本下SF更实用。3. 实战对比在R与Python中应用两种检验理论说得再多不如亲手跑一遍代码。下面我分别在R和Python环境中演示如何使用这两种检验并解读结果。我会使用同一组模拟数据来确保对比的公平性。3.1 数据准备与场景设定我们模拟三种情况的数据正态数据从标准正态分布N(0,1)中随机抽取。偏态数据从自由度为5的卡方分布χ²(5)中抽取这是典型的右偏分布。厚尾数据从自由度为3的t分布t(3)中抽取它具有比正态分布更厚的尾部。我们将分别用中小样本n50和大样本n5000进行测试。# R 语言数据准备 set.seed(123) # 确保结果可重现 n_small - 50 n_large - 5000 # 生成数据 norm_small - rnorm(n_small) skew_small - rchisq(n_small, df5) tail_small - rt(n_small, df3) norm_large - rnorm(n_large) skew_large - rchisq(n_large, df5) tail_large - rt(n_large, df3)# Python 语言数据准备 (使用 numpy 和 scipy) import numpy as np from scipy import stats import pandas as pd np.random.seed(123) n_small 50 n_large 5000 # 生成数据 norm_small np.random.randn(n_small) skew_small np.random.chisquare(5, n_small) tail_small np.random.standard_t(3, n_small) norm_large np.random.randn(n_large) skew_large np.random.chisquare(5, n_large) tail_large np.random.standard_t(3, n_large)3.2 R语言中的实现与解读在R中shapiro.test()函数是内置的用于执行Shapiro-Wilk检验。对于Shapiro-Francia检验我们可以使用nortest包中的sf.test()函数。# 安装并加载nortest包如果未安装 # install.packages(nortest) library(nortest) # 对中小样本n50进行检验 cat(--- 中小样本 (n50) 检验结果 ---\n) cat(\n1. 正态数据:\n) print(shapiro.test(norm_small)) # SW检验 print(sf.test(norm_small)) # SF检验 cat(\n2. 偏态卡方数据:\n) print(shapiro.test(skew_small)) print(sf.test(skew_small)) cat(\n3. 厚尾t分布数据:\n) print(shapiro.test(tail_small)) print(sf.test(tail_small)) # 对大样本尝试SW检验预期会失败或警告 cat(\n--- 大样本 (n5000) 尝试SW检验 ---\n) # shapiro.test(norm_large) # 这行通常会报错或警告注释掉 cat(Shapiro-Wilk检验通常限制n在5000以内此处可能报错。\n) cat(\n--- 大样本 (n5000) SF检验结果 ---\n) cat(\n1. 正态数据:\n) print(sf.test(norm_large)) cat(\n2. 偏态数据:\n) print(sf.test(skew_large)) cat(\n3. 厚尾数据:\n) print(sf.test(tail_large))结果解读要点对于正态数据无论是SW还是SF检验p-value通常都很大远大于0.05这意味着我们没有证据拒绝正态性假设。注意“不拒绝”不等于“证明是正态的”只是说在当前数据下正态性假设是合理的。对于非正态数据偏态、厚尾p-value通常会非常小小于0.05这时我们拒绝正态性假设。你可以对比SW和SF的p-value在中小样本下SW的p-value往往更小说明它对偏离正态的情况更敏感功效更高。大样本情况shapiro.test()在R中对样本量有限制通常为3到5000。当你尝试对5000个样本做SW检验时很可能会收到警告或错误。而sf.test()则可以顺利运行并给出明确的结果。在大样本下即使数据只有轻微的非正态检验的威力也会非常强很容易得到p-value 0.05的结果。这时需要结合Q-Q图等工具判断非正态的程度是否严重到影响后续分析。3.3 Python语言中的实现与解读在Python的SciPy库中scipy.stats.shapiro提供了Shapiro-Wilk检验。SciPy没有直接提供Shapiro-Francia检验但我们可以使用statsmodels库或者根据公式手动计算权重b_i。这里展示使用statsmodels的方法。from scipy.stats import shapiro # 安装并导入statsmodels: pip install statsmodels from statsmodels.stats.diagnostic import normal_ad # 注意这个函数是Anderson-Darling检验不是SF。 # statsmodels未直接提供SF检验下面演示一种基于公式的计算方法。 def shapiro_francia_test(data): 手动计算Shapiro-Francia检验的W‘统计量和p值。 参考公式: W‘ (Σ b_i * x_(i))^2 / Σ (x_i - mean)^2 其中 b_i m_i / sqrt(Σ m_j^2) m_i 是标准正态分位数。 from scipy.stats import norm import numpy as np from scipy.special import erfinv x np.sort(data) n len(x) x_mean np.mean(x) # 计算理论分位数 m_i使用常见的Blom公式近似 # m_i Φ^{-1}((i - 3/8) / (n 1/4)) i np.arange(1, n1) p (i - 3/8) / (n 1/4) m norm.ppf(p) # 标准正态分布的百分位点函数 # 计算权重 b_i b m / np.sqrt(np.sum(m**2)) # 计算 W‘ 统计量 numerator np.sum(b * x) ** 2 denominator np.sum((x - x_mean) ** 2) W_prime numerator / denominator # 计算p-value需要查表或使用近似分布这里使用一个基于β分布的近似转换 # 注意这是一个简化近似对于严格的科研建议使用R的nortest包或已验证的算法。 u np.log(n) v np.log(u) mu -1.2725 1.0521 * (v - u) sigma 1.0308 - 0.26758 * (v 2/u) z (np.log(1 - W_prime) - mu) / sigma # 经过变换的统计量近似服从标准正态 p_value norm.sf(z) # 使用生存函数计算上尾概率 return W_prime, p_value # 对中小样本进行检验 print(--- 中小样本 (n50) 检验结果 ---) print(\n1. 正态数据:) W_sw, p_sw shapiro(norm_small) print(f Shapiro-Wilk: W{W_sw:.5f}, p{p_sw:.5f}) W_sf, p_sf shapiro_francia_test(norm_small) print(f Shapiro-Francia: W‘{W_sf:.5f}, p{p_sf:.5f}) print(\n2. 偏态卡方数据:) W_sw, p_sw shapiro(skew_small) print(f Shapiro-Wilk: W{W_sw:.5f}, p{p_sw:.5f}) W_sf, p_sf shapiro_francia_test(skew_small) print(f Shapiro-Francia: W‘{W_sf:.5f}, p{p_sf:.5f}) print(\n3. 厚尾t分布数据:) W_sw, p_sw shapiro(tail_small) print(f Shapiro-Wilk: W{W_sw:.5f}, p{p_sw:.5f}) W_sf, p_sf shapiro_francia_test(tail_small) print(f Shapiro-Francia: W‘{W_sf:.5f}, p{p_sf:.5f}) # 对大样本进行检验主要用SF print(\n--- 大样本 (n5000) 检验结果 (主要展示SF) ---) print(\n1. 正态数据:) # SciPy的shapiro函数可以处理大样本但官方文档注明适用于n5000超过可能不准确。 try: W_sw, p_sw shapiro(norm_large) print(f Shapiro-Wilk: W{W_sw:.5f}, p{p_sw:.5f}) except Exception as e: print(f Shapiro-Wilk 出错: {e}) W_sf, p_sf shapiro_francia_test(norm_large) print(f Shapiro-Francia: W‘{W_sf:.5f}, p{p_sf:.5f}) print(\n2. 偏态数据:) W_sf, p_sf shapiro_francia_test(skew_large) print(f Shapiro-Francia: W‘{W_sf:.5f}, p{p_sf:.5f}) print(\n3. 厚尾数据:) W_sf, p_sf shapiro_francia_test(tail_large) print(f Shapiro-Francia: W‘{W_sf:.5f}, p{p_sf:.5f})注意上述Python中的shapiro_francia_test函数是一个教学演示版本其p-value计算依赖于特定的近似公式。在生产环境或严肃的科研中建议通过R的nortest包、专门的Python库如pingouin或经过广泛验证的算法来执行Shapiro-Francia检验以确保结果的准确性。Python结果解读与R类似在中小样本下两种检验对非正态数据都能给出显著的p值。对于大样本的正态数据即使数据是生成的完美正态p值也可能是一个极小的数字如0.02这是因为大样本下检验的灵敏度极高能检测到极微小的、无实际意义的偏离。此时绝不能仅凭p0.05就断定数据“非正态”且不可用必须结合效应量、Q-Q图或领域知识综合判断。4. 如何选择与正确解读避开正态性检验的常见陷阱掌握了两种检验的使用方法后更关键的是如何在实战中做出正确选择并合理解读结果。很多分析错误都发生在这个环节。4.1 SW vs SF选择决策树面对一份数据我通常会遵循以下流程来决定使用哪种检验graph TD A[开始需要正态性检验] -- B{样本量 n 是多少}; B -- n ≤ 5000 -- C[首选 Shapiro-Wilk 检验]; B -- n 5000 -- D[使用 Shapiro-Francia 检验]; C -- E{SW检验结果p值如何}; E -- p ≥ α (如0.05) -- F[不拒绝正态性假设可结合图形判断]; E -- p α -- G[拒绝正态性假设数据非正态]; D -- H{SF检验结果p值如何}; H -- p ≥ α -- I[不拒绝正态性假设需警惕大样本灵敏度]; H -- p α -- J[拒绝正态性假设需评估非正态程度]; subgraph 图形辅助判断 F -- K[绘制Q-Q图、直方图、箱线图]; I -- K; G -- L[严重偏态/异常值考虑数据转换或非参数方法]; J -- L; end决策逻辑详解样本量是首要标准这是最硬性的规则。如果你的样本量在5000以内Shapiro-Wilk检验是毋庸置疑的首选因为它具有最高的统计功效即正确识别非正态数据的能力。当样本量超过5000时要么你使用的软件会限制SW检验如R的shapiro.test要么其内部计算可能变得不稳定或低效此时Shapiro-Francia检验是更合适、更稳定的选择。理解大样本下的“灵敏度悖论”统计检验的威力功效随着样本量的增加而增加。这意味着当你的样本量非常大比如数万甚至更多时即使是微不足道的、对实际分析毫无影响的非正态性也极有可能导致检验的p-value小于0.05。例如一个来自非常接近正态分布的总体的大样本SW或SF检验几乎总会拒绝零假设。因此在大样本情况下仅仅因为p0.05就断言“数据不满足正态假设方法无效”是草率的。你必须结合可视化工具如Q-Q图来评估偏离的严重性。如果Q-Q图上的点基本落在一条直线附近只有尾部有极其轻微的偏离那么这种正态性的轻微违背对于许多稳健的统计方法如线性回归来说是可以接受的。检验的目的不是“证明正态”这是一个根本性的观念。正态性检验的零假设是“数据来自正态分布”。当p值较大时我们只能说“在当前数据下没有足够证据拒绝正态性假设”这不等于“数据被证明是正态分布的”。统计检验只能证伪不能证实。4.2 结果解读的四大陷阱与应对策略根据我多年的经验解读正态性检验结果时最容易踩进以下几个坑陷阱一只看p值不看图形。问题得到p0.06就长舒一口气觉得万事大吉得到p0.03就如临大敌觉得分析做不下去了。对策永远将统计检验与图形化诊断结合使用。绘制Q-Q图、直方图、核密度估计图。如果p值在临界值附近如0.04-0.06图形显示只有轻微偏离那么数据可能对后续分析影响不大。如果p值很小但图形显示只是个别异常值导致的那么可以考虑检查或处理异常值后重新检验。陷阱二忽略样本量对p值的绝对影响。问题用同样的方法分析两个不同规模的数据集A项目n30p0.4B项目n3000p0.04就认为B项目的数据质量更差。对策牢记“大样本灵敏度悖论”。对于B项目你需要去Q-Q图上看看偏离到底有多严重。很可能那一点点偏离在图形上根本看不出来。这时报告结果时应同时呈现p值和诊断图并说明“虽然SF检验拒绝正态性假设(p0.04)但Q-Q图显示偏离程度极小考虑到大样本量下检验的高灵敏度我们认为数据对正态假设的违背在可接受范围内。”陷阱三对非正态数据束手无策或盲目进行数据转换。问题一旦检验拒绝正态假设就认为t检验、方差分析等参数方法完全不能用。对策评估后续分析方法对正态性的稳健性。中心极限定理的庇佑对于均值比较的检验如单样本t检验、独立样本t检验如果样本量不是特别小通常每组30即使原始数据非正态样本均值的分布也近似正态。这时t检验通常是稳健的。考虑数据转换对于明显的偏态数据可以尝试对数转换、平方根转换、Box-Cox转换等使数据更接近正态。但转换前要思考转换后的结果在业务上是否可解释例如分析用户收入数据对数转换后分析的是“收入的对数”其结论需要谨慎回溯到原始收入尺度。转向非参数方法如果数据严重非正态且样本量小或者转换无效非参数方法是可靠的选择如Mann-Whitney U检验代替独立t检验Kruskal-Wallis检验代替单因素方差分析。陷阱四误用检验——对重复测量数据或分组数据整体检验。问题在做重复测量方差分析前对所有的测量值混在一起做一次Shapiro-Wilk检验。对策正态性假设通常针对的是模型的残差或者各组内的数据。对于上述情况正确的做法是对于分组比较如多组间均值比较应该分别检验每组数据的正态性。对于回归或方差分析应该检验模型残差的正态性而不是因变量Y本身的正态性。你可以用shapiro.test(resid(your_model))来检验。4.3 一份完整的正态性评估报告应包含什么当你需要在报告或论文中陈述数据的正态性时不要只写一句“经Shapiro-Wilk检验数据满足正态分布(p0.05)”。一个负责任的评估应该包含更多信息检验方法及理由例如“由于样本量n1205000我们采用功效较高的Shapiro-Wilk检验进行正态性评估。”检验结果报告检验统计量W值和精确的p值例如p0.173而不是p0.05。图形化证据附上Q-Q图并在文中描述“Q-Q图散点大致围绕基准线分布未见系统性偏离。”综合结论结合检验和图形给出判断。例如“综合Shapiro-Wilk检验结果(p0.173)及Q-Q图诊断我们认为该组数据没有严重偏离正态分布满足后续参数检验如t检验的正态性假设要求。”对于大样本或边缘情况如果p值在临界值附近或样本量巨大需要特别说明。例如“尽管Shapiro-Francia检验p值为0.04但考虑到样本量巨大(n8000)时检验灵敏度极高且Q-Q图仅显示尾部极轻微偏离我们认为这种偏离对基于均值的分析影响甚微。”5. 超越SW与SF其他正态性检验工具一览虽然Shapiro-Wilk和Shapiro-Francia是我们手中的利器但工具箱里还有其他工具了解它们有助于在特定场景下做出更佳选择。5.1 其他常用检验方法速览检验方法核心思想优点缺点适用场景Kolmogorov-Smirnov (K-S)比较样本累积分布函数与理论正态累积分布函数的最大垂直距离。非参数检验不依赖于具体的分布参数均值和方差可用于任何分布的拟合优度检验。对正态性的检验功效通常低于SW检验尤其在中部差异的检测上不敏感。更适用于完全指定的分布检验。当需要比较样本是否来自一个完全已知参数已知的特定分布时。对于复合假设参数未知需估计的正态性检验不推荐。Anderson-Darling (A-D)类似K-S但对分布尾部的差异给予更高的权重。统计量是加权平方距离的积分。对尾部偏离非常敏感功效很高尤其在检测偏态和峰度偏离时。许多软件支持。计算比SW稍复杂但在现代计算机上不是问题。临界值表不如SW普及。特别关注分布尾部是否符合正态时如金融风险建模中极端值的分布。是SW检验的一个有力竞争者。Lilliefors检验K-S检验的改良版专门用于当正态分布的参数均值、方差未知且需要从样本中估计的情况。解决了K-S检验在参数估计时临界值不准的问题专为正态性检验优化。功效一般仍不及SW检验。作为K-S检验的改进版在历史代码或特定领域仍有应用但新项目首选SW或A-D。Jarque-Bera检验基于样本偏度三阶矩和峰度四阶矩与正态分布偏度0峰度3的差异。计算简单思想直观直接检验“对称性”和“尾部厚度”这两个关键特征。对大样本敏感小样本时功效不佳。对某些非正态分布如均匀分布不敏感。常用于经济、金融领域的时间序列分析作为初步的、快速的正态性筛查。5.2 如何构建你的正态性诊断工作流在实际项目中我通常不会只依赖一种检验。一个稳健的工作流如下第一眼描述性统计与可视化计算并观察偏度和峰度。对于标准正态偏度接近0峰度接近3。绝对值过大的偏度如|2|或峰度如|4|是强烈的警告信号。绘制直方图叠加正态曲线、核密度估计图获得对数据分布形状的直观感受。箱线图有助于快速识别中位数、四分位距和异常值。核心诊断Q-Q图与Shapiro-Wilk/Shapiro-Francia检验绘制Q-Q图这是最直观有效的工具。关注点是否在一条直线附近特别是中间部分。系统性弯曲C形或S形表示偏态尾部偏离表示峰度问题。根据样本量选择SW或SF检验获取量化的p值证据。交叉验证与深度排查如果结果存疑如p值在0.05边缘使用Anderson-Darling检验进行交叉验证。它对尾部异常更敏感可以提供另一个视角。如果怀疑是少数异常值导致拒绝正态假设可以尝试剔除异常值后重新检验和绘图需谨慎必须有合理理由。对于分组数据务必按组别分别进行上述诊断。决策与行动通过诊断如果图形良好检验p值不显著且样本量适中则放心使用参数方法。轻微偏离如果只是轻微偏态/厚尾且样本量较大可以依赖中心极限定理继续使用参数方法如t检验或考虑使用稳健标准误。严重偏离如果图形显示严重非正态如高度偏态、多峰且检验p值很小则应优先考虑数据转换如对数转换。使用非参数检验。使用基于秩次的参数方法如一些稳健回归方法。5.3 一个综合案例用户活跃时长分析假设我们分析两款APP的日均用户活跃时长分钟数据如下APP A:n_A 45数据大致对称但有一个极端高值。APP B:n_B 2800数据轻度右偏。我的诊断步骤对APP A数据绘制箱线图发现一个明显异常值可能是记录错误。绘制Q-Q图发现除去该点后其他点基本在直线上。Shapiro-Wilk检验p0.003拒绝正态。处理与业务方确认该异常值是否为错误数据。若是则修正或剔除后重新分析剔除后p0.12。若无法处理则报告中注明异常值存在并考虑使用非参数的Mann-Whitney U检验进行比较同时汇报中位数和四分位距。对APP B数据Shapiro-Francia检验p0.01。但查看Q-Q图发现数据点在中段完美贴合直线仅在右尾轻微上翘。计算偏度为0.8属于轻度偏态。处理由于样本量巨大检验灵敏度高此轻微偏态被检测出。考虑到后续可能进行两独立样本t检验比较均值。样本量巨大根据中心极限定理样本均值的分布近似正态。轻度偏态对t检验的Type I错误率影响有限。结论在报告中说明“数据存在轻度右偏但鉴于大样本量我们仍采用t检验进行均值比较结果具有稳健性。” 同时也可以尝试对数转换比较转换前后结论是否一致以增强说服力。这个案例说明正态性检验不是一个简单的“是/否”开关而是一个需要结合统计量、可视化、样本量和实际业务背景进行综合判断的诊断过程。Shapiro-Wilk和Shapiro-Francia检验是这个过程中最核心、最可靠的量化工具但熟练的数据分析师必须知道如何正确地使用和解读它们让数据自己开口说话而不是被单一的p值牵着鼻子走。本文还有配套的精品资源点击获取