Is the following formula right if I want to measure the standard error of the median in case of a small sample with non normal distribution (I'm using python)?

 sigma=np.std(data)
 n=len(data)
 sigma_median=1.253*sigma/np.sqrt(n)
up vote 10 down vote accepted

Based on some of @mary's comments I think the following is appropriate. She seems to be selecting the median because the sample is small.

If you were selecting median because it's a small sample that's not a good justification. You select median because the median is an important value. It says something different from the mean. You might also select it for some statistical calculations because it's robust against certain problems like outliers or skew. However, small sample size isn't one of those problems it's robust against. For example, when sample size gets smaller it's actually much more sensitive to skew than the mean.

  • Thanks John! Actually I chose to use the median in place of the mean for the reason you have just written. I've different samples, all of them having non gaussian distribution. There are sample containing more than 50 point, others containing less than 10 points, but for all of them I think your comment is valid, isn't it? – mary May 23 '13 at 16:17
  • With so few points I'm not sure what you can say about the underlying distribution. If you're comparing samples containing less than 10 with samples containing 50 and the underlying distribution isn't symmetric a median will show an effect even if there isn't one because it will have more bias in the small sample than the large. The mean won't. – John May 23 '13 at 18:54
  • In the future flesh out your questions better and ask more about what you really need to know. Say why you've done what you've done so far and describe the data that you have well. You'll get much better answers. – John May 23 '13 at 18:55
  • 1
    "small sample size isn't one of those problems it's robust against" is worth a +1 on its own; the rest is a bonus – Glen_b May 24 '13 at 3:59
  • As a matter of fact, Huber makes a point in his book that there is no single concept of robustness. There is robustness to outliers (and that's what the median is robust for). Another view, however, is robustness to the measurement error, and that's what the mean is robust for, as it averages these measurement errors. The median, however, is highly susceptible to measurement error fluctuations as they may affect the middle of the distribution just as badly as the tails. – StasK Jun 14 '13 at 15:08

Sokal and Rohlf give this formula in their book Biometry (page 139). Under "Comments on applicability" they write: Large samples from normal populations. Thus, I am afraid that the answer to your question is no. See also here.

One way to obtain the standard error and confidence intervals for the median in small samples with non-normal distributions would be bootstrapping. This post provides links to Python packages for bootstrapping.

Warning

@whuber pointed out that bootstrapping the median in small samples isn't very informative as the justifications of the bootstrap are asymptotic (see comments below).

  • thanks for your answer! I know that bootstrapping would be an alternative, I was just guessing if there is a way to measure the error of the median in a different way. Is the answer no also for the standard error on the MEAN (same small non gaussian sample)? – mary May 23 '13 at 14:58
  • @mary For the standard error of the mean, Sokal and Rohl write that it is applicable for "[...] any population with finite variance." So the answer for the standard error of the mean seems to be yes, you can calculate it. Sidenote: There are distributions though (e.g. the Cauchy distribution) that don't have a defined variance or mean and in such cases, the SEM cannot be calculated. – COOLSerdash May 23 '13 at 15:00
  • 5
    (+1) Unfortunately, bootstrapping the median of a small sample won't be very informative, either--and is unnecessary, because it can be replaced by a simple calculation. (For any number $t$, ask yourself, what are the chances that more than half of a bootstrap sample will exceed $t$? That answer is easy to come by, and now you don't need to run any simulations to estimate it.) – whuber May 23 '13 at 15:04
  • @whuber Thanks for your comment. That's good to know. I deleted the advice to bootstrap the median in small samples from my answer. – COOLSerdash May 23 '13 at 15:06
  • 1
    I wasn't trying to suggest it's bad advice: I only wanted to point out its (unavoidable) limitations. Learning much from small samples is hard. But bootstrapping small samples is doubly fraught, because there is no theoretical justification to support it (all the justification is asymptotic). – whuber May 23 '13 at 15:10

The magic number 1.253 comes from the asymptotic variance formula: $$ {\rm As. Var.}[\hat m] = \frac1{4f(m)^2 n} $$ where $m$ is the true median, and $f(m)$ is the true density at that point.

For any distribution other than the normal (and mary admits that this is doubtful in her data), you would have a different factor. Getting the median estimate $\hat m$ is not such a big deal, although you can start agonizing about the middle values for the even number of observations vs. inverting the cdf or something like that. The relevant density value can be estimated by kernel density estimators, if needed. Overall, this of course is relatively dubious as three approximations are being taken:

  1. That the asymptotic formula for variance works for the small sample;
  2. That the estimated median is close enough to the true median;
  3. That the kernel density estimator gives an accurate value.

The lower the sample size, the more dubious it gets.

  • 1
    Perhaps worth adding that the magic number is $\sqrt{\dfrac{\pi}{2}} \approx 1.253314$ – Henry Feb 25 at 23:27

Your Answer

 
discard

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.