核密度估计——从直方图到核密度(核函数)估计_带宽选择

参考

核密度估计(KDE)原理及实现-CSDN博客

机器学习算法(二十一):核密度估计 Kernel Density Estimation(KDE)_算法_意念回复-GitCode 开源社区

引言

        在统计学中,概率密度估计是一种重要的方法,用于估计连续型随机变量的概率密度函数。与基于假设的参数方法不同,概率密度估计是一种非参数方法,能够对数据进行平滑估计。其核心目的是通过对观察数据的平滑处理来揭示其潜在的分布特性,尤其在数据分布未知或没有假设具体分布模型时,概率密度估计成为理解数据基本特征的重要手段。

       概率密度估计方法可以分为直方图密度估计核密度估计两种。其中,直方图密度估计将数据划分为若干区间,通过计算每个区间内的频数来近似表示概率密度,是一种简单而直观的方法。而核密度估计则通过将每个观测值与一个核函数进行加权叠加,得到一个连续平滑的概率密度函数,用于更精细地描述数据的分布特性。

       一元密度估计在描述数据集中趋势、分布状况及多峰情况方面非常有效。这种方法在探索数据特征时提供了一种可靠且灵活的工具,能够帮助研究者理解数据的内在结构,尤其是在数据包含多样性和异常值时,密度估计的方法更显优势。因此,密度估计在统计分析、数据挖掘和机器学习等领域得到了广泛的应用。

一.直方图密度估计

       在直方图密度估计中,如何选择合适的区间数量(也称为组数)是一个关键问题。

        Sturges准则是一种常用的方法,用于确定直方图的最佳区间数量。Sturges准则的核心思想是,当数据样本量较小时,通过对数缩放的方法使得区间数量适中,以避免过度平滑或过度分割数据。这种方法适用于数据呈近似正态分布的情况,能够有效地平衡直方图的平滑性和分辨能力。然而,当样本量较大或者数据分布偏离正态分布时,Sturges准则可能会显得不足,产生较少的区间,从而导致直方图无法很好地捕捉数据的细节特征。

        为了解决这一问题,研究者们还提出了其他区间选择准则,例如Freedman-Diaconis准则Scott准则,这些方法在处理具有不同分布特征的数据时能够提供更为灵活和精确的区间划分。

1.1 Sturges准则

       Sturges准则的核心思想是,当数据样本量较小时,通过对数缩放的方法使得区间数量适中,以避免过度平滑或过度分割数据。这种方法适用于数据呈近似正态分布的情况,能够有效地平衡直方图的平滑性和分辨能力。Sturges准则的思想是通过样本总数的对数来限制分组数,以保持合理的分布假设。在一些特殊情况下,如样本来自二项分布(Binomial)或其他复杂分布时,可以使用这个准则进行分组。Sturges准则的分组区间的最佳宽度可以通过如下公式计算:

       其中 R 表示样本的极差,n 表示样本大小。通过这个公式,区间的宽度主要依赖于样本的大小,而非数据的实际分布。这种选择方式适用于从对称或单峰的总体中抽取的数据,但在某些情况下(如偏态分布或多峰分布),该准则可能并不适用。

1,3为默认分组的直方图;2,4是用Sturges准则

       如何通过直方图来估计数据的密度?

       当样本量为 n=1000,并基于对样本的直方图分组来估计相应的密度值。首先,为了从直方图中重新得到密度估计,需找到包含所关心点的区间,并计算相应的组频率。

       在默认的直方图中,x0=0.1 位于第 7 组,其中密度 f1(0.1)=0.38。而在 Sturges 分组的直方图中,x0​ 在第 6 组,f2(0.1)=0.3889306。换句话说,密度估计是通过分组加权得到的相对频率。结果显示用默认直方图密度估计0.1的概率密度为f1(0.1)=0.38,如果用Sturges 分组的直方图估计0.1的概率密度f2(0.1)=0.3889306。这两个估计值与理论标准正态密度的值 ϕ(0.1)=0.3969525 非常接近,但是用Sturges 分组的直方图估计的结果更接近理论值,说明密度估计的效果相对较好。

