核密度估计

版本1.3.0.0 (7.58 KB Zdravko Botev
快速和准确的最先进的二元核密度估计

23.5 k下载

更新2015年12月30日

查看许可协议

基于对角带宽矩阵的二元核密度估计算法。
核函数假设为高斯函数。两个带宽参数的选择是最优化的
使用/假设数据的参数模型或任何“经验法则”。不像其他手术,这个
在具有广泛分离模态的多模态密度估计中不受精度失败的影响(见示例)。
输入:
data—具有连续数据的N × 2数组
N -计算密度的N × N网格的大小
N必须是2的幂,否则N =2^ceil(log2(N))默认值为2^8;
MIN_XY,MAX_XY -计算密度的边界框的限制;
格式是:
MIN_XY = [lower_Xlim lower_Ylim]
MAX_XY = [upper_Xlim, upper_Ylim]。

违约限额的计算方法如下:
MAX = MAX(数据,[],1);MIN = MIN(数据,[],1);范围=不等式性质;
MAX_XY = MAX + / 4;MIN_XY = MIN-Range / 4;
输出:
bandwidth—双变高斯核具有两个最佳带宽的行向量;
格式是:
带宽= [bandwidth_X, bandwidth_Y];
密度-一个'n' × 'n'矩阵,包含'n' × 'n'网格上的密度值;
除非函数要求这样的输出,否则不计算密度;
X,Y——计算变量“密度”的网格;
其预期用途如下:
冲浪(X, Y,密度)
示例(简单高斯混合)
清除所有
%生成具有远模的高斯混合
data = [randn (500 2);
randn (500 1) + 3.5, randn (500,1);];
%调用程序
(带宽、密度,X, Y) = kde2d(数据);
绘制数据和密度估计
contour3 (X, Y,密度,50),等等
情节(数据(:1),数据(:,2),‘r。’,‘MarkerSize’,5)

示例(带有远模的高斯混合):

清除所有
%生成具有远模的高斯混合
data = [randn (100 1), randn (100 1) / 4;
randn randn(100 1) + 18日(100 1);
randn (100 1) + 15, randn(100 1) /最近;];
%调用程序
(带宽、密度,X, Y) = kde2d(数据);
绘制数据和密度估计
冲浪(X, Y,密度,“线型”,“没有一个”),视图([0,60])
Colormap热,稍等,alpha(.8)
集(gca,“颜色”,“蓝色”);
情节(数据(:1),数据(:,2),“w。”,“MarkerSize”,5)

示例(正弦密度):

清除所有
X =兰德(1000 1);Y = sin (X * 10 *π)+ randn(大小(X)) / 3;数据= (X, Y);
%应用程序
(带宽、密度,X, Y) = kde2d(数据);
绘制数据和密度估计
冲浪(X, Y,密度,“线型”,“没有一个”),视图([0,70])
Colormap热,稍等,alpha(.8)
集(gca,“颜色”,“蓝色”);
情节(数据(:1),数据(:,2),“w。”,“MarkerSize”,5)

参考:
通过扩散估计核密度
Z. I. Botev, J. F. Grotowski, D. P. Kroese (2010)
《统计年鉴》第38卷第5期2916-2957页
doi: 10.1214 / 10-aos799

引用作为

Zdravko Botev(2022)。核密度估计(//www.tatmou.com/matlabcentral/fileexchange/17204-kernel-density-estimation), MATLAB中央文件交换。检索

MATLAB版本兼容性
创建R2015a
与任何版本兼容
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB中央找到宝藏,并发现社区可以如何帮助你!

开始狩猎!