Kernel Density Estimator

버전 (5.5 KB) 작성자: Zdravko Botev
Reliable and extremely fast kernel density estimator for one-dimensional data
다운로드 수: 29.8K
업데이트 날짜: 2015/12/30

라이선스 보기

Reliable and extremely fast kernel density estimator for one-dimensional data;
Gaussian kernel is assumed and the bandwidth is chosen automatically;
Unlike many other implementations, this one is immune to problems
caused by multimodal densities with widely separated modes (see example). The
estimation does not deteriorate for multimodal densities, because we never assume
a parametric model for the data (like those used in rules of thumb).
data - a vector of data from which the density estimate is constructed;
n - the number of mesh points used in the uniform discretization of the
interval [MIN, MAX]; n has to be a power of two; if n is not a power of two, then
n is rounded up to the next power of two, i.e., n is set to n=2^ceil(log2(n));
the default value of n is n=2^12;
MIN, MAX - defines the interval [MIN,MAX] on which the density estimate is constructed;
the default values of MIN and MAX are:
MIN=min(data)-Range/10 and MAX=max(data)+Range/10, where Range=max(data)-min(data);
bandwidth - the optimal bandwidth (Gaussian kernel assumed);
density - column vector of length 'n' with the values of the density
estimate at the grid points;
xmesh - the grid over which the density estimate is computed;
- If no output is requested, then the code automatically plots a graph of
the density estimate.
cdf - column vector of length 'n' with the values of the cdf

Kernel density estimation via diffusion
Z. I. Botev, J. F. Grotowski, and D. P. Kroese (2010)
Annals of Statistics, Volume 38, Number 5, pages 2916-2957
Example (run in command window):
data=[randn(100,1);randn(100,1)*2+35 ;randn(100,1)+55];

인용 양식

Zdravko Botev (2024). Kernel Density Estimator (, MATLAB Central File Exchange. 검색됨 .

MATLAB 릴리스 호환 정보
개발 환경: R2015a
모든 릴리스와 호환
플랫폼 호환성
Windows macOS Linux
Help CenterMATLAB Answers에서 Particle Swarm에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
버전 게시됨 릴리스 정보

corrected the title back to "kernel density estimator" ; updated reference
bug fixes: 1) in some rare cases with small 'n', fzero used to fail; code now deals with these failures;
2) density output forced to be positive (may be small and negative due to round-off errors, confusing some users)
- the updated version provides additionally a cdf estimator as an output argument
- designed not to crash for small number of data, e.g., kde(rand(1,5))
- published reference updated

-Published in the Annals of Statistics, 2010, see Section 5.
- works on old versions of Matlab without nested functions.
- plots a graph when no output is requested

As pointed out by Dazhi Jiang in the comments section, the healine
"function [bandwidth,density,xmesh]=kde(data,n,MIN,MAX)"
is missing. This version corrects this editing mistake.

updated the reference - now a journal paper submitted to the Annals of Statistics

Using higher order asymptotic approximations to achieve superior estimation accuracy for problems with few data points.