核密度估计KDE和概率密度函数PDF(深入浅出)

news2024/9/20 18:29:19

目录

    • 1. 和密度估计(KDE)
      • 核密度估计的基本原理
      • 核密度估计的公式
      • 核密度估计的应用
      • Python中的KDE实现
        • 示例代码
      • 结果解释
        • 解释结果
      • 总结
    • 2. 概率密度函数(PDF)
      • 概率密度函数(PDF)是怎么工作的:
      • 用图画来解释
        • 解释这个图:
      • 问题解答:
      • 总结
    • 3. 核密度估计(KDE)和概率密度函数(PDF)之间的关系
        • 故事开始:
      • 第一种方法:概率密度函数(PDF)
      • 第二种方法:核密度估计(KDE)
      • 总结一下:
      • 问题解答:

1. 和密度估计(KDE)

KDE,全称为核密度估计(Kernel Density Estimation),是一种非参数方法,用于估计随机变量的概率密度函数。与传统的直方图不同,KDE能够提供一个更平滑和连续的密度估计,适用于更细致的分布分析。

核密度估计的基本原理

核密度估计通过对每个数据点应用一个核函数,并将这些核函数进行叠加来构建密度估计。核函数通常是一个对称的、非负的函数,具有单位面积。常见的核函数包括高斯核(Gaussian kernel)、均匀核(Uniform kernel)、三角核(Triangular kernel)等。

核密度估计的公式

给定样本数据 { x 1 , x 2 , … , x n } \{x_1, x_2, \ldots, x_n\} {x1,x2,,xn},核密度估计的公式为:
f ^ ( x ) = 1 n h ∑ i = 1 n K ( x − x i h ) \hat{f}(x) = \frac{1}{n h} \sum_{i=1}^{n} K\left(\frac{x - x_i}{h}\right) f^(x)=nh1i=1nK(hxxi)
其中:

  • f ^ ( x ) \hat{f}(x) f^(x) 是在点 x x x 处的估计密度值。
  • K K K 是核函数。
  • h h h 是带宽(平滑参数),控制估计的平滑程度。带宽越大,估计越平滑;带宽越小,估计越细致。

核密度估计的应用

核密度估计在数据分析和统计建模中有广泛应用,特别是在探索性数据分析中,用于查看数据分布的形状和特性。

Python中的KDE实现

在Python中,SciPy和Seaborn库提供了便捷的核密度估计功能。以下是一个使用Seaborn和SciPy进行核密度估计的示例:

示例代码
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import gaussian_kde
import seaborn as sns

# 生成一些示例数据
data = np.random.normal(0, 1, size=1000)

# 使用SciPy进行核密度估计
kde_scipy = gaussian_kde(data, bw_method=0.3)
x = np.linspace(min(data), max(data), 1000)
kde_values = kde_scipy(x)

# 使用Seaborn进行核密度估计和绘图
plt.figure(figsize=(10, 6))
sns.histplot(data, kde=True, stat="density", bins=30, label='Histogram with KDE', color='blue', alpha=0.6)
plt.plot(x, kde_values, color='red', lw=2, label='KDE (SciPy)')
plt.xlabel('Value')
plt.ylabel('Density')
plt.legend()
plt.title('Kernel Density Estimation')
plt.show()

结果解释

在这个示例中:

  • 生成了一些服从正态分布的示例数据。
  • 使用SciPy的gaussian_kde函数进行了核密度估计,并绘制了估计的密度曲线。
  • 使用Seaborn的histplot函数绘制了包含KDE的直方图。
解释结果

核密度估计图展示了数据的平滑分布,与传统的直方图相比,KDE图更为连续和平滑,能够更好地反映数据的实际分布情况。

总结

核密度估计(KDE)是一种强大的工具,用于估计和可视化数据的概率密度函数。它通过平滑的数据分布提供了比直方图更细致的分布视图,在数据分析中非常有用。

2. 概率密度函数(PDF)

