【概率统计】如何理解概率密度函数及核密度估计

文章目录

    • 概念回顾
    • 浅析概率密度函数
      • 概率值为0?
      • PDF值大于1?
      • 一个栗子
    • 核密度估计
      • 如何理解核密度估计
      • 核密度估计的应用
    • 总结

概念回顾

  1. 直方图(Histogram):直方图是最直观的一种方法,它通过把数据划分为若干个区间,并统计每个区间的数据个数,从而得到每个区间的频数。这样就形成了一个个的矩形,高度代表频数,宽度代表区间,面积代表数据量。但是直方图的缺点是对区间的选择敏感,不同的区间选择会得到不同的图形。

  2. 分布函数(Distribution function):分布函数通常是指累积分布函数,它表示随机变量小于等于某个值的概率。分布函数是非递减的,且在负无穷处值为0,在正无穷处值为1。然而,分布函数并非直观,数据的分布形状可能并不容易从中看出。

  3. 概率密度函数(Probability Density Function, PDF):概率密度函数是连续随机变量的分布函数的导数。它的值在任何单点上都可能大于1,但其在整个定义域上的积分(即面积)等于1。概率密度函数可以直观地反映出随机变量在各个取值上的可能性大小。

  4. 核密度函数(Kernel Density Function, KDF):核密度函数是核密度估计中所使用的核函数,常见的如高斯核函数、Epanechnikov核函数等。在核密度估计中,每一个数据点都会放置一个核函数,然后这些核函数会被叠加起来,得到一个平滑的概率密度估计。

  5. 核密度估计(Kernel Density Estimation, KDE):核密度估计是一种非参数的概率密度估计方法。它通过在每个观测数据点处放置一个核函数(即平滑函数),然后把这些核函数叠加起来,从而获得一个平滑的估计。相比于直方图,核密度估计可以得到更为平滑的密度曲线。

浅析概率密度函数

概率值为0?

PDF描述了一个连续随机变量在某个特定值上的可能性。但是,对于连续随机变量来说,取任何特定的一个值其概率本身都是0,**所以我们说PDF在某个点的值,实际上是表示随机变量落在这个点附近非常小的区间内的概率。**这是因为对于连续型随机变量来说,其取值范围是连续的,理论上可以取到无穷多个值。因此,任何一个具体的值被取到的概率都是无穷小的,可以视为0。

以一个简单的例子来说明,假设我们有一个从0到1均匀分布的连续随机变量,那么它可以取到任何在0到1之间的实数。那么它取到0.5的概率是多少呢?因为在0和1之间有无穷多个实数,所以取到0.5的概率就是1除以无穷大,即0。

尽管如此,我们仍然可以使用概率密度函数来描述连续随机变量在某个值附近的可能性。比如在上面的例子中,虽然取到0.5的概率为0,但是我们可以说在0.5附近(比如在0.499和0.501之间)取到值的概率是0.002。这个概率是通过PDF计算的。

PDF值大于1?

当我们说PDF的值在某个单点上可能大于1时,这个“大于1”是指的PDF的函数值,而不是概率。**对于连续随机变量的PDF,它的值并不直接代表概率,而是概率密度。**比如说,如果概率密度函数(PDF)在某点的值为2,那么这个2并不直接表示概率为2,而是表示单位长度(或者说,非常小的区间)内的概率密度为2。这个值越大,表示随机变量落在这个位置的可能性越大。但这并不意味着PDF的值就是概率,真正的概率是通过在某个区间内积分PDF得到的。

而当我们说PDF在其定义域上的积分(即面积)等于1时,这是因为所有可能的事件(也就是所有的小区间)的概率之和必须等于1。这个面积,就是把所有小区间的概率都加起来,所以必须等于1。所以,尽管PDF在某个单点上的值可能大于1,但是当你把所有的点(也就是所有的可能事件)都考虑进去后,总的概率还是1。

一个栗子

进一步,可以通过一个简单的例子来理解。假设我们有一组数据,它们服从标准正态分布(也就是均值为0,标准差为1的正态分布)。

