Anderson-Darling正态性检验【重要统计工具】

Anderson-Darling正态性检验是一种用于确定数据集是否服从正态分布(也称为高斯分布或钟形曲线分布)的统计方法。它基于Anderson和Darling于1954年提出的检验统计量。该检验的基本原理和用途如下:

基本原理:

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

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

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

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

用途:

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

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

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

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

总之,Anderson-Darling正态性检验是一种重要的统计工具,可用于验证数据是否符合正态分布的假设,从而支持各种领域的分析和决策。

from scipy import stats
import numpy as np
 
# 创建一个示例数据集
data = np.random.normal(0, 1, 100)
 
# 执行Anderson-Darling正态性检验
result = stats.anderson(data)
 
# 输出检验结果
print("Anderson-Darling统计量:", result.statistic)
print("临界值:", result.critical_values)
if result.statistic > result.critical_values[2]:
    print("数据不服从正态分布")
else:
    print("数据可能服从正态分布")


print("--------------------------")
print("-检验的结果包括Anderson-Darling统计量、临界值、显著性水平以及适配结果,用于判断数据是否服从正态分布-")
print(result)
print(type(result))
print("--------------------------")
# Anderson-Darling统量
print("Anderson-Darling统计量:", result.statistic)

# 临界值
print("临界值:", result.critical_values)

# 显著性水平
print("显著性水平:", result.significance_level)

# 适配结果
fit_result = result.fit_result
print("适配结果 params:", fit_result.params)
print("适配结果 success:", fit_result.success)
print("适配结果 message:", fit_result.message)

Anderson-Darling统计量: 0.8746794117758157
临界值: [0.555 0.632 0.759 0.885 1.053]
数据不服从正态分布
--------------------------
----检验的结果包括Anderson-Darling统计量、临界值、显著性水平以及适配结果,用于判断数据是否服从正态分布-----
AndersonResult(statistic=0.8746794117758157, critical_values=array([0.555, 0.632, 0.759, 0.885, 1.053]), significance_level=array([15. , 10. ,  5. ,  2.5,  1. ]), fit_result=  params: FitParams(loc=-0.00916569417046395, scale=1.012016300795819)
 success: True
 message: '`anderson` successfully fit the distribution to the data.')

--------------------------
Anderson-Darling统计量: 0.8746794117758157
临界值: [0.555 0.632 0.759 0.885 1.053]
显著性水平: [15.  10.   5.   2.5  1. ]
适配结果 params: FitParams(loc=-0.00916569417046395, scale=1.012016300795819)
适配结果 success: True
适配结果 message: `anderson` successfully fit the distribution to the data.
[Finished in 5.0s]

你可能感兴趣的:(算法,人工智能,python,信息可视化,开发语言,matplotlib)