使用默认分组和Sturges准则进行直方图密度估计(部分代码与结果图)

1.2 Scott 正态参考准则

       Scott 正态参考准则用于选择最优(或较好)的光滑参数,以使得估计的均方误差最小。均方误差(MSE)用于度量估计函数 f(x)与真实密度函数 f^(x)之间的偏差。MSE 的定义如下:

       为了选择最佳带宽 h需要使得 MISE 最小化。根据 Fubini 定理可以得到:

      为了使得 MISE 最小,选择最优带宽

      这一带宽的选择使得 Asymptotic MISE(渐近 MISE)达到最小值:

     由于密度估计中的 f′′(x) 是未知的,因此无法直接通过上述公式计算最优带宽。Scott 提供了一个被称为“正态参考准则”的估计方法,用于在正态分布假设下获得合理的带宽。根据正态参考准则:

     其中\sigma \hat{}是数据标准差的估计。 当假设数据来自正态分布时(也可以理解为如果当样本量呈现比较明显的对称单峰,也可以考虑使用这个准则),可以通过经验公式来选择合适的带宽。

使用Scott 正态参考准则分组和R中默认的‘Sturges’准则进行直方图密度估计

     不难发现直接使用breaks = ‘scott’呈现的分组如蓝色的直方图显示,与我们根据经验准则选择的带宽不同(使用此准则时注意不要直接用R包里面的就行)根据经验公式选择的带宽使得分组更细使得数据的密度估计更平滑、准确

1.3 Freedman-Diaconis 准则

       如上面的数据集,我们可以很明显的看到数据集存在异常值,如果我们想尽量减小异常值的影响,就可以考虑Freedman-Diaconis 准则。

       Freedman-Diaconis 准则,它是一种用于选择直方图的最佳组距(带宽)的标准,特别是在数据包含异常值或偏态时,Freedman-Diaconis准则通常被认为更为稳健。Freedman-Diaconis准则旨在根据数据的四分位距(IQR,Interquartile Range)来选择最佳的组距(带宽)。具体公式如下:

       h 表示组距(带宽),是确定每个直方柱的宽度的关键参数。IQR 为样本四分位数间距,即数据在第 75 个百分位数与第 25 个百分位数之间的范围。IQR 对异常值(极端值)更加稳健,因此在数据包含离群值时,Freedman-Diaconis准则是更合理的选择。n表示样本量。Freedman-Diaconis准则中,组距与样本量的三次根成反比,即随着样本量增加,组距变窄,使直方图的分辨率更高。

       可以看到使用F-D准则,可以让异常值更远离我们的主要数据与Scott 正态参考准则进行比较,Scott 正态参考准则将数据分为9组,F-D准则将数据分为10组(其中有一组频数为0),在数据包含较多离群值或数据分布不服从正态假设时,F-D准则异常值更加鲁棒。

