对于已经得到的样本集,核密度估计是一种可以求得样本的分布的概率密度函数的方法:

通过选取核函数和合适的带宽,可以得到样本的distribution probability,在这里核函数选取标准正态分布函数,bandwidth通过AMISE规则选取

具体原理及定义:传送门 https://en.wikipedia.org/wiki/Density_estimation

MATLAB 代码实现如下:

 % Kernel Density Estimation
% 只能处理正半轴密度
function [t, y_true, tt, y_KDE] = KernelDensityEstimation(x)
% clear % x = px_last;
% x = px_last_tu;
%%
%参数初始化
Max = round(max(x)); %数据中最大值
Min = round(min(x)); %数据中最小值
Ntotal = length(x); %数据个数
tt = : 0.1 : Max; %精确x轴
t = : Max; %粗略x轴 y_KDE = zeros( * Max+, ); %核密度估计值
sum1 = ; %求和的中间变量
%%
%计算带宽h
R = /(*sqrt(pi));
m2 = ;
h = ;
% h = (R)^(/) / (m2^(/) * R^(/) * Ntotal^(/)); %%
%计算核密度估计
for i = : 0.1 : Max
for j = : Ntotal
sum1 = sum1 + normpdf(i-x(j));
end
y_KDE(round(i*+)) = sum1 / (h * Ntotal);
sum1 = ;
end sum2 = sum(y_KDE)*0.1; %归一化KDE密度
for i = : 0.1 : Max
y_KDE(round(i*+)) = y_KDE(round(i*+))/sum2;
end %%
%计算真实密度的分布
y_true = zeros(Max+,);
for i = : Max
for j = : Ntotal
if (x(j) < i+)&&(x(j) >= i)
y_true(i+) = y_true(i+) + ;
end
end
y_true(i+) = y_true(i+) / Ntotal;
end %%
%绘图 % figure() %真实密度的分布图象
% bar(t, y_true);
% axis([Min Max+ max(y_true)*1.1]);
%
% figure() %核密度估计的密度分布图象
% plot(tt, y_KDE);
% axis([Min Max max(y_true)*1.1]);

给定测试数据:

data = [1,2,3,4,5,2,1,2,4,2,1,4,7,4,1,2,4,9,8,7,10,1,2,3,1,0,0,3,6,7,8,9,4]

样本的条形统计图和KDE密度分布图分别如下,可以看到KDE可以较好的还原样本的分布情况:

真实概率分布图

KDE密度分布图

核密度估计 Kernel Density Estimation (KDE) MATLAB的更多相关文章

  1. 非参数估计:核密度估计KDE

    http://blog.csdn.net/pipisorry/article/details/53635895 核密度估计Kernel Density Estimation(KDE)概述 密度估计的问 ...

  2. kdeplot(核密度估计图) & distplot

    Seaborn是基于matplotlib的Python可视化库. 它提供了一个高级界面来绘制有吸引力的统计图形.Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图 ...

  3. 【转】用深度学习做crowd density estimation

    本博文主要是CVPR2016的<Single-Image Crowd Counting via Multi-Column Convolutional Neural Network>这篇文章 ...

  4. R语言与非参数统计(核密度估计)

    R语言与非参数统计(核密度估计) 核密度估计是在概率论中用来估计未知的密度函数,属于非参数检验方法之一,由Rosenblatt (1955)和Emanuel Parzen(1962)提出,又名Parz ...

  5. More 3D Graphics (rgl) for Classification with Local Logistic Regression and Kernel Density Estimates (from The Elements of Statistical Learning)(转)

    This post builds on a previous post, but can be read and understood independently. As part of my cou ...

  6. 泡泡一分钟:Geometric and Physical Constraints for Drone-Based Head Plane Crowd Density Estimation

    张宁 Geometric and Physical Constraints for Drone-Based Head Plane Crowd Density Estimation 基于无人机的向下平面 ...

  7. <轻量算法>根据核密度估计检测波峰算法 ---基于有限状态自动机和递归实现

    原创博客,转载请联系博主! 希望我思考问题的思路,也可以给大家一些启发或者反思! 问题背景: 现在我们的手上有一组没有明确规律,但是分布有明显聚簇现象的样本点,如下图所示: 图中数据集是显然是个3维的 ...

  8. 非参数估计——核密度估计(Parzen窗)

    核密度估计,或Parzen窗,是非参数估计概率密度的一种.比如机器学习中还有K近邻法也是非参估计的一种,不过K近邻通常是用来判别样本类别的,就是把样本空间每个点划分为与其最接近的K个训练抽样中,占比最 ...

  9. Windows内核开发-6-内核机制 Kernel Mechanisms

    Windows内核开发-6-内核机制 Kernel Mechanisms 一部分Windows的内核机制对于驱动开发很有帮助,还有一部分对于内核理解和调试也很有帮助. Interrupt Reques ...

随机推荐

  1. 计算机作业(Excel工资表) 物联网 王罗红

  2. 对volatile不具有原子性的理解

    在阅读多线程书籍的时候,对volatile的原子性产生了疑问,问题类似于这篇文章所阐述的那样.经过一番思考给出自己的理解. 我们知道对于可见性,Java提供了volatile关键字来保证可见性.有序性 ...

  3. Asp.net & Aspose.cells 导入

    Workbook workBook = new Workbook(this.fuFile.FileContent); Aspose.Cells.Worksheet sheet = workBook.W ...

  4. h5标签

    1.<abbr> 标签指示简称或缩写,比如 "WWW" 或 "NATO". IE 6 或更早版本的 IE 浏览器不支持 <abbr> 标 ...

  5. SOJ 1017 Power of Cryptography 库函数精度

    Background Current work in cryptography involves (among other things) large prime numbers and comput ...

  6. 【[IOI2014]Wall 砖墙】

    好像随便一卡就最优解了 malao告诉我这道题挺不错的,于是就去写了写 这两个操作很有灵性啊,感觉这么有特点的数大概是需要分块维护的吧 但是并没有什么区间查询,只是在最后输出整个序列 于是我们就直接用 ...

  7. Java50道经典习题-程序20 求前20项之和

    题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和.分析:请抓住分子与分母的变化规律.三个连续分数之间的规律是:上两个分子之和等于第三个分数的分子 ...

  8. 【jQuery】动画小练习

    1.jQuery部分代码如下 <script type="text/javascript"> $(function(){ var page = 1; var i = 4 ...

  9. docker参数

    Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] -d, --detach=false 指定容器运行于前台还是后台,默认为false -i, - ...

  10. 一些有用的社区论坛,wiki网站(持续更新)

    1. IBM开发者(IBM developerwork): 这是一个比较全面的网站,上面有关于linux 管理.linux内核设计.存储等各个方面的知识,内容广泛,参考价值很高 http://www. ...