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

文章目录

    • 概念回顾
    • 浅析概率密度函数
      • 概率值为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.hqwc.cn/news/238268.html

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

相关文章

uniapp-从后台返回的一串地址信息上,提取省市区进行赋值

1.这是接口返回的地址信息 2.要实现的效果 3.实现代码&#xff1a; <view class"address">{{item.address}}</view>listFun() {let url this.$url.url.positionInfoCompany;let param {page: this.page,limit: this.limit,keyword: this.keyword,};thi…

onnx nvidia cuda cudnn driver 各种版本对应

onnx 和 nvidia cuda&#xff0c; nvidia cudnn 之间对应关系 NVIDIA - CUDA | onnxruntime # 查看cuda版本 nvcc -V# 查看cudnn版本 cat /usr/include/x86_64-linux-gnu/cudnn_v*.h | grep CUDNN_MAJOR -A 2

Linux常用发行版本软件包安装指南

Linux操作系统以其开源、灵活和高度定制的特性而备受欢迎。然而&#xff0c;对于初学者来说&#xff0c;熟悉不同发行版的软件包管理系统可能是一个挑战。本文将介绍在常见的Linux发行版&#xff08;Ubuntu、CentOS、Alpine&#xff09;上安装软件包的基本指南&#xff0c;以帮…

软著项目推荐 深度学习图像风格迁移

文章目录 0 前言1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习图像风格迁移 - opencv python 该项目较为新颖&#xff0c;适合作为竞赛课题…

力扣225-用队列实现栈

文章目录 力扣225-用队列实现栈示例代码实现总结收获 力扣225-用队列实现栈 示例 代码实现 class MyStack {Queue<Integer>queue1;Queue<Integer>queue2;public MyStack() {queue1new LinkedList<Integer>();queue2new LinkedList<Integer>();}public…

elupload base64

创作灵感也许就是这会儿还没有入睡吧&#xff0c;对接百度图片OCR功能&#xff0c;需要将图片转为BASE64上传调用百度的接口api&#xff0c;进行研究实现。页面如下&#xff0c;点击后选择图片文件后不是直接上传&#xff0c;而是获取图片的bytes数据&#xff01; <el-uploa…

Postman如何导入和导出接口文件

本文介绍2种导出和导入的操作方法&#xff1a;一种是分享链接&#xff0c;导入链接的方式&#xff08;需要登录&#xff09;&#xff1b;另一种是导出json文件&#xff0c;再次导入。下面将详细介绍。 由于第一种分享链接&#xff0c;导入链接的方式需要登录&#xff0c;所以推…

应用案例 | 基于三维视觉的汽车零件自动化拧紧解决方案

​Part.1 引言 随着人们生活水平的提高&#xff0c;汽车作为理想的代步工具&#xff0c;逐渐成为人们生活中不可或缺的一部分。汽车的广泛应用&#xff0c;大大增加了汽车制造业的负荷。因此&#xff0c;如何提高生产效率和汽车性能&#xff0c;成为汽车制造业的首要关注话题。…

算法题:求所需的最小的书包数量(拓展拓展再拓展~)

算法题&#xff1a;求所需的最小的书包数量 现在有一种书包&#xff0c;这种书包只有两个书槽&#xff08;即最多只能放下两本书。&#xff09;&#xff0c;并且一个这种书包只能装下N千克的书。现在有一个数组&#xff0c;数组元素是每本书的重量&#xff08;千克&#xff09…

RabbitMQ学习一

RabbitMQ学习 RabbitMQ相关概念Virtual host数据隔离SpringAMQP第一种 基本消息模型第二种 WorkQueues模型第三种 发布订阅模型&#xff08;fanout交换机&#xff09;fanout交换机实例 第四种 Direct交换机direct交换机实例基于注解的方式声明——direct交换机 第五种Topic交换…

从订阅式需求发展,透视凌雄科技DaaS模式增长潜力

订阅制&#xff0c;C端消费者早已耳熟能详&#xff0c;如今也凭借灵活、服务更新稳定的特点&#xff0c;逐渐成为B端企业服务的新热点。 比如对中小企业而言&#xff0c;办公IT设备等配套支出都必不可少&#xff0c;但收入本身并不稳定&#xff0c;购置大堆固定资产&#xff0…

Shell循环:for(三)

示例&#xff1a;使用for实现批量主机root密码的修改 一、前提 已完成密钥登录配置&#xff08;ssh-keygen&#xff09;定义主机地址列表并了解远程修改密码的方法 [rootlocalhost ~]# ssh-keygen #设置免密登录[rootlocalhost ~]# ssh-copy-id 192.168.151.151 二、演示…