Wednesday, January 19, 2011

Ruminations On Paleo & The Stigler Diet Problem

One of the greatest economists of the 20th century, George Stigler, came up with an optimization problem known as the Stigler diet. It's summed up in Wikipedia as such:
For a moderately active man weighing 154 pounds, how much of each of 77 foods should be eaten on a daily basis so that the man’s intake of nine nutrients will be at least equal to the recommended dietary allowances (RDAs) suggested by the National Research Council in 1943, with the cost of the diet being minimal?
It was simply a thought problem: what is the optimally cheapest way of maintaining RDA nutrient intake?

A few things jump out from the original paper, he used 3000 calories a day for a "moderately active" man weighing 154 pounds. Obviously moderately active had a different connotation back in 1939*. Also, beef liver made it into a list of mostly scary but cheap foods, presumably because of its dense vitamin profile.

I decided to download the free Windows GLPK program which includes the Stigler problem and mess around with it a bit. The actual GLPK code for the Stigeler diet problem, with plenty of useful commenting by its author, Andrew Makhorin, can be seen here.

Here's a list of the original nutritional parameters used by Stigler.

And here's the classic solution:

Back when 39 bucks actually meant something

Computers are really, really good at certain things and this sort of optimization is definitely one of them. It is pretty amazing to me that my five year old computer solved a problem that was unsolvable in 1945, and it solved it in 0.0 seconds!!!

Ok, obviously, 300 pounds of flour, 110 lbs of cabbage and 377 lbs of navy beans aren't anyone's idea of good eats. And it certainly wouldn't fly in paleo circles. So I tried it without the flour:

Interestingly, beef liver has dropped off and we are down to only four foods. We are now looking at an annual consumption of 648 lbs of navy beans. Yum. And the price has gone up 13%. Ok how about taking out the navy beans?

A 16% jump and beef liver is back on the list. Plus we now have a whopping 6 foods to eat for a whole year.

Ok, last one. Take away cereal and corn meal and what is the optimized diet? Enriched wheat cereal is a bit of a ringer anyway.

Hmmm, 134 lbs of lard, 6 lbs of beef liver and 120 lbs of Lima beans (refried Lima beans anyone?). We're up to 7 foods, now, and some of them even look healthy. Still nothing to write home about but a pretty big improvement, in paleo terms at least, from the original subsistance solution. And the annual price has yet to double from the original $39.69.

This was all pretty simple, just knock out some foods from the original Stigler diet problem and see what happens.

What would be much, much more interesting (and even practical) would be to add in modern prices and paleo type nutrition parameters (like n-3/n-6 ratio) and play with it. An often heard criticism of paleo is that it is simply too expensive for many people. This is something I'm pretty skeptical about. Don Matasz has been doing some posts (such as this) about being primal on a budget, and he's been listing prices so it would certainly be do-able.

I'm not sure if I have the gumption to actually do all that, though, interesting as it would be to play around with once it was working. Did I mention how much I hate computer programming?

* Stigler published his paper in 1945, using commodity prices from 1939 and the RDA guidelines from 1943

Addendum: It occurs to me that enriched wheat flour or enriched anything really ought to be prohibited from a proper solution of the Stigler diet problem. Otherwise the solution would (presumably) reduce down to a cheap multivitamin and a ton of flour.


  1. Mention of Stigler and Linear Programming (LP) takes me right back to my first job as a recent graduate - an interactive LP for the grain buyer in a British flour milling company. It was the formulation of the least expensive grist - but the mill did not care!

    The nice thing is that one can tailor the convex decision space to one's individual needs. In addition to minimum requirements, one may also include maxima, such as amounts of animal (protein), subdivide CHOs into into industrial, starch roots etc.

    Have fun!

  2. Wait a second Leon, it's quite obvious you know way more about this than I do. I think you should take this task up for the greater good of the community at large.

  3. Oh, I've been planning a post on how eating whole foods/paleo-ish is actually cheaper than the Standard American Diet for some time. I guess it's time to actually do it.

    Because it is, you know.

  4. Jan,
    Standard Crap Diet might be more appropriate because it certainly isn't limited to the US. I'm looking forward to your post.

  5. Yeah, well, Paul Jaminet did not quite jump the fence when formulating his optimal macro-nutrient %-ages.

    The notion of nutritional optimality is not relevant to an LP approach - it relies on least cost as deciding the food choices. The notion of starch being "protein -sparing" as sometimes advocated by sport physiologists could be an LP outcome.

  6. I haven't read Paul's book yet, I really need to order it.

    But surely a low cost paleo solution could be helped by some linear programming. I've often heard the excuse that paleo is too expensive. LP is about optimizing, right?

    Stigler's original problem was to optimize price and nutrition. I think our definitions of proper nutrition have moved on somewhat since then (along with our capacity to solve these problems) but the idea of optimizing price and nutrition isn't simply interesting as a theoretical problem.

  7. Stigler's problem as to MINIMISE cost - 1st he designed his decision space as a series of LINEAR equations which bounds it. From your description he only used MINIMUM micro-nutrients as bounding the space. My comments were addressing the notion of including maxima as well as minima for micros and also of including MACRO-nutrients - maxima and minima in the formulation - and of breaking up the CHO into fructose based CHO, flour and root starches.

    One still ends up with a bounded decision space. However, within that space all choices are equally good. There is no "optimum" - it is an irrelevant concept. Not least because what is best at nine in the morning when about to ski in -5 C is not what is best while in traffic on way to work.

    I am more interested in notions coming from non-linear dynamics and chaos theory - zones of stability etc. I know A de Vany has mentioned this idea, but unless he has run it thro' the filter of that clever Phoenician Nassim Nicholas Taleb - Black Swan - he could be "Fooled by Randomness".

  8. "that clever Phoenician" made me lauqh.

    I'm not convinced that De Vaney really has much knowledge of non-linear dynamics. I don't have much myself but I've enough to think he sounds somewhat full of shit, as I wrote a while back.

    I get what you are saying (after reading through it a few times, I'm pretty rusty on this sort of thinking).

    A program that took into account minima AND maxima (I assume you are talking about the sensitive U-shaped curve of things like copper and chromium especially) would be ideal of course--not that those parameters are very well known.

    Having a program that would do all you describe would be quite fascinating (and a hell of a lot of work) in my opinion.

    Sure, there'd be a neutral decision space where any data point would be considered equal if one ignores price, but price is a real-world constraint, and quite an important one for a lot of people.

    Plus, it would be pretty fascinating to just to have this model to mess around with parameters since there really is no hard and fast table of diet parameters.

    But lacking all that, I think it would be quite interesting just to have an updated paleo version of the original Stigler problem to mess around with. If for no other reason than to put to bed (what I consider) the canard that paleo is too expensive for many of people.