首页 > 其他分享 >统计量与常见统计分布(Datawhale开源学习)

统计量与常见统计分布(Datawhale开源学习)

时间:2024-08-07 21:59:02浏览次数:10  
标签:value 检验 开源 分布 Datawhale 数据 正态分布 统计

9.1.1 统计量与常见统计分布

概率和统计是一对孪生兄弟,前者通过已知总体的所有相关参数信息,来计算特定事件发生的概率;后者则是在总体未知的情况下,通过采样观察样本状态来反推估计总体。因此,尽管概率论中也有随机变量和分布律,数理统计中的统计分布与其仍然存在较大差别。但数理统计中统计量和分布的概念仍然需要借助概率论中的工具来研究。

统计量和统计分布是数理统计学中的两个核心概念,它们在数据分析和推断中扮演着重要的角色。以下是对统计量和统计分布的进一步解释,以及常见的四种统计分布的简要介绍:

统计量

统计量是针对样本数据计算的数值,用于估计总体参数。构造统计量的原因包括:

  1. 总体不可知:在许多情况下,我们无法获得总体的全部信息,因此需要通过样本来估计总体参数。
  2. 简化问题:统计量可以将复杂的数据集简化为几个关键数值,便于分析和解释。
  3. 推断总体:通过样本统计量,我们可以对总体参数进行估计和推断。

统计分布

统计分布描述了样本观测值的分布情况。它可以通过频率分布直方图或概率密度函数来表示。统计分布的类型取决于样本数据的特性和所采用的统计方法。常见的统计分布包括下面四种:

正态分布

定义:

正态分布是最基本的统计分布之一。正态分布是一种概率分布,其特征为钟形曲线,且曲线关于均值对称。

正态分布的概率密度曲线:

三个主要性质:

1)集中性,即曲线的峰值位于均值处;

2)对称性,即曲线关于均值对称;

3)均匀变动性,即正态分布曲线以均值为中心,向两侧均匀展开。

卡方分布

定义:

性质:

1)随机变量取值范围为非负实数;

2)随着自由度的增加,卡方分布趋近于正态分布;

3)卡方分布具有可加性,即若随机变量相互独立,则它们的平方和服从卡方分布。常见统计量例如样本方差等都服从卡方分布。

应用和检验步骤:

卡方分布指出观察频数与期望频数之间差异显著性,和其他假设一样,这取决于显著性水平。

  • 显性水平α进行检验(常用的显著性水平 0.05);

  • 检测标准:卡方分布检验是单尾检验且是右尾,右尾被作为拒绝域。于是通过查看检验统计量是否位于右尾的拒绝域以内,来判定期望分布得出结果的可能性;

  • 卡方概率表的使用;

  • 分类变量的卡方检验。

假设检验步骤:

  1. 确定要进行检验的假设(H0)及其备择假设(H1)

  2. 求出期望 E 和自由度 n

  3. 确定用于做决策的拒绝域(右尾)

  4. 计算检验统计量

  5. 查看检验统计量是否在拒绝域内

  6. 做出决策



t分布

定义:

性质:

1)随着自由度的增加,t分布趋近于正态分布;

2)t分布具有可加性,即若随机变量相互独立,则它们的t值之和仍服从t分布;

3)对于不同的自由度,t分布的形状会发生变化,但总是关于其均值对称。自由度n越小,t分布曲线越低平;自由度 n 越大,t分布曲线越接近标准正态分布曲线,当自由度无限大时,t分布就成了正态分布。

应用:

t检验流程:

  1. 建立假设、确定检验水准α H0:μ = μ0 (零假设) H1:μ ≠ μ0(备择假设) 双侧检验,检验水准:α=0.05

  2. 计算检验统计量

  3. 查相应界值表,确定P值,下结论

ps:t检验适用于两个变量均数间的差异检验

t分布在统计学中有着广泛的应用,尤其是在小样本数据分析、方差分析、回归分析等领域。由于t分布对样本大小和方差的变化较为稳健,因此在实践中常常用来进行假设检验和置信区间的计算。同时,t分布也是构建其他统计量的基础,如Z分布、F分布等。

F分布

定义:

性质:

随着自由度的增加,F分布趋近于正态分布;

F分布具有可加性,即若两个随机变量相互独立,则它们的F值之和仍服从F分布;

对于不同的自由度,F分布的形状会发生变化,但总是关于其均值对称。

应用:

方差比例检验,方差分析、回归分析和方差齐性检验。