首先,我们可以画出这个正态分布的概率密度函数。demo如下:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import normx = np.linspace(-5, 5, 100)
y = norm.pdf(x, 0, 1)plt.plot(x, y)
plt.title('Probability Density Function of Standard Normal Distribution')
plt.xlabel('x')
plt.ylabel('PDF')
plt.grid(True)
plt.show()

运行这段代码后将会画出一个标准的正态分布曲线。可以看到,曲线在x=0的地方达到最高点,大约为0.4。但这并不意味着x=0的概率为0.4,而是表示在x=0附近的概率密度最高。

然后,我们可以计算PDF在整个定义域(这里是[-5, 5])上的积分,也就是面积:

area = np.sum(y) * (x[1] - x[0])
print(area)  # 输出:1.0

运行这段代码后计算的是所有小区间(这里是100个点之间的小区间)的概率之和,结果应该接近1(由于数值计算的精度问题,可能不会完全等于1,但应该非常接近1)。

核密度估计

核密度估计是一种非参数的统计方法,用于估计连续随机变量的概率密度函数。也就是说,它不需要对数据的分布形状做出任何假设,这使得核密度估计能够适应各种不同的数据分布,从有限的样本中估计出整体的概率密度函数。

另外,核密度估计可以被看作是直方图平滑的一种方式,它在每个数据点位置放置一个以该点为中心的"核"(通常是正态分布形状),然后将所有核加起来并进行归一化,得到一个平滑的、连续的概率密度估计。

需要注意的是:核密度估计的结果不依赖于区间的划分,而是依赖于核的形状和宽度(即带宽)。带宽过小可能会导致过拟合,即在数据点位置有过高的峰值,而在数据点之间则几乎为0;带宽过大则可能会导致估计过于平滑,无法捕捉到数据的真实分布。

如何理解核密度估计

大数定律告诉我们,随着样本数量的增加,样本的平均值会趋近于总体的期望值。中心极限定理告诉我们,大量独立随机变量的和(或者平均值)会服从正态分布。而在核密度估计中,我们就是在每个数据点位置放置一个正态分布,然后将这些正态分布加起来并进行归一化,得到的便是一个平滑的、连续的概率密度估计。

可以这么理解,假设我们有一些数据点,它们分布在一条直线上。如果我们在每个点上都放置一个小山丘(正态分布可以看成是山丘的形状),然后将这些山丘叠加起来,我们就得到了一个连续的地形。这个地形就反映了数据的分布特征。山丘越高,说明数据在这个位置的密度越高,也就是说在这个位置附近取到值的概率越高。

进一步,以下代码展示了如何使用seaborn库进行核密度估计及核函数叠加过程:

import matplotlib.pyplot as plt
import numpy as np
import seaborn as snsfrom scipy import stats
from scipy.stats import normmu = 0
sigma = 1# 创建一个x轴上的点集
x = np.linspace(mu - 6*sigma, mu + 6*sigma, 100)
# 画出标准正态分布
plt.plot(x, stats.norm.pdf(x, mu, sigma))data = np.array([1, 2, 2, 2, 3, 3, 4, 4, 4, 4])
# 画出直方图
plt.hist(data, bins=4, density=True, alpha=0.5)
# 画出核密度估计曲线
sns.kdeplot(data, color='b')# 在每一个数据点的位置上放一个正态分布,然后将它们叠加
total = np.zeros(len(x))
for point in data:total += norm.pdf(x, point, 1)  # 这里1是正态分布的标准差total /= len(data)
# 画出叠加后的核密度估计曲线
plt.plot(x, total, color='r')
plt.show()

在这里插入图片描述

可以看出核密度估计的步骤:

  1. 选择一个核函数,通常可以选择正态分布函数。
  2. 在每个数据点的位置放置一个以该点为中心的核。
  3. 将所有的核叠加起来,并进行归一化,使得得到的函数在全体实数上的积分为1,这样就得到了一个平滑的、连续的概率密度估计。