1.4 频率多边形密度估计

       频率多边形是对直方图的扩展和进一步的平滑处理方法。每个直方图的顶点被连接起来,形成一条连续的折线,这样能够更直观地展现数据的密度变化趋势。在频率多边形的基础上,可以进一步引入核密度估计来得到更加精细的分析结果。这种方法对数据分布的理解提供了一种简化和连续的表示形式,特别适用于需要对数据分布进行更平滑的分析场景。

       给出了频率多边形密度估计的最佳组宽的计算方法:

       其中,σ 表示数据的标准差,n 表示样本量。这个公式用于估计频率多边形的最佳组宽,以确保密度估计更加准确和平滑。如果是一个明显的偏态分布,可以使用 Scott 的方法对组宽进行修正。给出了一个计算组宽的公式:

      该公式通过乘以一个因子来得到适当且更小的组宽,从而更好地应对偏态分布。类似地,如果样本的尾部比正态分布更陡峭,那么可以推导出一个“峰态调整”的方法,以减少组宽,从而更精确地反映样本的密度特征。

       直方图尽管可以有效地描述数据的频率分布,但由于每个组之间是离散的,所以它在描述数据分布的连续性方面存在一定的局限性。而频率多边形通过将各个组的顶点相连,使得最终得到的密度估计曲线看起来更加连续和平滑,从而更好地反映了数据的整体分布趋势。

       我们需要了解密度函数(PDF)的一个重要性质:在整个定义域上的积分必须等于1

       通过积分来验证密度估计的方法。

       我们可以使用插值函数approxfun来对频率多边形的估计进行插值,然后使用integrate函数对其进行积分,计算其在整个定义域内的总和是否等于1。

      上方的代码展示了这一过程:首先通过approxfun函数创建了插值函数fpoly,然后使用integrate函数对其进行积分。在输出中我们可以看到积分的结果非常接近1,并且误差极小这就验证了这个频率多边形密度估计符合概率密度的基本性质。如果积分的结果与1相差较大,那么就说明我们的密度估计存在一些问题,可能是由于数据分布的异常或者在估计过程中的计算误差。这样一来,验证积分结果是否等于1就成为了检查密度估计准确性和可靠性的重要步骤。最后,在频率多边形密度估计的应用中,我们不仅要关注曲线形态是否合理,还必须通过数学手段验证它的正确性,确保它符合概率分布的要求。这对于我们在实际数据分析中保证模型的可靠性至关重要。

题外话:

你肯定能感受到带宽选择 h  的重要性,

后面到核密度估计,

ta会更重要!!!!!!!

1.5 平均移动直方图(Average Shifted Histogram, ASH)

     ASH 方法 是一种通过对直方图进行平移并取平均值来计算概率密度估计的非参数方法。相比于简单的直方图,ASH 能有效减少在组距选择上的误差,并得到一个更为平滑的密度估计。ASH 密度估计涉及将数据划分为多个区间,然后通过计算每个区间的频数并对这些区间进行平移得到的平均值。具体地:

(a)将原始样本分组,并计算每个组的频数。

(b) 通过设定多个平移区间 m,对原始分组位置进行移动,形成多组重叠直方图。

(c) 最后对每个移动后的直方图求均值,形成最终的 ASH 密度估计。

例子

对样本大小 n=100进行估计,用四个不同的直方图宽度(分别为 0、0.25、0.5 和 0.75)计算每个直方图中的区间计数(breaks)和 counts。找到包含 x=0.2x = 0.2x=0.2 的区间,进行求平均值计算,计算公式为:

或者通过构造一个网格宽度为 δ=h/m=0.25 的子区间构成的网来计算。点 x=0.2在区间 (−0.75,0.25),(−0.5,0.5),(−0.25,0.75),(0,1] 中,对应着第 14 个到第 20 个子区间,分组计数为 [1:12] [13:24] [25:35]。给出一般情况下 tj之间估计密度的加权平均公式:

example

可以看到,通过加权函数可以简化计算,要求左右两边各有 m−1 个空的分组。

二.  核密度估计

2.1理论推导

通过上面内容可以理解如下:

累积分布函数(CDF) F(x)=P(X≤x),用于描述随机变量小于或等于某个值 x 的概率。对于任意给定的数据集,我们可以通过样本来估计其分布函数,定义为:

其中,n 表示样本总数。

为了得到概率密度函数,可以通过定义差商的极限:

这相当于取样本数据在点 xxx 附近的变化率,以此估计其密度。我们可以通过将区间分割来估计概率密度:

其中,h 为带宽参数,表示区间的宽度。可以使用卷积核函数对密度进行平滑:

这里用到的核函数为单位矩形函数,取值为 1 当 ∣x−xi∣<1时,否则为 0。如果我们定义一个均匀分布的核函数 k(x),如下所示:

那么均匀核密度估计公式可以表示为:

这是利用核函数进行加权平均以平滑估计数据的分布特性

带宽参数 h 控制核函数的宽度,决定了平滑程度。(非常重要!!!!!!!!)