F分布在统计学中主要用于方差分析和回归分析等领域。在方差分析中,通过比较组间方差和组内方差,可以检验不同组之间的差异是否显著。在回归分析中,通过计算决定系数R²,可以评估模型对数据的拟合程度。

几种分布的概率密度曲线

正态分布、卡方分布、t分布和F分布四种分布的概率密度函数。

正态分布曲线呈现出钟形形状,且关于均值对称。曲线下的面积表示概率,总面积为1。均值影响曲线对称轴,均值越大则曲线越偏右,而若标准差越大曲线最高点则越低。

卡方分布曲线随着自由度的增加而逐渐趋近于正态分布。在自由度较小时,曲线呈现偏态特征,而在自由度较大时,曲线接近对称。随着自由度的增加,曲线的形状逐渐变得对称和稳定。

t分布曲线随着自由度的增加而逐渐趋近于正态分布。在自由度较小时,曲线呈现出更宽的尾部和更尖的峰部,表现出更强的离散性。随着自由度的增加,曲线的形状逐渐变得平滑,并接近正态分布。

F分布曲线在分母自由度较小或分子自由度较大时,曲线呈现出更窄的峰部和更长的尾部,表现出更强的离散性。随着分母自由度的增加,曲线的形状逐渐变得平滑。

9.1.2 正态性检验

正态性检验的目的是为了检测一组数据是否服从正态分布,是否表现出正态分布的特性。正态性检验的方法有很多,包括QQ图、KS检验、SW检验、JB检验等等。这里当然不可能把它们全部讲出来,但可以对一些常见方法进行简要介绍:

S-W检验
  • Shapiro-Wilk检验是一种用于验证数据集是否符合正态分布的统计方法。该方法通过计算样本数据的顺序统计量,并比较这些观察值与理论正态分布的期望值之间的差异来进行评估。

Shapiro-Wilk检验的核心理念:

  1. 提出假设,它假设数据集遵循正态分布。

  2. 计算Shapiro-Wilk统计量W。这个统计量是一个衡量数据与正态分布拟合程度的指标,其基于实际观察值与理论正态分布期望值之间的差异。如果W值越接近1,则表明数据更符合正态分布。

  3. Shapiro-Wilk统计量W与临界值进行比较。临界值是根据特定的显著性水平(通常为5%)和数据集的大小计算得出的。这一比较过程是判断数据是否服从正态分布的关键步骤。

  4. 根据统计量W与临界值的比较结果,可以得出结论。如果W值显著低于临界值,则可以拒绝零假设,这意味着数据不服从正态分布。相反,如果W值不低于临界值,则不能拒绝零假设,这表明数据可能服从正态分布。核心统计量为:


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 test statistic:", statistic)
print("p-value:", p_value)

# 根据p-value做出判断
alpha = 0.05  # 常用的显著性水平
if p_value > alpha:
    print("不能拒绝零假设,数据可能服从正态分布")
else:
    print("拒绝零假设,数据不服从正态分布")

在实际应用中,当样本量在3到50之间时,我们倾向于看Shapiro-Wilk检验的结果,因为该检验对小样本数据更为敏感。

K-S检验
  • K-S检验(Kolmogorov-Smirnov检验)是一种非参数检验方法,用于检验一个样本是否来自特定的概率分布。对于正态分布的检验,K-S检验通过比较样本数据的累计分布函数与理论正态分布的累计概率分布函数,来判断样本数据是否符合正态分布。如果两个函数之间的最大偏差(D)在修正后小于临界值,则接受原假设,认为样本数据符合正态分布。否则,拒绝原假设,认为样本数据不符合正态分布。该方法在数据分析中广泛应用于正态分布的检验。

  • 将样本数据从小到大进行数据排序。

  • 计算ECDF,对于每个数据点xi,计算其在样本中的累积分布函数值。ECDF定义为:

其中,n是样本大小,I是指示函数,当xi≤x时,I为1,否则为0。

  • 选择一个理论分布CDF作为比较基准,例如正态分布。这个理论分布的CDF记为F(x)。
  • 计算最大差异D,对于每个数据点xi,计算ECDF和理论CDF之间的差异:

这里的max表示在所有可能的x值上取最大值。

  • 确定显著性水平,选择一个显著性水平,例如0.05,这代表了拒绝零假设的临界值。

  • 比较D与临界值,根据样本量和显著性水平,查找K-S检验的临界值表,确定D的临界值。如果计算出的D值大于临界值,则拒绝零假设,认为样本数据不来自所选的理论分布;如果D值小于或等于临界值,则没有足够证据拒绝零假设。

