This function implements bivariant Gaussian kernel density estimation. It can be used to estimate bivariant probability density function (pdf), cumulative distribution function (cdf) and inversed cdf (icdf) from a set of random data. The code is programmed in a way to be suitable for beginners to learn kernel density estimation.
Yi Cao (2021). Bivariant Kernel Density Estimation (V2.1) (https://www.mathworks.com/matlabcentral/fileexchange/19280-bivariant-kernel-density-estimation-v2-1), MATLAB Central File Exchange. Retrieved .
Inspired by: Probability Density Function (PDF) Estimator (V3.2)
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Create scripts with code, output, and formatted text in a single executable document.
Sorry, please ignore the comment below.
How to optimaze the number of peaks in the code?
So the function works once you figure out how the data needs to be structured. My only problem is that, as written, the actual pdf values scale down as your data range gets larger. Should this really be happening?
Up to and including the line
z=(X(k+zeros(n,1),:)-x)./h(ones(n,1),:);
the values are the same regardless of data scale. However, the next line scales by the bandwidth AGAIN and messes that up. Is this accurate? If so, could you explain the reasoning for this?
examples do work, and so does the code. Really straightforward coding and simple to manipulate for use in your individual needs, even if you're new to KDE
It seems that your bandwidth formula doesn't correct.
I just delete % to run the examples, but I got "Error in gkde2"
documentation is false, misleading, and old.
nice code. I like that you put your references for methods, and I need to double-check them. Wish you had a link to Wolfram or an online resource.
Internal nomenclature could be cleaned up. The command call in the example should be able to be copied, pasted to command-line and executed.
ah ok: The functions does not get p.xy, the information in the file is misleading. But instead requires p.x and p.y separately. It´s in the check function around line 180 f.
Nice one. But to really use it I definitely need to put in my own grid locations. So I have the same problem as Frank. Please - is there a solution? That would be really good.
Nice program with the default values. Put I'm not seeing how I can input my own grid locations. The optional inputs say "p.xy - Nx2 matrix for locations to make estimation", however, I don't see where this is done within the program. Also, I get errors on line 260 when I try to input my own bandwidth values.
Very easy to understand for a Matlab novice like myself. However, is the bandwidth formula correct? It doesn't seem to match the reference? Also, my total probability density is almost, but not exactly 1 (~0.96)
very handy, thank you