核函数 K(t) 的五个性质:

2.2核密度估计

    K(.)为核函数(非负、积分为1,符合概率密度性质,并且均值为0),h>0为一个平滑参数,称作带宽(bandwidth),也看到有人叫窗口。有很多种核函数,uniform,triangular, biweight, triweight, Epanechnikov,normal,等。

各种核函数的图像如图2.1:

2.1

    图 2.2 中展示了对标准正态分布的 100 个样本点使用不同的核函数进行核密度估计的结果,带宽固定为 h=0.5高斯核(Gaussian)红色虚线显示。高斯核具有平滑连续的特性,因此估计的曲线也是相对光滑的;Epanechnikov 核蓝色虚线显示,通常被认为是最优的核函数,因为它在均方误差意义下的效率最高;矩形核(Rectangular)绿色虚线表示,估计结果呈现出明显的块状特征,不够平滑;三角核(Triangular)紫色虚线显示,估计相对平滑,但比高斯核略差;余弦核(Cosine)橙色虚线显示,也能较好地反映数据的分布。不同核函数的曲线表现出不同的平滑效果,但大部分曲线最终都在正态分布上表现良好。

2.2

图 2.3 展示了对标准正态分布的 100 个样本点,在高斯核下使用不同带宽进行核密度估计的结果。带宽较小(h=0.05),核密度估计曲线非常不平滑,表现出对每个样本点的敏感性,出现了过拟合。带宽适中(h=0.5),估计曲线较为平滑,能较好地反映数据的整体分布。带宽进一步增大(h=1),曲线变得更加平滑,细节减少,整体特征保留。带宽较大(h=2),估计的曲线过于平滑,丢失了部分数据的细节。

可以看出选择不同的核函数对于核密度估计的影响没有选择带宽大小的影响大。怎么选择一个合适的带宽也是一个值得考虑的问题。

在实际中,样本分布不一定是正态的,因此有时候需要选择一个更加鲁棒的带宽估计公式。Silverman 提出了一个缩减带宽的公式:

其中 S为样本标准差,IQR为四分位距(Interquartile Range),使用最小值 σ 是为了确保带宽的选择既能反映样本的整体特征,也能够对异常值和极端值具有一定的鲁棒性。则在积分均方误差(IMSE)最小准则下的带宽为:

(类似于刚刚第一部分直方图的F-D准则)

Silverman 指出,在大多数情况下,这个缩减的带宽是一个很好的起点,即使样本分布不是正态的,它仍然能够提供一个较好的平滑效果。这使得该带宽选择方法在许多应用中都比较实用。带宽 h 的缩减有助于在存在离群值时,使得估计结果不至于受到极端数据点的过度影响。

用两种带宽计算方式,进行来自双峰分布的离散数据的核密度估计

   在样本数量较少的情况下(n=6),使用不同核函数进行核密度估计的效果,带宽固定为 h=2.5。样本点为:-6.66,-9.27,0.88, 11.27,5.20, 5.12,结果如图2.4所示。核密度估计的蓝色实线代表整体的密度估计,而红色虚线表示每个数据点对核函数的贡献。可以看到,不同的核函数曲线形式不同,但总体趋势相似。

   使用高斯核函数的核密度估计。高斯核是一种平滑且对称的核函数,在很多情况下是默认的选择。余玹核函数在边界处逐渐收敛到 0,相比高斯核,余弦核在某些位置的贡献稍微集中一些,呈现出一种周期性的光滑趋势。使用埃潘尼切尼科夫核的核密度估计,在理论上具有最小的均方误差(IMSE),在积分均方误差意义下是最优的。核函数的选择则取决于数据特性和具体需求,高斯核通常是默认选择,但其他核函数在某些情况下可以提供更好的结果,如 Epanechnikov 核在均方误差意义下是最优的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/33543.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

学习记录,正则表达式, 隐式转换

