ksdensity default bandwidth value

11 visualizzazioni (ultimi 30 giorni)
Alexandra
Alexandra il 5 Ago 2015
Commentato: Thomas il 19 Set 2024
Hi,
Does any one knows how matlab computes the default bandwidth in the function ksdensity?
Thank you very much,

Risposte (3)

FK
FK il 22 Gen 2022
The 'ksdensity' function uses "Silverman's rule" as given in the post of Ghada. The difference between the calculations of Alexandra and the calculations done in Matlab is caused by a different estimation of the the standard deviation. Instead of estimating it by it is done by applying a more robust estimator with (see this Wikipedia article for further information).
With m=[1,3,2,5] you can derive with Silverman's rule that the default bandwith is given by .
  2 Commenti
Maximiliano Barbosa
Maximiliano Barbosa il 4 Ott 2022
thank you, actually I was study how to obtain the default bandwith too
Thomas
Thomas il 19 Set 2024
Hi FK, I can reproduce the results if the MAD is > 0. If it is zero, MATLAB seems to use something else. Any idea what that could be?

Accedi per commentare.


Ghada Saleh
Ghada Saleh il 7 Ago 2015
Hello Alexandra,
In MATLAB, the default bandwidth in 'ksdensity' function is calculated using the following formula:
BandWidth = sig * (4/(3*N))^(1/5);
where 'sig' is an estimated value of the standard deviation of the samples.
I hope this helps,
Ghada
  1 Commento
Alexandra
Alexandra il 14 Mar 2016
I have used this formula to test the calculations of the bandwidth and I don't think it is correct.
Take a simple example: m=[1,3,2,5] Then from [a,b,c]=ksdensity(m,m,'function','cdf') c=1.1901 and sig*(4/(3*4))^(1/5)= 1.3709 So they don't yield the same answers.

Accedi per commentare.


Mohammad Khatamirad
Mohammad Khatamirad il 4 Dic 2017
you can try this: [f, xi, bw] = ksdensity(X); bw = 'gives you the default bandwidth'

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by