MATLAB Answers

0

ksdensity general help, what bandwidth and other settings to choose?

Asked by Right Grievous on 25 May 2014
Latest activity Commented on by the cyclist
on 26 May 2014
Hi everybody,
I have some general questions regarding the ksdensity function. I'm trying to compare the cumulative density function of two samples, if I plot the data using a histogram they don't appear to be that different.
When I use the ksdensity (cdf) function and test for a significant difference using a K-S test, significance seems to depend a lot on the bandwith and bounding of my distributions.
My question is: what are the rules for choosing a bandwidth etc? If significance depends on the settings I choose I want to have good reasons for choosing them.
I am constraining the distributions between 0 and 500 because my maximum value is 460 and the data are all positive. However, the default bandwidth results in minor differences towards the upper end of the distributions, a bandwidth of 1.5 does not.
I have attached the data, column 1 is the group, column 2 are the measurements.
Thank you for any help,
Rod.

  0 Comments

Sign in to comment.

1 Answer

Answer by the cyclist
on 26 May 2014
 Accepted Answer

You should be able to apply the K-S statistical test directly to your discrete data. You don't need to (and shouldn't) apply ksdensity() before testing for significance between your two distributions.
(I did not see any data attached to your question.)

  2 Comments

I'm at work and don't have the data with me here, I definitely attached it, but you are right that it's not there.
I thought I should use a density function because my sample sizes are quite different, both are large (>100 samples) but one is twice the size of the other. I could bin the data and calculate percentage of the sample in each bin? I basically want to show that both groups are drawn from the same distribution.
Thanks for your help,
Rod.
The data vectors do not need to be the same size. For example,
x1 = randn(100,1);
x2 = randn(200,1);
[h,p,ksstat] = kstest2(x1,x2)
will work just fine.

Sign in to comment.