Calculate the rate of evolutionary change in a specific trait over time.
Average measurement (mm, kg, etc.) at start time.
Average measurement at end time.
Total duration between measurements.
Years
Million Years
Select the unit for the time entered above.
Rate of Evolution (r):–
Absolute Change:–
Time Interval (Millions of Years):–
How to Calculate Rate of Evolution
Evolutionary biology often requires quantifying how quickly a morphological trait changes over time. Whether you are analyzing fossil records or observing rapid adaptation in a laboratory setting, calculating the Rate of Evolution helps in understanding the intensity of natural selection acting upon a lineage.
The "Darwin" Unit
The standard unit for measuring evolutionary rates is the Darwin (d), named after Charles Darwin. It was proposed by J.B.S. Haldane in 1949. A rate of 1 Darwin is defined as a change in the trait by a factor of $e$ (the base of natural logarithms, approx. 2.718) every million years.
Formula: r = (ln(X₂) – ln(X₁)) / Δt
Where:
r: The rate of evolution in Darwins.
ln: The natural logarithm.
X₁: The initial mean value of the trait (e.g., average femur length at time A).
X₂: The final mean value of the trait (e.g., average femur length at time B).
Δt: The time interval between the two measurements, expressed in millions of years.
Step-by-Step Calculation Example
Let's pretend we are studying the evolution of horse tooth height from the fossil record.
Identify Data: Initial height ($X_1$) = 20 mm
Final height ($X_2$) = 24 mm
Time elapsed = 2 million years.
Take Natural Logarithms: ln(20) ≈ 2.9957
ln(24) ≈ 3.1781
Calculate Difference: 3.1781 – 2.9957 = 0.1824
Divide by Time (in millions of years): 0.1824 / 2 = 0.0912 Darwins
Understanding the Results
Positive vs. Negative Rates: A positive value indicates the trait size increased over time, while a negative value indicates a decrease. The magnitude represents the speed.
Interpreting Speed: Fossil records typically show rates between 0.01 and 1.0 Darwins. However, evolution observed in recent colonization events or artificial selection experiments can be much faster, sometimes reaching thousands of Darwins (kiloDarwins), because rates calculated over short timescales tend to appear much faster than those averaged over geological time.
Why Use Natural Logarithms?
Using logarithms allows us to measure proportional change rather than absolute change. In biology, a change from 10mm to 11mm is biologically more significant than a change from 100mm to 101mm, even though the absolute difference (1mm) is the same. The logarithmic scale normalizes this, making it easier to compare evolutionary rates across organisms of vastly different sizes.
function calculateEvolution() {
// 1. Get DOM elements
var x1Input = document.getElementById('initialTrait');
var x2Input = document.getElementById('finalTrait');
var timeInput = document.getElementById('timeElapsed');
var unitInput = document.getElementById('timeUnit');
var resultsDiv = document.getElementById('results');
var rateDisplay = document.getElementById('rateResult');
var changeDisplay = document.getElementById('changeResult');
var timeDisplay = document.getElementById('timeResult');
// 2. Parse values
var x1 = parseFloat(x1Input.value);
var x2 = parseFloat(x2Input.value);
var t = parseFloat(timeInput.value);
var unit = unitInput.value;
// 3. Validation
if (isNaN(x1) || isNaN(x2) || isNaN(t)) {
alert("Please enter valid numbers for all fields.");
return;
}
if (x1 <= 0 || x2 <= 0) {
alert("Trait values must be positive numbers greater than zero (natural log is undefined for 0 or negative).");
return;
}
if (t <= 0) {
alert("Time elapsed must be greater than zero.");
return;
}
// 4. Convert time to Million Years
// Formula requires Delta-t in Millions of Years
var timeInMillions = t;
if (unit === 'years') {
timeInMillions = t / 1000000;
}
// 5. Calculate Natural Logarithms
var lnX1 = Math.log(x1);
var lnX2 = Math.log(x2);
// 6. Calculate Rate in Darwins
// r = (lnX2 – lnX1) / timeInMillions
var numerator = lnX2 – lnX1;
var rate = numerator / timeInMillions;
// 7. Format Logic
// Determine number of decimals based on magnitude
var rateFormatted;
if (Math.abs(rate) 0 ? "+" : "";
// 8. Display Results
rateDisplay.innerHTML = rateFormatted;
changeDisplay.innerHTML = sign + absChange;
timeDisplay.innerHTML = timeInMillions.toFixed(6) + " m.y.";
resultsDiv.style.display = "block";
}