核心统计量为:


from scipy import stats
import numpy as np

# 创建一个示例数据集(这里使用正态分布数据)
data = np.random.normal(0, 1, 1000)  # 生成1000个观测值

# 执行K-S检验
# 检验数据是否来自标准正态分布的CDF
statistic, p_value = stats.kstest(data, 'norm', args=(0, 1))

# 打印结果
print("K-S test statistic:", statistic)
print("p-value:", p_value)

# 根据p-value做出判断
alpha = 0.05  # 常用的显著性水平
if p_value > alpha:
    print("不能拒绝零假设,数据可能服从标准正态分布")
else:
    print("拒绝零假设,数据不服从标准正态分布")

当样本量较小时,K-S检验可能不够敏感,难以检测到分布的微小偏差。K-S检验对数据的极端值比较敏感,极端值可能会对检验结果产生较大影响。当样本量超过5000时,SPSS等统计软件可能仅显示Kolmogorov-Smirnov检验的结果,因为K-S检验适合用于大数据样本的正态性检验。

J-B检验
  • J-B检验(Jarque-Bera检验)是一种用于检验数据是否服从正态分布的统计检验方法。它基于数据的偏度和峰度两个统计量,通过计算统计量的标准化值来判断数据是否符合正态分布。

计算过程包括:

  1. 计算偏度S和峰度K以衡量数据分布的不对称性和尖锐程度。

  2. 根据这些值计算J-B统计量,它是偏度和峰度的标准化值之和。

  3. 查找临界值表或使用软件计算临界值,将J-B统计量与临界值进行比较。如果J-B统计量大于临界值,则拒绝原假设(数据服从正态分布),认为数据不符合正态分布。如果J-B统计量小于临界值,则不能拒绝原假设,认为数据可能服从正态分布。

核心统计量为:

需要注意的是,J-B检验是一种非参数检验方法,对数据分布的假设较少,因此在某些情况下可能比其他参数检验方法更为稳健。

QQ图

QQ图是一种直观观察数据是否服从正态性的方法。QQ图可以用于检验一组数据是否服从某一分布,或者检验两个分布是否服从同一个分布。如果QQ图呈现出直线趋势,且数据点大致分布在直线的周围,则说明数据比较接近正态分布。如果数据点呈现出弯曲趋势或分散分布,则说明数据可能偏离正态分布。在画QQ图时,应注意数据的样本量大小、异常值情况等因素,这些因素可能会影响QQ图的准确度。需要注意的是,QQ图是一种直观的图形工具,可以辅助判断数据的正态性,但不能完全准确地判断数据的分布情况。

可以通过下面一个例子展示如何去进行正态性检验。首先,通过numpy生成一组服从标准正态分布的样本,这里将样本量扩充到1000个:

import numpy as np  

import matplotlib.pyplot as plt  

# 生成标准正态分布的数据  

data = np.random.normal(0, 1, 1000)  

#Python绘制QQ图的方法集成在statsmodels当中,通过如下方式调用:import statsmodels.api as sm

import matplotlib.pyplot as plt

# 创建 Q-Q 图,并增加 45度线

fig = sm.qqplot(data, line='45')

plt.show()

得到QQ图如图所示:

从图中可以看到,蓝色散点表示样本取值与理论分布的关系,横坐标为理论分布的各个分位点,而纵坐标为样本分位点,它们近似分布在一条直线附近,因此可以初步判断它们服从正态分布。但这只是一种现象,是否真的服从正态分布还是要通过假设检验说明。

正态性检验的方法集成在scipy.stats当中。以Shapiro-Wilk检验为例,通过在scipy.stats中引入shapiro方法,对上述样本检验如下:

import scipy.stats as st

# 执行Shapiro-Wilk正态性检验

statistic, p_value = st.shapiro(data)

# 输出检验结果

print("Shapiro-Wilk统计量:", statistic)

print("p-value:", p_value)

得到Shapiro-Wilk统计量等于 0.9973,概率值0.098>0.05,无法拒绝原假设。因此,认为数据data具备正态性。同样的,还可以进行K-S检验和J-B检验:

statistic_1, p_value_1 = st.kstest(data,'norm')
# 输出检验结果
print("K-S统计量:", statistic_1)
print("p-value:", p_value_1)

statistic_2, p_value_2 = st.jarque_bera(data)
# 输出检验结果
print("J-B统计量:", statistic_2)
print("p-value:", p_value_2)