概率密度函数(PDF) 是用来描述连续随机变量在某个特定值附近的可能性的一种函数。它帮助我们理解数据是如何分布的。

想象一下你在一个游乐园里玩捞鱼游戏。

  • 你有一个大水池,里面有很多小鱼,每条鱼的位置都不一样。
  • 如果你想知道在某个特定位置附近有多少鱼,你可以用一个网在那个位置捞鱼。
  • 如果在这个位置附近有很多鱼,那这个位置的“鱼密度”就很高。
  • 如果只有几条鱼,那这个位置的“鱼密度”就很低。

概率密度函数(PDF)是怎么工作的:

  1. 表示密度

    • PDF 就像是一个“鱼密度”图。它告诉你在水池的每个位置,鱼的密度有多高。
    • PDF 的值可以很大,表示这个位置附近的鱼很多。PDF 的值也可以很小,表示这个位置附近的鱼很少。
  2. 总面积为1

    • 虽然 PDF 的值可以很高,但整个水池的密度总和必须是1。这表示所有的鱼都在这个水池里。
  3. 计算概率

    • 如果你想知道在一个范围内捞到鱼的概率,你可以看这个范围内的“鱼密度”图,然后把这个范围内的密度值加起来。
    • 比如,如果你想知道在水池左边1/4的地方捞到鱼的概率,你可以看这部分的“鱼密度”图,然后加起来。这就是PDF的积分。

用图画来解释

假设我们有一个简单的例子,水池里鱼的密度是这样的:
在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

# 定义均值和标准差
mu = 0
sigma = 1

# 生成数据点
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 1000)
pdf = norm.pdf(x, mu, sigma)

# 绘制正态分布的概率密度函数
plt.plot(x, pdf, 'r-', lw=2, label='PDF')
plt.fill_between(x, pdf, alpha=0.5, color='red')
plt.xlabel('位置')
plt.ylabel('密度')
plt.title('鱼密度图(概率密度函数)')
plt.legend(loc='best')
plt.show()
解释这个图:
  • 横轴表示水池的位置。
  • 纵轴表示鱼的密度。
  • 曲线上的每个点表示在那个位置附近的鱼的密度。
  • 红色的区域表示鱼的密度,整个红色区域的面积总和是1。

问题解答:

:为什么有些位置的密度会很高呢?

:就像在水池里,如果很多鱼集中在某个地方,这个地方的密度就会很高。概率密度函数(PDF)也是一样,它告诉我们在数据中某些值附近数据有多集中。如果很多数据都集中在一个值附近,这个值的密度就会很高。

总结

  • PDF 就像是一个密度图,它告诉我们数据在不同位置的密度有多高。
  • 总面积为1 表示所有的数据都在这个范围内。
  • PDF的值 可以很大,但它表示的是密度,而不是直接的数量。

希望这个解释能够帮助小朋友理解概率密度函数(PDF)的基本概念。如果有更多问题,随时可以问我哦!

3. 核密度估计(KDE)和概率密度函数(PDF)之间的关系

核密度估计(KDE)和概率密度函数(PDF)是用来表示数据分布的两种方法。我们可以通过一个简单的故事来帮助理解它们之间的关系。

故事开始:

想象一下,你在生日派对上有一个大蛋糕,你和你的朋友们都喜欢不同口味的蛋糕。为了让每个人都开心,你决定用两种方法来展示大家最喜欢的口味。

第一种方法:概率密度函数(PDF)

PDF就像是在蛋糕上插蜡烛

  • 想象一个蛋糕,每个蛋糕上面插满了蜡烛。每个蜡烛代表一个不同口味的蛋糕片。
  • 如果某种口味有很多蜡烛,就意味着很多人喜欢这个口味。比如,如果巧克力味的蛋糕上插了很多蜡烛,那说明大家都很喜欢巧克力味。
  • 但是这些蜡烛的高度可以非常高,也可以非常低。即使有些蜡烛很高,也不代表这些口味的蛋糕片会比其他口味的蛋糕片更多。

