Skip to content

Free Stan T-shirt to the first “little twerp” who does a (good) Bayesian analysis of Jon Lee Anderson’s height

I’d like to see a Stan implementation of the analysis presented in this comment by Gary from a year and a half ago.


  1. Steve Sailer says:

    The website features lengthy discussions by height hobbyists that flush out many of the ways to more accurately estimate a prominent individual’s true height. For example, being behind Alec Baldwin in line at a TSA airport checkpoint is illuminating because Baldwin suddenly gets a lot shorter when he has to take his shoes off. participants are particularly sensitive to age and time of day, especially for older individuals, in estimating maximum lifetime height.

    • Andrew says:

      Wow—I had no idea! Someone should build a plug-in that does Bayesian analyses for all these cases using Stan.

      • Steve Sailer says:

        For a typical celebrity, maybe a couple of dozen readers submit estimates and explain their rationales, such as they shook his hand or they might cite a photo of the celebrity with another celebrity for which a consensus exists on his height. The maximum and minimum estimates usually differ by maybe 2 to 2.5 inches.

        I believe the site was started by a fellow whose hobby is getting himself photographed with celebrities, so he used himself as a yardstick in the initial photos, which proved a good start.

    • Andrew says:

      I checked out the site and was disappointed. It featured Amy Adams (5ft 3.5in), Brian Adams (6ft 5in), Brooke Adams (5ft 3in), Bryan Adams (5ft 7.5in), Christine Adams (5ft 8in), Don Adams (5ft 8.75in), Douglas Adams (6ft 5in), Jane Adams (5ft 5in), Joey Lauren Adams (5ft 4in), Kaye Adams (5ft 7in), Ryan Adams (5ft 8in), and Yolanda Adams (6ft 1in)—but no Scott Adams! I wanted to resolve one of the longstanding open questions on this blog and compare his height to that of fraac.

  2. David J. Harris says:

    By hand, I got an estimate of 6-foot-2, with a standard error of 5.2 inches.

    I assumed that all height differences from photos had a standard error of 3 inches, (with most of the uncertainty relating to the size of the shoes worn by the women in the different pictures). Really, these distributions should be asymmetrical, but Gaussians seem like a good second-order approximation.

    If we make three comparisons (JLA->CG->PP->CD), each with a standard error of 3 inches, then the accumulated uncertainty would be sqrt(3^2 + 3^2 + 3^2) = 5.2 inches.

  3. David J. Harris says:

    Looks like my previous comment got eaten by the spam filter. This comment will build on the previous one, and add a prior. Apologies if the likelihood bit ends up showing up twice.

    I suggested the following likelihood function, based on the fact that there were degrees of separation (CD–> PP–> CG–>JLA), and a three-inch standard error with each comparison (mainly because of our uncertainty in the height of the heels worn by the two women in the analysis).

    That suggested that the overall standard error in our likelihood function is sqrt(3^2 + 3^2 + 3^2) = 5.2

    But we have prior information, based on the image of him towering over three men and a woman.

    Expected Height of non-Hispanic white males in the US between 40 and 59:
    70.1 inches, +/-.14 (via

    Standard deviation in height for men:
    7 cm, which I’ll call 3 inches (

    Assuming that he’s about six inches taller than the tallest of three ranodmly-sampled white men, we can get a prior on his height:

    samples = replicate(1E3, max(rnorm(3, mean = 70.1, sd = 3))) + 6

    So our prior should be 78.6, +/- 2.2

    The fact that our prior is tighter than our likelihood function is unusual, but could be warranted based on the “high heels” argument above.

    Multiplying the prior times the likelihood gives us the posterior distribution. But I’ve already spent too much time on this, so I’ll leave that as an exercise for the reader.

  4. Fernando says:

    I think a more interesting question is whether the lady next to Anderson is wearing heels, and if so, their height.

    Anderson’s height is censored (cropped). Her wearing heels is latent.

    • Steve Sailer says:

      She’s probably wearing moderate heels (what are those? 2.5″? 3″?). The event (a book signing?) appears to be the kind wear the ladies wear heels, but not 4 or 5″ heels.

      But then again, these days you never know. When I went to hear Mozart chamber music at the Disney Concert Hall last year, a lot of the young ladies in attendance were teetering around on what looked like those shoes designed by Steve Madden, who is back out of jail after his company was taken public by the Wolf of Wall Street guy.

    • Kyle C says:

      The Claire Danes calibration in Dan’s original comment is totally thrown off by the heels factor. With that red dress, she could easily be wearing 3″ or 4″ heels.

      • Fernando says:

        Yes but the trick is not just to guess but to use all prior information to jointly infer everone’s heights, and shoe heel heights.

        I think the prior on heel height may be 0-1 inflated, bimodal, etc. Perhaps better broken into a mixture of components.

        The question of whether she is wearing high heels and if so height, is like the question is there a causal effect, and if so magnitude.

        I bet Andrew would like to treat this as one question – heel height – but then prior likely takes a funny shape, and y_rep might look odd.

        • Kyle C says:

          Indeed. I was the commenter who originally suggested using priors instead of Google. I’m out of my technical depth so I’ll drop it, but I’m suggesting there are divergent priors. It’s axiomatic that a female movie star wears extra-high heels when photographed in a glamorous red dress. Not so for a median woman.

    • Fernando says:

      PS Following up on the censoring idea, we see Anderson’s full head. Eye glasses come in pretty standard widths, so they are a noisy ruler. Then we might use the ratio of head to body size as another way to infer his full height. Using this glass metric we can also infer the lady’s head size and height. And ditto for all the other people using Gary’s procedure. So that adds another set of constraints to improve the inference. Oh, and did I mention shirt size buttons?

  5. Andrew Whalen says:

    How much does it take to convince me to install and try out Stan? The possibility of a free t-shirt.

    It looks like he’s 72.91 inches tall with a SD of 1.35 inches. He looses about an inch if you assume that the women are not wearing heels.

    I coded up a simple Bayesian model of this problem. I assumed that a US, adult male’s height had a normal distribution with mean 70 inch, SD = 2.75, and an adult female’s height had distribution with mean: 64 inches, SD = .39. These values were estimated from wikipedia [1] and a brief note [2].

    It’s hard to find good information about the distribution of the size of heels. Based on [3], I assumed that each woman wore a shoe with a normally distributed heel of N(2.36, .39), and that the men were not wearing shoes with noticeable heels.

    We have six latent variables we are trying to estimate, the heights of Jon Lee Anderson, Catalina Garcia, Phillipe Petit, and the heel-size of Catalina Garcia in her picture with Jon Lee Anderson, and in the picture of Phillipe Petit, and the heel size of Claire Danes in her picture with Phillipe Petit.

    We have four data points, the height of Claire, the difference of heights between Cataline Garcia and Jon Lee Anderson, Cataline Garcia and Phillipe Petit, and Claire Danes and Phillipe Petit. I assumed that Claire’s height was known perfectly, but the height differences were distributed as N(0, 1) — 1 inch felt about right to me.

    This led to the following Stan Model:

    height_code <- '
    data {
    real claire;
    real johnLeeMinusCatalina;
    real phillipeMinusCatalina;
    real phillipeMinusClaire;
    parameters {
    real catalina;
    real phillipe;
    real johnLee;
    real pcHeel;
    real pclHeel;
    real jcHeel;
    transformed parameters {
    real jcError;
    real pcError;
    real pclError;
    jcError <- johnLeeMinusCatalina-(johnLee-catalina-jcHeel);
    pcError <- phillipeMinusCatalina-(phillipe-catalina-pclHeel);
    pclError <- phillipeMinusClaire-(phillipe-claire-pclHeel);
    model {
    jcError ~ normal(0, 1);
    pcError ~ normal(0, 1);
    pclError ~ normal(0, 1);
    catalina ~ normal(70, 2.75);
    phillipe ~ normal(70, 2.76);
    johnLee ~ normal(64, 2.3622);
    jcHeel ~ normal(2.36, .39);
    pcHeel ~ normal(2.36, .39);
    pclHeel ~ normal(2.36, .39);

    height_data <- list(claire = 66,
    johnLeeMinusCatalina = 9.5,
    phillipeMinusCatalina = 2,
    phillipeMinusClaire = 0

    fit <- stan(model_code = height_code, data = height_data,
    iter = 1000, chains = 4)

    The output is:

    mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhat
    catalina 62.86 0.04 1.14 60.77 62.10 62.83 63.61 65.17 810 1
    phillipe 67.96 0.03 0.93 66.19 67.33 67.97 68.58 69.75 1019 1
    johnLee 72.91 0.05 1.35 70.27 72.00 72.88 73.84 75.54 880 1
    pcHeel 2.35 0.01 0.39 1.59 2.09 2.34 2.61 3.10 1170 1
    pclHeel 2.41 0.01 0.40 1.63 2.15 2.42 2.67 3.18 1319 1
    jcHeel 2.13 0.01 0.38 1.38 1.88 2.12 2.38 2.88 1374 1
    jcError 1.57 0.02 0.94 -0.25 0.90 1.58 2.19 3.42 2000 1
    pcError -0.69 0.02 0.91 -2.44 -1.30 -0.66 -0.07 1.12 1532 1
    pclError 0.45 0.03 0.87 -1.28 -0.15 0.43 1.05 2.19 1036 1
    lp__ -15.56 0.06 1.70 -19.69 -16.46 -15.25 -14.33 -13.15 730 1

    Let me know if I made any mistakes. Stan seems pretty useful once you get everything set up!


  6. Andrew Whalen says:

    Oh, wow, that formatting died a painful death. Maybe this will look better…

    	mean	se_mean	sd	2.50%	25%	50%	75%	97.50%	n_eff	Rhat
    catalin 62.86	0.04	1.14	60.77	62.1	62.83	63.61	65.17	810	1
    phillip 67.96	0.03	0.93	66.19	67.33	67.97	68.58	69.75	1019	1
    johnLee	72.91	0.05	1.35	70.27	72	72.88	73.84	75.54	880	1
    pcHeel	2.35	0.01	0.39	1.59	2.09	2.34	2.61	3.1	1170	1
    pclHeel	2.41	0.01	0.4	1.63	2.15	2.42	2.67	3.18	1319	1
    jcHeel	2.13	0.01	0.38	1.38	1.88	2.12	2.38	2.88	1374	1
    jcError	1.57	0.02	0.94	-0.25	0.9	1.58	2.19	3.42	2000	1
    pcError	-0.69	0.02	0.91	-2.44	-1.3	-0.66	-0.07	1.12	1532	1
    pclError	0.45	0.03	0.87	-1.28	-0.15	0.43	1.05	2.19	1036	1
    lp__	-15.56	0.06	1.7	-19.69	-16.46	-15.25	-14.33	-13.15	730	1

    [ed. added <pre> and </pre> tags]

  7. […] across that comment the other day (when searching the blog for Tom Scocca) and it inspired me to put out a call for the above analysis to be implemented in Stan. A couple of other faithful commenters (Andrew […]

Leave a Reply