STAT313 Chap5 多变量核密度估计带宽选择(上)

本文原创笔记,禁止转载。有问题可私信付费找我咨询。

最优带宽 hAMISEh_{AMISE}hAMISE 的表达式是:
hAMISE=(d∥K∥L22nμ2(κ)2∥Δf∥L22)1d+4 h_{AMISE} = \left( \frac{d \lVert K \rVert^2_{L_2}}{n \mu_2(\kappa)^2 \lVert \Delta f \rVert^2_{L_2}} \right)^{\frac{1}{d+4}} hAMISE=(nμ2(κ)2ΔfL22dKL22)d+41

这里:
ddd 是数据的维度。
∥K∥L2\lVert K \rVert_{L_2}KL2 是核函数 KKKL2L_2L2 范数。
μ2(κ)\mu_2(\kappa)μ2(κ) 是核函数 κ\kappaκ 的二阶矩。
∥Δf∥L22\lVert \Delta f \rVert^2_{L_2}Δf

### 使用 Python 进行核密度估计(KDE) #### 方法一:基于 SciPy 的 KDE 实现 通过 `scipy.stats.gaussian_kde` 可以轻松实现核密度估计。以下是完整的代码示例: ```python import numpy as np from scipy.stats import gaussian_kde import matplotlib.pyplot as plt # 数据准备 data = np.random.normal(size=1000) # 创建 KDE 对象并设置带宽参数 kde = gaussian_kde(data, bw_method=0.3) # 生成用于绘图的 x 值范围 x_vals = np.linspace(np.min(data), np.max(data), 100) # 计算对应的密度值 density = kde(x_vals) # 绘制密度曲线 plt.plot(x_vals, density, label='KDE Curve') plt.fill_between(x_vals, density, alpha=0.2) plt.xlabel('Data Points') plt.ylabel('Density') plt.title('Kernel Density Estimation using Scipy') plt.legend() plt.show() ``` 上述方法利用了 SciPy 提供的功能来计算和可视化核密度估计的结果[^1]。 --- #### 方法二:基于 Seaborn 的 KDE 实现 Seaborn 是一个高层次的数据可视化库,它内置支持核密度估计功能。以下是一个简单的例子: ```python import seaborn as sns import matplotlib.pyplot as plt import numpy as np # 数据准备 X = np.random.randn(1000) # 使用 Seaborn 的 histplot 函数绘制带有 KDE 曲线的直方图 sns.set_style("whitegrid") plt.figure(figsize=(10, 6)) sns.histplot(X, bins=30, kde=True, stat="density", color='skyblue', label='Histogram with Seaborn KDE') # 设置图表属性 plt.title('核密度估计示例 (Seaborn)') plt.xlabel('值') plt.ylabel('密度') plt.legend() # 显示图形 plt.show() ``` 此方法不仅能够展示 KDE 结果,还能同时显示数据分布的直方图,便于直观理解数据特性[^2]。 --- #### 示例解释 以上两种方式分别展示了如何使用 SciPy 和 Seaborn 来完成核密度估计的任务。SciPy 更加底层,适合需要自定义调整的情况;而 Seaborn 则更加简洁易用,适用于快速探索性数据分析场景[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值