正则表达式 \\&#xff1a;表示正则表达式 W: 表示一个非字&#xff08;不是一个字&#xff0c;例如&#xff1a;空格&#xff0c;逗号&#xff0c;句号&#xff09; W: 多个非字 基本组成部分 1.字符字面量&#xff1a; 普通字符&#xff1a;在正则表达式中&#xff0c;大…

9.19GNU启动DEBUG

是因为 、 在Windows上&#xff0c;CMake默认不会生成make文件&#xff0c;而是生成Visual Studio项目文件&#xff08;如果你使用的是MSVC&#xff09;或其他IDE的项目文件&#xff0c;或者如果你指定了MinGW或Clang&#xff0c;它可能会生成Makefile&#xff08;但这通常不是…

Python 数据分析用库 获取数据(二)

Beautiful Soup Python的Beautiful Soup&#xff08;常被称为“美丽汤”&#xff09;是一个用于解析HTML和XML文档的第三方库&#xff0c;它在网页爬虫和数据提取领域具有广泛的应用。 作用 HTML/XML解析&#xff1a; Beautiful Soup能够解析HTML和XML文档&#xff0c;包括不…

4.STM32通信接口之SPI通信(含源码)---软件SPI与W25Q64存储模块通信实战《精讲》

经过研究SPI协议和W25Q64&#xff0c;逐步了解了SPI的通信过程&#xff0c;接下来&#xff0c;就要进行战场实战了&#xff01;跟进Whappy步伐&#xff01; 目标&#xff1a;主要实现基于软件的SPI的STM32对W25Q64存储写入和读取操作&#xff01; 开胃介绍&#xff08;代码基本…

并发框架disruptor实现生产-消费者模式

Disruptor是LMAX公司开源的高性能内存消息队列&#xff0c;单线程处理能力可达600w订单/秒。本文将使用该框架实现生产-消费者模式。一、框架的maven依赖 <!-- https://mvnrepository.com/artifact/com.lmax/disruptor --><dependency><groupId>com.lmax<…

红日靶场vulnstack (五)

前言 好久没打靶机了&#xff0c;今天有空搞了个玩一下&#xff0c;红日5比前面的都简单。 靶机环境 win7&#xff1a;192.168.80.150(外)、192.168.138.136(内) winserver28&#xff08;DC&#xff09;&#xff1a;192.168.138.138 环境搭建就不说了&#xff0c;和之前写…

SpringBoot中@Import和@ImportResource和@PropertySource

1. Import Import注解是引入java类&#xff1a; 导入Configuration注解的配置类&#xff08;4.2版本之前只可以导入配置类&#xff0c;4.2版本之后也可以导入普通类&#xff09;导入ImportSelector的实现类导入ImportBeanDefinitionRegistrar的实现类 SpringBootApplication…

Cursor+Devbox AI开发快速入门

1. 前言 今天无意间了解到 Cursor 和 Devbox 两大开发神器,初步尝试以后发现确实能够大幅度提升开发效率,特此想要整理成博客以供大家快速入门. 简单理解 Cursor 就是一款结合AI大模型的代码编辑器,你可以将自己的思路告诉AI,剩下的目录结构的搭建以及项目代码的实现均由AI帮…

Linux之socket编程(一)

前言 网络通信的目的 我们已经大致了解了网络通信的过程: 如果主机A想发送数据给主机B, 就需要不断地对本层的协议数据单元(PDU)封装, 然后经过交换设备的转发发送给目的主机, 最终解封装获取数据. 那么网络传输的意义只是将数据由一台主机发送到另一台主机吗&#xff1f; …

Nmap数据包分片解析 -f 选项

Nmap数据包分片解析 1. 什么是数据包分片&#xff1f; 在网络扫描中&#xff0c;数据包的大小和分片机制可能会影响扫描的隐蔽性。Nmap通过-f选项来触发数据包的分片。启用-f选项后&#xff0c;Nmap会将IP数据包分割成8字节或更小的片段。如果你使用-f -f&#xff08;或-ff&a…

JAVAWeb——maven、SpringBoot、HTTP、Tomcat