核密度估计的应用

  1. 数据分析:核密度估计是数据分析中非常重要的工具,它可以用于数据的平滑处理,提供数据的概率分布信息,使得数据更加平滑,更便于分析。

  2. 图像处理:在图像处理中,核密度估计可以用于图像的平滑处理,消除图像中的噪声。同时,还可以用于图像的分割和边缘检测。

  3. 机器学习:在机器学习中,核密度估计是一种重要的非参数学习方法。它可以用于分类、聚类、异常检测等任务。

  4. 信号处理:在信号处理中,核密度估计可以用于信号的平滑处理,提高信号处理的准确性。

  5. 生物信息学:在生物信息学中,核密度估计可以用于基因表达数据的分析,帮助研究者更好地理解基因的功能。

  6. 金融:在金融领域,核密度估计可以用于估计金融资产的价格分布,帮助投资者做出更好的投资决策。

  7. 地理信息系统:在地理信息系统中,核密度估计可以用于空间数据的分析,例如人口分布、犯罪率等。

  8. 医学:在医学领域,核密度估计可以用于疾病的早期检测和预后评估

总结

直方图、分布函数、概率密度函数和核密度函数都是描述数据分布特性的工具或技术,它们之间有一定的联系和区别。

  1. 直方图是一种最简单的对数据分布进行可视化的方法,但它对数据的划分方式(即箱宽)比较敏感,不同的划分方式可能会得到完全不同的图像。

  2. 分布函数(一般指累积分布函数)给出了随机变量取值小于等于某个数的概率。在连续的情况下,分布函数的导数就是概率密度函数。

  3. 概率密度函数给出了随机变量落在某个小区间内的概率。直方图可以看作是对概率密度函数的一种简单粗糙的估计。

  4. 核密度估计则是一种更为精细的对概率密度函数的估计。它通过在每个数据点处放置一个核函数(类似于一个“平滑”的直方图),然后将这些核函数叠加起来,从而得到一个平滑的估计。

所以,这四者可以看作是从不同角度、不同精度去描述数据分布特性的方法。从直方图到核密度函数,描述的越来越精细;从分布函数到概率密度函数,描述的越来越具体。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件工程 - 第8章 面向对象建模 - 2 静态建模

静态建模(类和对象建模) 类和对象模型的基本模型元素有类、对象以及它们之间的关系。系统中的类和对象模型描述了系统的静态结构,在UML中用类图和对象图来表示。 类图由系统中使用的类以及它们之间的关系组成。类之间的关系有关联、依赖、泛…

Numpy进阶

NumPy进阶80题完整版

卓扬网林荣雄说:开盘30分钟便能看清股票的涨跌

在一些人眼中,炒股是一件再简单不过的事情了,他们认为只需要简单地买进卖出,就可以玩转股票了。话虽如此,但是要想真正立足于股市,简单的买进卖出是远远不够的。要想长期屹立于股市之中,广大股民还需要积累…

Adobe ColdFusion文件读取漏洞(CVE-2010-2861)

任务一: 复现漏洞 任务二: 尝试利用漏洞读取目标系统中的“opt/coldfusion8/license.txt"文件 1.环境搭建(网上写的密码是admin,就用admin) 2.看答案就是一层一层进行路径穿越攻击,这里要注意如果…

【动态规划】LeetCode-63.不同路径II

🎈算法那些事专栏说明:这是一个记录刷题日常的专栏,每个文章标题前都会写明这道题使用的算法。专栏每日计划至少更新1道题目,在这立下Flag🚩 🏠个人主页:Jammingpro 📕专栏链接&…

matlab diff和gradient

gradient 求解梯度。 示例 FX gradient(F) 返回向量 F 的一维数值梯度。输出 FX 对应于 ∂F/∂x,即 x(水平)方向上的差分。点之间的间距假定为 1。 使用方法: x -2:0.2:2; y x’; z x .* exp(-x.^2 - y.^2); [px,py] gradien…

数据库-MySQL之数据库必知必会17-21章

第17章 组 合 查 询 创建组合查询 可用UNION操作符来组合数条SQL查询。利用UNION,可给出多条SELECT语句,将它们的结果组合成单个结果集。 **例子:**假如需要价格小于等于5的所有物品的一个列表,而且还想包括供应商1001和1002生产…