第二种方法:核密度估计(KDE)

KDE就像是用蛋糕刀把蛋糕切成很多片

  • 想象现在你拿了一把蛋糕刀,把整个蛋糕切成很多片,每片蛋糕代表不同口味的蛋糕。
  • 当你切蛋糕的时候,每个切片的大小表示有多少人喜欢这个口味。如果某个口味有很多人喜欢,这个切片就会比较大。
  • 切片之间的边界是平滑的,没有突然的变化。这使得每个切片的大小表示的更加平滑和准确。

总结一下:

  • PDF:就像蛋糕上的蜡烛。蜡烛越高,表示那个地方的数据越密集,但是蜡烛高度可以超过1米,因为它表示的是密度。
  • KDE:就像用蛋糕刀切蛋糕。切片的大小表示数据的密度,切得越平滑,表示数据分布越连续。

问题解答:

:为什么蜡烛有时会很高呢?

:蜡烛的高度表示密度。即使高度超过1米,它表示的是数据集中在那个位置的密度,而不是直接的数量。KDE的平滑切片能更好地展示每种口味在整个蛋糕中的分布情况。

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

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

相关文章

数据类型及数据块认知

西门子STEP7编程语言 梯形图(LAD) 功能块图(FBD) 语句表(STL) 其中梯形图和功能块图可以相互转换 CPU常用数据区 信号输入区 I 信号输出区 Q 程序中表现形式,IX.X/QX.X;IWX/QWX-访问的是CPU输出输入过程映像区 另一种形式IWX:P/QWX:P-访问的是信号端口地址&#xf…

idea推送到gitee 401错误

在idea上推送时遇到这样的问题,解决方法如下: 在https://的后面加上 用户名:密码 然后再提交就ok啦!

285个地级市出口产品质量及技术复杂度(2011-2021年)

出口产品质量与技术复杂度:衡量国家竞争力的关键指标 出口产品质量是衡量国内企业生产的产品在国际市场上竞争力的重要标准。它不仅要求产品符合国际标准和目标市场的法律法规,而且需要保证产品质量的稳定性和可靠性。而出口技术复杂度则进一步体现了一…

Python神经模型评估微分方程图算法

🎯要点 🎯神经网络映射关联图 | 🎯执行时间分析 | 🎯神经网络结构降维 | 🎯量化图结构边作用 | 🎯数学评估算法实现 🍪语言内容分比 🍇Python随机梯度下降算法 随机梯度下降是梯度…

nodejs安装配置详解

一、下载Node.js安装包 官网下载链接[点击跳转] 建议下载LTS版本(本教程不适用于苹果电脑) 二 、安装Node.js 2.1 下载好安装包后双击打开安装包,然后点击Next 2.2 勾选同意许可后点击Next 2.3 点击Change选择好安装路径后点击Next&#x…

使用微pe装系统

本文仅作为记录,不作为教程。 今天心血来潮想下点游戏玩玩,一看之前分的200gc盘已经红了,再加上大学之后这个笔记本已经用得很少了,于是打算重装电脑。 参考: 微PE辅助安装_哔哩哔哩_bilibil… 1.下载微pe和win10系统到U盘 我这…

18.按键消抖模块设计(使用状态机,独热码编码)

(1)设计意义:按键消抖主要针对的时机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子就断开。因而在闭合以及断开的瞬…

Java PKI Programmer‘s Guide

一、PKI程序员指南概述 PKI Programmer’s Guide Overview Java认证路径API由一系列类和接口组成,用于创建、构建和验证认证路径。这些路径也被称作认证链。实现可以通过基于提供者的接口插入。 这个API基于密码服务提供者架构,这在《Java密码架构参考指…

Windows C++ vs2022环境中下载、安装和使用osmesa

第一步:安装 MinGW-w64 请参考这篇文章进行安装: 在Windows中安装MinGW-w64最新版本 第二步:安装DirectX SDK 请参考这篇文章进行安装: 下载安装Microsoft DirectX SDK(June 2010) 第三步:安装Windows SDK 请参考这篇…

