so I am doing a meta-analysis & have access to height and weight data (with SDs) and am trying to transform this into BMI. This is rather straight forward for the means, but I am not sure how to do this regarding the sample standard deviations.


mean ht (SD): 142 (13) mean wt (SD): 69 (7)

the equation is --- BMI= wt/(ht*ht)

could anyone please help me with how to calculate the new standard deviation??

Thanks so much!

  • $\begingroup$ It's not clear to me how you're computing mean BMI from the information for height and weight. It's not the case that mean-BMI = mean-weight/(mean-height)$^2$. If you're not trying to calculate mean BMI that way or you're not trying to calculate mean BMI at all you should clarify the situation. $\endgroup$
    – Glen_b
    Commented Apr 26, 2016 at 1:28
  • 1
    $\begingroup$ @Glen_b , I included extensive discussion of the point you are bringing up in my answer. $\endgroup$ Commented Apr 26, 2016 at 1:45

2 Answers 2


What you want to do is propagation of uncertainty (there are many examples and derivations in this Wiki article, should be useful) if you assume $Cov\left[Height,Weight\right] = 0$

$$\begin{align}f(H,W) =& \frac{Weight}{Height^2}\\Var\left (f(H,W) \right ) =& \sigma_{BMI}^{2} =\\=& \left(\frac{\partial f(H,W)}{\partial H}\right)^{2}\sigma_{H}^{2} + \left(\frac{\partial f(H,W)}{\partial W}\right)^{2}\sigma_{W}^{2}\\ &\left\{ \begin{matrix}\frac{\partial f(H,W)}{\partial H} =& -2\frac{W}{H^3} \\ \frac{\partial f(H,W)}{\partial W} =& \frac{1}{H^2} \end{matrix}\right.\\ \therefore \sigma_{BMI}^{2} =& 4\frac{W^{2}}{H^6}\sigma_{H}^{2} + \frac{1}{H^4}\sigma_{W}^{2}=\\=&\frac{W^{2}}{H^{4}}\left(\frac{4\sigma_{H}^{2}}{H^{2}}+\frac{\sigma_{W}^{2}}{W^{2}} \right) = BMI^{2}\left(\frac{4\sigma_{H}^{2}}{H^{2}}+\frac{\sigma_{W}^{2}}{W^{2}} \right) \\ \sigma_{BMI}=&BMI\sqrt{\frac{4\sigma_{H}^{2}}{H^{2}}+\frac{\sigma_{W}^{2}}{W^{2}}}\end{align}$$

If the assumption about the covariance doesn't hold true $Cov\left [ H,W \right]\neq0 $ then a correlation terms appear.

  • $\begingroup$ That you so much for explaining! With you & Mark working in tandem it really helped clarify the issues I new must be lurking under the surface :) $\endgroup$
    – Renee
    Commented Apr 26, 2016 at 2:21

I composed the response below in parallel to @Firebug . Due to the reasons stated in my discussion, I believe it is the superior approach.

First of all, note that if you don't do it right, you will actually miscalculate the mean BMI. Calculating mean BMI by inserting mean values of wt and ht into its defining equation will result in a biased value. That is because the formula for BMI has two nonlinearities, namely

1) the ratio between numerator and denominator
2) the square in the denominator

Number (2) is easy to correct for, by calculating $E(ht*ht)$ as $E(ht)*E(ht) + Var(ht)$ rather than as $E(ht)*E(ht)$. However number (1) is not so easy to correct for.

Note: In order to do any calculations, we are going to have to explicitly or implicitly assume something, which will affect the result. I made the (what I believe to be unrealistic) assumption that ht and wt are Normally distributed and independent of each other. Any violation of this assumption could DRAMATICALLY affect the results. Not only could non-Normality affect the results, but dependence between wt and ht, which seems quite likely, could have a major effect on the results.

Stochastic (Monte Carlo) Simulation Approach: There is a straightforward way to get around the bias in calculating the mean of BMI due to number (1), which also takes care of number (2). It will also produce the SD of BMI. It is to calculate them by stochastic (Monte Carlo) simulation. Under the assumption mentioned above, generate n independent Normal samples of both ht and wt, and form the BMI for each sample. Then calculate the sample mean and SD of these BMI samples to get the mean BMI and SD of BMI.

To make the numbers correspond to the usually defined BMI, I converted ht from cm to meters, i.e., I divided by 100, which increases BMI by a factor of 10000.

I used n = 1e8 samples and obtained mean BMI = 35.12 and SD of BMI = 7.66.

Note that the biased mean BMI calculated as $mean(wt)/(mean(ht)*mean(ht))$ produces a value of 34.22, and using $mean(wt)/(mean(ht)*mean(ht) + Var(ht))$ produces a value of 33.93. Recall that the correct value, as calculated by simulation, is 35.12.

Going back to the Normality and independence between ht and wt assumption: To calculate mean BMI, as well as SD of BMI properly and with realistic (correct in real-world) values, you should actually use paired ht and wt data per individual. This will account for the actual distributions of ht and wt, to include very critically the dependence between them. With such data, calculate the BMI per individual, then calculate the sample mean and SD across these individual BMI values. This is really the same method as the stochastic simulation approach, but in this case, we let the "real world" generate the paired values of wt and ht, rather than generating sample values ourselves from an assumed bivariate distribution.

Note that it would be easy to modify the stochastic simulation approach to account for an assumed non-zero correlation between wt and ht, if wt and ht were still assumed to be Normally distributed. We generate paired wt and ht values per a Bivariate Normal with covariance matrix which accounts for non-zero correlation; and all other calculations remain the same.

The previously provided stochastic simulation results are for correlation (between wt and ht) equal to zero. I now show how the results change when correlation between wt and ht increases from zero, but still assuming Normality of wt and ht with the mean and SD values you provided (ht divided by 100 as previously discussed).

Correlation between wt and ht     mean of BMI     SD of BMI
          0.0                       35.12           7.66
          0.1                       35.05           7.31
          0.5                       34.78           5.74
          0.9                       34.52           3.62
          0.99                      34.46           2.95
  • $\begingroup$ Thanks, Mark! I've used some monte carlo simulations for multiple imputations, but not in this way. Did you perform this on R, & if so, would you mind sharing code? I'd really appreciate the help! $\endgroup$
    – Renee
    Commented Apr 26, 2016 at 2:20
  • $\begingroup$ @Renee , I used MATLAB.n=1e8;rho=0.1;Covc=chol([49 rho*7*.13;rho*7*.13 .13^2]);y=randn(n,2)*Covc+ones(n,1)*[69 1.42];values=y(:,1)./y(:,2).^2; disp(mean(values)), disp(std(values)) $\endgroup$ Commented Apr 26, 2016 at 2:37
  • 1
    $\begingroup$ In R @renee you need mvrnorm from the MASS package to replictae Mark's code. $\endgroup$
    – mdewey
    Commented Apr 26, 2016 at 21:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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