目录 1.maven a.概述 b.作用 c.仓库 b.坐标 c.依赖管理 2.SpringBoot 3.HTTP a.概述 b.请求协议 c.响应协议 d.协议解析 4.Tomcat a.Web服务器 b.Tomcat c.SpringBoot与Tomcat关系 1.maven a.概述 Maven是apache旗下的一个开源项目&#xff0c;是一款用于管理…

Modbus TCP转profibusDP网关接防撞雷达快速配置

在工业自动化领域中&#xff0c;不同的设备可能使用不同的通信协议。当需要将使用 ModbusTCP 协议的防撞雷达连接到ProfibusDP网络时&#xff0c;需要使用协议转换器来实现协议的转换。 本文将详细介绍如何通过ModbusTCP转ProfibusDP网关接入防撞雷达&#xff0c;并提供快速配…

centos 报 ping: www.baidu.com: Name or service not known

[rootlocalhost ~]$ ping www.baidu.com ping: www.baidu.com: Name or service not known解决办法&#xff1a; 首先要求检查特定文件&#xff08;/etc/resolv.conf&#xff09;内是否正确配置了 DNS sudo vim /etc/resolv.conf没有正确配置可以添加如下代码&#xff1a; n…

机器学习代谢组学

Nature与Science重磅&#xff01;AI与生物医药迎来百年来最重磅进展&#xff01;https://mp.weixin.qq.com/s/Vw3Jm4vVKP14_UH2jqwsxA 第一天上午&#xff1a; A1 代谢物及代谢组学的发展与应用 &#xff08;1&#xff09; 代谢与生理过程&#xff1b; &#xff08;2&#…

AD21-原理图的统一编号设置

AD21-原理图的统一编号设置 1.顶部工具栏&#xff1a; 2.进入“原理图标注配置”之后&#xff1a; &#xff08;Step1&#xff09;: &#xff08;Step2&#xff09;: &#xff08;Step3&#xff09;:点击“执行变更” 至此&#xff0c;完成标注

58 基于 单片机的温湿度、光照、电压、电流检测

所有仿真详情导航&#xff1a; PROTEUS专栏说明-CSDN博客 目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;采用dht11温湿度传感器检测温湿度&#xff0c;采用光敏电阻连接数模转换器读取光照&#xff0c;通过lcd1602显…

python源码实例游戏开发小程序办公自动化网络爬虫项目开发源码(250+个项目、26.6GB)

文章目录 源代码下载地址项目介绍预览 项目备注源代码下载地址 源代码下载地址 点击这里下载源码 项目介绍 python源码实例游戏开发小程序办公自动化网络爬虫项目开发源码(250个项目、26.6GB) 预览 项目备注 1、该资源内项目代码都经过测试运行成功&#xff0c;功能ok的情…

数字工厂管理系统如何做好供应链管理

在当今竞争激烈的制造业环境中&#xff0c;数字工厂管理系统已成为企业提升供应链管理效率与竞争力的关键。它借助数字化技术整合供应链各环节信息&#xff0c;实现高效协同与精准决策&#xff0c;为企业在市场中赢得先机奠定基础。 数字工厂管理系统首先要对供应链中的数据进行…

组蛋白修饰数据库

组蛋白修饰数据库 前言 组蛋白修饰是表观遗传控制的关键要素之一&#xff0c;在生物过程和疾病发展的调控中起着重要作用。组蛋白修饰可以通过标记特定的基因组位点来调节转录表观遗传&#xff0c;可以使用染色质免疫沉淀测序 &#xff08;ChIP-seq&#xff09; 进行定位。为…

gitlab-cicd部署安装与具体操作

一、安装 本例中是用安装包直接在ubuntu下安装的&#xff0c;也可以用docker镜像。 curl -LJO https://gitlab-runner-downloads.s3.amazonaws.com/latest/rpm/gitlab-runner_amd64.rpmrpm -i gitlab-runner_amd64.rpm 安装runner后&#xff0c;需要跟在runner所在服务器安装…