数据仓库哈哈

数据仓库 基本概念数据库(database)和数据仓库(Data Warehouse)的异同 整体架构分层架构方法论ER模型(建模理论)维度模型 何为分层第一层:数据源(ODS ER模型)设计要点日志…

WSL2编译使用6.6版本内核

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、有什么变化二、下载6.6内核三、开始编译1.安装环境2.开始编译 四、使用1.杀死虚拟机2.防止内核文件3.修改配置文件 总结 前言 最近出了一件不大不小的事&a…

C++基础知识:数组,数组是什么,数组的特点是什么?一维数组的三种定义方式,以及代码案例

1.数组的定义: 数组,就是一个集合,里面存放了相同类型的数据元素 2.数组的特点: 特点1:数组中的每个数据元素都是相同的数据类型 特点2:数组是由连续的内存位置组成的 3. 一维数组定义方式 维数组定义的三种方式: 1.数据类型 …

【atcoder】习题——位元枚举

题意:求i&M的popcount的和,i属于0……N 主要思路还是变加为乘。 举个例子N22,即10110 假设M的第3位是1,分析N中: 00110 00111 00100 00101 发现其实等价于 0010 0011 0000 0001 也就是左边第4位和第5…

AE-关键帧

目录 关键帧操作步骤(以位置变化为例) 1.确定动画起点 2.设置起点的位置属性 3.为起点打上关键帧 4.确定动画终点 5.设置终点的位置属性 改变动画速度 1.选中所有关键帧 2.拖拽 时间反向关键帧 1.选中要反向的关键帧 2.使用时间反向关键帧 …

二叉树超详细解析

二叉树 目录 二叉树一级目录二级目录三级目录 1.树的介绍1.1树的定义1.2树的基本术语1.3相关性质 2.二叉树介绍2.1定义2.2 性质 3.二叉树的种类3.1 满二叉树3.2完全二叉树3.3 二叉查找树特点:二叉查找树的节点包含的基本信息: 3.4 平衡二叉树 4.二叉树的…

imx6ull/linux应用编程学习(15) 移植MQTT客户端库

1. 准备开发环境 确保你的Ubuntu系统已经安装了必要的工具和依赖项。打开终端并运行以下命令: sudo apt update sudo apt install build-essential cmake git2. 获取MQTT库 git clone https://github.com/eclipse/paho.mqtt.c.git cd paho.mqtt.c3. 编译MQTT库 mk…

【前端速通系列|第二篇】Vue3前置知识

文章目录 1.前言2.包管理工具npm2.1下载node.js2.2配置 npm 镜像源2.3 npm 常用命令 3.Vite构建工具4.Vue3组件化5.Vue3运行原理 1.前言 本系列文章旨在帮助大家快速上手前端开发。 2.包管理工具npm npm 是 node.js中进行 包管理 的工具. 类似于Java中的Maven。 2.1下载nod…

K8S 上部署大数据相关组件

文章目录 一、前言二、Redis2.1 安装方式一:2.2 安装方式二: 一、前言 Artifact Hub 是一个专注于云原生应用的集中式搜索和发布平台。它旨在简化开发者在 CNCF(Cloud Native Computing Foundation)项目中寻找、安装和分享包与配置…

计算理论复习

1.Turing Machine 确定性图灵机 图灵机有很多不同的定义,这里选取其中一种,其它定义下的图灵机往往与下面这种定义的图灵机计算能力等价。 图灵机是一个在一条可双向无限延伸且被划分为若干格子的纸带上进行操作的机器,其有内部状态&#…

C++ 是否变得比 C 更流行了?

每年都会出现一种新的编程语言。创造一种新语言来解决计算机科学中的挑战的诱惑很难抗拒。一些资料表明,目前有多达 2,500 种语言,这并不奇怪! 对于我们嵌入式软件开发人员来说,这个列表并不长。事实上,我们可以用一只…