Message Boards Message Boards

Brain vs body mass for mammals

GROUPS:

It's quite amazing that humans can abstract patterns in nature and see similarities between, for example, pigmentation of some mollusc shells and cellular automata. The amazement deepens as we discover that mathematical relations and simple programs can grasp the essence of numerous patterns. Below is an example. A "line" is one of the simplest patterns in nature and is easily caught by human eye. So it is quite miraculous to see points with coordinates (brain mass, body mass) for various mammals would suddenly arrange along a straight line in log-log coordinate system. Which right away implies a power or scaling mathematical law that is very universal in nature. It is known as Snell's equation in simple allometry due to Otto Snell (1891). It's not to be confused with Snell's law of optics due to Willebrord Snell (1621). Let's see how we can build this wonderful plot.

enter image description here

I start from searching Wolfram Language built-in data resources for animal-related sets:

ResourceSearch["animal"]

enter image description here

Let's grab the first one:

data = ResourceData["Animal Weights Sample Data"]

enter image description here

A simple plot of brain vs body mass does not reveal anything obvious:

ListPlot[Normal[data[All, {1000 #BodyWeight, #BrainWeight} &]], PlotTheme -> "Business"]

enter image description here

And by browsing the data we see we got a few long-dead species:

Interpreter["Dinosaur"][{"Diplodocus", "Triceratops", "Brachiosaurus"}]

enter image description here

EntityValue[%, "Image"]

enter image description here

Let's delete these old friends and concentrate on modern species:

modern = Delete[data, {{6}, {16}, {26}}];

and find equation of line passing through the log of data points:

f[x_] = Fit[Log[QuantityMagnitude[
    Normal[modern[All, {1000 #BodyWeight, #BrainWeight} &]]]], {1, x},x]

Out[]= -3.04602 + 0.752261 x

Getting it back into Snell's equation power-from I get:

eq = Rationalize[BRAIN ≈ First[BRAIN /. 
     Solve[(f[x] /. x -> Log[BODY]) == Log[BRAIN], BRAIN]], .01]

enter image description here

And now to make the final plot above we use ListLogLogPlot:

Show[
    ListLogLogPlot[Normal[modern[All,Callout[{1000#BodyWeight,#BrainWeight},#Species]&]],
       PlotTheme->"Detailed",AspectRatio->1],
       Plot[f[x],{x,3,16},PlotStyle->Directive[Red,Dashed,Opacity[.8]]],
       BaseStyle->13,
       PlotLabel->Style["brain vs body mass for mammals",25,Darker[Red],FontFamily->"Phosphate"],
       FrameLabel->{"Body Weight, g","Brain Weight, g"},
       Epilog->Inset[Style[eq,18,Red],Scaled[{.2,.8}]]
]

Of course, the mathematical formula is just an approximation and the constants change slightly for a different set of animals. For instance, according to Harry J. Jerison (UCLA):

enter image description here

POSTED BY: Vitaliy Kaurov
Answer
1 year ago

Well done :) That's really an interesting question

POSTED BY: Shujie CHEN
Answer
1 year ago

Grey Wolf and sheep appears almost on a same level in red dash line. But only wolf eat the sheep in nature. I think this function might underestimate the intellegence of wolf.

POSTED BY: Frederick Wu
Answer
1 year ago

Group Abstract Group Abstract