In a famous paper, Haldane is describing the idea of rate of changes in "darwins". Here below is the excerpt where he introduces the math about the concept.

Haldane, J. B. S. 1949. Suggestions as to quantitative measurement of rates of evolution. Evolution 3:51–56.

Now suppose that in time $t$ the mean length of a structure has increased from $x_1$ cm to $x_2$ cm, the mean value of the proportional rate of change

$\frac{1}{x}\frac{dx}{dt}$ or $\frac{d}{dt} (\text{log}_ex)$ is


I don't understand why he is arguing that the difference should be logged. Why can't you just use:


What justifies this line below?

$\frac{1}{x}\frac{dx}{dt}$ or $\frac{d}{dt} (\text{log}_ex)$

Why not just using: $x\frac{d}{dt}$?

  • 1
    $\begingroup$ The reason why there is a logarithm in the mean value is because the original equation has the form (1/x)dx/dt. The author wanted to remove the (1/x) factor by taking the antiderivative which is log(e)x and absorbing it into the dx symbol so they could rewrite dy/dt as Δy/Δt. Unless your question is why is there a (1/x) there in the first place? $\endgroup$
    – Cell
    May 1 '19 at 2:37
  • $\begingroup$ If you have an answer for "why is there a (1/x)?" I'll take it! Is it because it is how you write a geometric mean with a derivative? $\endgroup$ May 1 '19 at 2:44
  • 1
    $\begingroup$ I don't think so. This isn't my field of study, but if r = growth rate = (1/x)dx/dt and if you rearrange that formula as r*x=dx/dt then it takes on the form of the population growth formula x=x0*e^rt maybe that helps? $\endgroup$
    – Cell
    May 1 '19 at 3:10

There are several purposes for log transformations, but one of the most common that occurs in biology is when changes are relative aka multiplicative. See for example this answer from CrossValidated.

If I told you that one lizard has a tail 5 cm longer than another lizard, that doesn't actually tell you much about how different it is. If the first lizard had a tail 1 cm long, that's a pretty massive difference! If the first lizard had a tail that was 100 cm long, the 5 cm difference is pretty minor.

Taking the log shows this:

Big (relative) change:

$log_e(6) - log_e(1) = 1.8$

$6 - 1 = 5$

Small (relative) change:

$log_e(105) - log_e(100) = 0.049$

$105 - 100 = 5$

The simple differences are both 5, but the log differences show you a big change versus a small one.

Logarithms are also more convenient than ratios for rates of change because they are easy to manipulate to predict change over any time interval assuming a constant relative change over time.

Taking the 6cm vs 1cm example above, lets say we want to guess the change when only half of the time is elapsed. If we take half of 1.8 = 0.9 and solve the following for X:

$log_e(X) - log_e(1) = 0.9$

$X \approx 2.5$

So we'd expect after only half the time, the length would have been about 2.5 cm.

$2.5/1 \approx 6/2.5$ meaning that the relative change for each subdivision of time is equal.

You could try this for any dt, too, and plot out X as a function of time with any dt when you use logarithms. You can't do this directly with a ratio like "6/1" because you can't directly subdivide that "6/1" into smaller time intervals (trying to do so would take you into the world of logarithms again :) ).

test <- function(time,x1,x2) { 
  out = exp(log(x1)+(log(x2)-log(x1))*time) 
  return(out) } 
time = seq(0,2,0.01) 
     xlab = "Time", 
     ylab = "X", 
     type = "l", 
     main = "Change in morphology through time") 
points(x = 1,
       y = 6, 
       pch = 21, 
       bg = "black", 
       col = "black")

enter image description here

Ultimately, what matters most is what thing you are measuring and how you want to interpret a particular type of change. For things like lengths or average counts, often a relative multiplicative change makes the most sense.

  • $\begingroup$ I did tested your example. Here is the script below in R. x = 25 y = x*2 (y)-(x) log(y)-log(x) test <- function(time,x) { out = exp(0.6931472/time+log(x)) return(out) } plot(test(1:10,25),xlab = "Time", ylab = "X") It shows a reduction in X as time goes by, in an exponential manner. Is that what you were trying to say? $\endgroup$ May 1 '19 at 2:24
  • 1
    $\begingroup$ @M.Beausoleil Maybe something more like test <- function(time,x1,x2) { out = exp(log(x1)+(log(x2)-log(x1))*time) } time = seq(0,2,0.01) plot(time,test(time,25,50),xlab = "Time", ylab = "X") Starts at 25 at t=0, increases to 50 by t=1 (that is, the original time difference between x1 and x2), continues to increase up to t=2 at the same growth rate (that is, doubling every 1 dt). Function is the same as yours but I think its easier to interpret this time axis. $\endgroup$
    – Bryan Krause
    May 1 '19 at 2:51
  • 1
    $\begingroup$ Another related point: plotting in log scale shows reductions in a better way. Usually, if the reduction appears to be smaller than increases for the same absolute magnitude of fold change. With log transformed data, your reductions will just be negative but the magnitude will not appear smaller. $\endgroup$
    May 2 '19 at 8:34
  • 1
    $\begingroup$ I would also want to add that although log transformed data is easier for representation of relative changes (or in cases where the data span several orders of magnitude), it is difficult to say if effects of traits on fitness would be dependent on absolute differences or relative differences. For e.g. if the trait is growth rate: a small linear increase can magnify into a high fold change after several rounds of division. $\endgroup$
    May 2 '19 at 8:48
  • $\begingroup$ This might help also: Why is it that natural log changes are percentage changes? What is about logs that makes this so?: stats.stackexchange.com/questions/244199/… $\endgroup$ May 2 '19 at 21:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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