【Linux】:信号(三)捕捉

信号捕捉 一.sigaction1.基本使用2.sa_mask字段 二.可重入函数三.volatile四.SIGCHLD信号 承接上文 果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号。由于信号处理函数的代码是在用户空间的,处理过程比较复杂,举例如下: 用户程序注册了SIGQUIT信…

MOS管的静电击穿问题

MOS管输入电阻很高,为什么一遇到静电就不行了? 静电击穿:由于静电的积累导致电压超过了原本MOS的绝缘能力,导致电流突然增大的现象。 MOS管基础知识了解: G极(gate)—栅极,不用说比较好认 S极(source)—源…

基于SSM框架的餐馆点餐系统的设计

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

2023年亚太杯数学建模A题——深度学习苹果图像识别(

Image Recognition for Fruit-Picking Robots 水果采摘机器人的图像识别功能 问题 1:计数苹果 根据附件 1 中提供的可收获苹果的图像数据集,提取图像特征,建立数学模型,计算每幅图像中的苹果数量,并绘制附件 1 中所有…

【Java 基础】13 异常

1.异常是什么 异常是指在程序运行过程中可能发生的、与正常执行流程不符的事件。这些事件可能包括错误、不合理的输入、资源不足等。在 Java 中,异常是通过 throw 语句抛出的,可以是 Java 内置的异常类,也可以是自定义的异常类。 2. 异常类…

阅读文献总结2023

阅读文献基于卷积神经网络多源融合的网络安全态势感知模型 阅读文献 基于卷积神经网络多源融合的网络安全态势感知模型 题目基于卷积神经网络多源融合的网络安全态势感知模型文章信息:年份2023发文单位山西财经大学收录刊会计算机科学 (北大核心&#…

多线程(初阶五:wait和notify)

目录 一、概念 二、用法 (1)举个栗子: (2)wait和notify的使用 1、没有上锁的wait 2、当一个线程被wait,但没有其他线程notify来释放这个wait 3、两个线程,有一个线程wait,有一…

c++ pcl出现LNK2019 宏定义 PCL_NO_PRECOMPILE

问题:c pcl使用拟合圆柱时出现LNK2019问题; 说明:lib等配置没有问题; 解决方案 在上述代码中添加如下代码即可 #define PCL_NO_PRECOMPILE 是 C 中的预处理器指令,用于在代码中定义一个宏。而 #undef PCL_NO_PRECOM…

springBoot3.2 + jdk21 + GraalVM上手体验

springBoot3.2 jdk21 GraalVM上手体验 SpringBoot2.x官方已经停止维护了,jdk8这次真的得换了🤣 可以参考官方文章进行体验:https://spring.io/blog/2023/09/09/all-together-now-spring-boot-3-2-graalvm-native-images-java-21-and-virt…

C++基础 -25- 动态多态

静态多态在程序编译的时候,确定将要执行的状态。 动态多态在程序运行的时候,才能确定执行的状态。 下面举例实现动态多态 work函数接口通过传参不同做不同的工作 #include "iostream"using namespace std;class person {public:person(){}vi…

记一次移动云不同机器下的对等网络使用

1、清单 机器1的VPC: 子网:172.16.16.0/24 机器2的VPC 子网:172.27.27.0/24(子网不能与机器1的子网相同,否则对等网络无法成功建立) 2、添加对等网络 添加链接:https://console.ecloud.1008…

数字电源为什么一般用DSP控制,而不能用普通的单片机?

数字电源为什么一般用DSP控制,而不能用普通的单片机? 首先你要清楚,数字电源需要一个芯片具备什么功能? 1 能发PWM波 ,并且具备保护关断功能; 电源对PWM发波 要求很高,精度要ns级甚至ps级的&…

js数组方法大全(开发必会)

前言 js中数组的方法还是有很多的,而且js中数组操作方法我说是一个前端开发必须熟练使用和掌握的我想没有人反对吧。 说真的,数组这些api本身还是需要死记硬背的,就像乘法口诀表,很多东西你需要很熟练的就能写出来。就像让你去找数组里面符合条件的元素,你总可能定义一个空数…