得到的结果概率也都超过0.05,认为数据是服从正态分布的。在kstest函数中,如果要使用它进行正态性检验,要在后面的参数里选择’norm’表明需要做的检验是正态性检验。

标签:value,检验,开源,分布,Datawhale,数据,正态分布,统计
From: https://blog.csdn.net/2301_77942698/article/details/140913260

相关文章

  • 数据集可以自己找开源
    数据集可以自己找开源,比如GitHub上面的等等。比如这个:https://github.com/bstabler/TransportationNetworks/tree/master其他相关项目TRB网络建模委员会InverseVIsTraffic是一个开源存储库,它实现了一些针对单类和多类交通网络提出的逆变分不等式(VI)公式。该软件包还实现......
  • 谷歌统计接入
    一、要在go-zero项目中接入谷歌统计插件(GoogleAnalytics),你可以按照以下步骤操作:注册GoogleAnalytics账号并获取跟踪ID:访问https://analytics.google.com/并使用你的Google账户登录在你的go-zero项目中添加中间件来集成GoogleAnalytics:packagemiddlewareimport......
  • Java实现字符串中字符出现次数统计
    在编程过程中,我们经常需要对字符串进行处理。今天,我将为大家分享一个Java示例,用于统计字符串中每个字符出现的次数。让我们一起来看看吧!在日常生活中,我们经常会遇到需要统计字符串中字符出现次数的场景。例如,统计一篇文章中各个字母的出现次数,以便进行词频分析。本文将带大家......
  • (全网最详细的可运行的人流统计程序)基于OpenCV的实时视频处理系统
    OpenCV人脸检测OpenCV提供了多种人脸检测方法,包括基于Haar级联的传统方法和基于深度学习的现代方法。Haar级联是一种经典的机器学习算法,适用于实时应用,因为它可以快速处理图像。级联(Cascade)结构:Cascade分类器由多个简单的分类器组成,这些分类器按照一定的顺序级联起来。每个......
  • 最佳实践:解读GaussDB(DWS) 统计信息自动收集方案
    摘要:现在商用优化器大多都是基于统计信息进行查询代价评估,因此统计信息是否实时且准确对查询影响很大,特别是分布式数据库场景。本文详细介绍GaussDB(DWS)如何实现了一种轻量、实时、准确的统计信息自动收集方案。本文分享自华为云社区《【最佳实践】GaussDB(DWS)统计信息自动收......
  • .NET 免费开源工业物联网网关
    前言IoTClient是一个针对物联网(IoT)领域的开源客户端库,它主要用于实现与各种工业设备之间的通信。这个库是用C#编写的,并且基于.NETStandard2.0,这意味着可以用于多个版本的.NET,包括.NETFramework、.NETCore、.NET5及以上版本,以及Xamarin和UWP。项目介绍IoTClie......
  • renren开源项目发布
    1、前端:npmrunbuildserver{listen80;server_namelowcode.renren.io;location/{root/data/renren-lowcode-admin;indexindex.html;}} 2、后端部署:后端打包:mvninstallnohupjava-jarrenren-server.jar--spring.profile......
  • 推荐一款非常轻量级的开源媒体播放器:MPC-HC
    MediaPlayerClassicHomeCinema,简称MPC-HC,是一款简洁的媒体播放器,MediaPlayerClassic的延续版本,有32位和64位版本。MediaPlayerClassic是由名为"Gabest"的程序员建立,现在他仍然有维护这个程序。Gabest原先是以不公开源代码的方式开发MediaPlayerClassic,但后来......
  • 【项目实战】开源的即时通讯组件OpenIM入门介绍
    一、OpenIM是什么?IM,是即时通讯(InstantMessaging,简称IM)OpenIM,是一个开源的、强大的即时通讯组件。OpenIM,提供了完整的即时通讯服务功能。OpenIM,被设计为高并发、高可用、易于扩展的架构。OpenIM,适合构建企业级的即时通讯平台。OpenIM,由一群热爱开源技术的开发者创建......
  • 【数据保护】微软开源数据保护项目Presidio-中文文本扫描以及注意事项
    Presidio,源自拉丁语,寓意"保护"或"驻军",是由微软推出的一项开源数据保护计划。该项目致力于协助企业与开发者在处理数据时,快速识别并脱敏敏感信息。它能够识别文本和图像中的多种敏感数据,包括但不限于信用卡号码、个人姓名、地理位置和电话号码等,并通过定制化的格式进行脱敏处理......