核密度函数学习笔记
核密度函数是一种非参数估计方法,用于对数据的概率密度函数进行估计。其基本思想是在每个数据点处放置一个核函数,然后将所有核函数叠加起来,得到一个平滑曲线,即概率密度函数的估计结果。常用的核函数有正态核函数、Epanechnikov核函数等。在使用时,需要确定一个带宽参数hhh。在Python中,可以使用scipy库中的gaussian_kde函数进行估计。
核密度函数学习笔记
什么是核密度函数
核密度函数(Kernel Density Estimation)是一种非参数估计方法,用于对数据的概率密度函数进行估计。其基本思想是在每个数据点处放置一个核函数,然后将所有核函数叠加起来,得到一个平滑曲线,即概率密度函数的估计结果。
核函数
核函数是作用在每个数据点上的基础函数。它需要满足以下两个条件:
- 是一个概率密度函数,即满足概率密度函数的所有性质;
- 在原点处的积分为1,即∫−∞+∞k(x)dx=1\int_{-\infty}^{+\infty}k(x)dx=1∫−∞+∞k(x)dx=1。
常用的核函数有以下几种:
- 正态核函数(Gaussian Kernel):k(x)=12πe−x22k(x)=\frac{1}{\sqrt{2\pi}}e^{-\frac{x^2}{2}}k(x)=2π1e−2x2
- Epanechnikov核函数:k(x)={34(1−x2),∣x∣<10,∣x∣≥1k(x)=\begin{cases}\frac{3}{4}(1-x^2),& |x|<1\\0, & |x|\ge1\end{cases}k(x)={43(1−x2),0,∣x∣<1∣x∣≥1
- 矩形核函数(Rectangular Kernel):k(x)={12,∣x∣<10,∣x∣≥1k(x)=\begin{cases}\frac{1}{2},& |x|<1\\0, & |x|\ge1\end{cases}k(x)={21,0,∣x∣<1∣x∣≥1
- 三角核函数(Triangular Kernel):k(x)={1−∣x∣,∣x∣<10,∣x∣≥1k(x)=\begin{cases}1-|x|,& |x|<1\\0, & |x|\ge1\end{cases}k(x)={1−∣x∣,0,∣x∣<1∣x∣≥1
其中,正态核函数是最常用的一种。
带宽宽度参数的核密度函数
在使用核密度函数进行估计时,需要确定一个带宽参数hhh。它的值越大,估计出来的曲线越平滑;值越小,估计出来的曲线越尖锐。通常,可以使用交叉验证等方法来选择合适的hhh值。
带宽参数为hhh的核密度函数定义为:f^(x)=1n∑i=1nK(x−xih)\hat{f}(x)=\frac{1}{n}\sum_{i=1}^{n}K(\frac{x-x_i}{h})f^(x)=n1∑i=1nK(hx−xi)
其中,K(x)K(x)K(x)为核函数,xix_ixi为数据点,nnn为样本数量。
动手实践
在Python中,可以使用scipy库中的gaussian_kde函数来进行核密度函数的估计。下面是一个简单的例子。
import numpy as np
from scipy.stats import gaussian_kde
import matplotlib.pyplot as plt
# 生成随机数据
np.random.seed(0)
data = np.concatenate((np.random.randn(100), 10 + np.random.randn(300)))
# 使用gaussian_kde函数进行估计
kde = gaussian_kde(data)
# 绘制估计结果
x_grid = np.linspace(-5, 15, 1000)
plt.plot(x_grid, kde(x_grid))
plt.show()
总结
核密度函数是一种非参数估计方法,用于对数据的概率密度函数进行估计。其基本思想是在每个数据点处放置一个核函数,然后将所有核函数叠加起来,得到一个平滑曲线,即概率密度函数的估计结果。常用的核函数有正态核函数、Epanechnikov核函数等。在使用时,需要确定一个带宽参数hhh。在Python中,可以使用scipy库中的gaussian_kde函数进行估计。
更多推荐
所有评论(0)