Analysis of body size distribution and average size in T. rex, based on the dataset published in: Paul, G.S., Persons, W.S. and Van Raalte, J. 2022. The Tyrant Lizard King, Queen and Emperor: Multiple Lines of Morphological and Stratigraphic Evidence Support Subtle Evolution and Probable Speciation Within the North American Genus Tyrannosaurus. Evolutionary Biology 49 (2): 156–179.
read.csv("rexes_pauletal_22.csv", row.names=1)->rexes
rexes<-rexes[rowSums(is.na(rexes))!=ncol(rexes),]#delete rows with only NAs
nrow(rexes)
## [1] 34
the dataset looks like this:
fl | fc | hl | hc | ill | ild | m2l | m2c | m4l | m4c | m4d | maxl | maxd | dl | dd | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
exBHI 3033 Stan | 1350 | 505 | NA | NA | 1540 | 585 | 595 | 280 | 600 | 247 | NA | 740 | 378 | 880 | 151 |
Z-rex/Samson | 1343 | 560 | NA | NA | NA | NA | 610 | 305 | 635 | 280 | NA | 811 | 434 | 901 | 176 |
RSM P2523.8 Scotty | 1333 | 590 | NA | NA | 1545 | 515 | NA | NA | NA | NA | NA | NA | NA | NA | NA |
FMNH PR2081 Sue | 1321 | 580 | 390 | 185 | 1525 | 608 | 584 | NA | 621 | NA | 83 | NA | NA | 954 | 189 |
BHI 6248 Cope | 1300 | 630 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
TMT v222 Lee | 1295 | 545 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
MOR 1128 G-rex | 1280 | 580 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
USNM 555000 Wankel | 1280 | 520 | 365 | 162 | 1470 | 513 | 585 | 295 | 605 | 253 | NA | 824 | 408 | 879 | 151 |
CM 9380 | 1269 | 534 | 330 | 145 | 1515 | 530 | 615 | NA | 600 | NA | 87 | 690 | 378 | 850 | 178 |
MOR 980 Peck’s Rex/Rigby | 1232 | 483 | 362 | 165 | 1397 | 483 | 597 | 232 | NA | NA | NA | 627 | 277 | 543 | 164 |
RMDRC 2002.MT-001 | 1220 | 580 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
HMN MB.R.91216 Tristan | 1220 | 520 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
TMP 81.6.1 Black Beauty | 1210 | 460 | 302 | 150 | NA | NA | NA | NA | NA | NA | NA | 667 | 403 | 705 | 131 |
LL 12823 | 1200 | 467 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
BHI 6242 Henry | 1189 | 512 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
LACM 150167 Thomas | 1181 | 470 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
BHI 6232 | 1180 | 527 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
BHI 6435 | 1180 | 512 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
BHI 6436 | 1170 | 530 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
RGM 792.000 Trix | 1170 | 529 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
MOR 1125 B-rex | 1150 | 515 | NA | NA | NA | NA | NA | NA | NA | NA | NA | 610 | 324 | 699 | 129 |
BHI 6233 | 1110 | 515 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
BHI 6230 Wy-rex | 1100 | 494 | 330 | 145 | NA | NA | 600 | 272 | 625 | 238 | 87 | NA | NA | NA | NA |
MOR 009 Hager | 1100 | 469 | NA | NA | 1180 | 407 | 540 | NA | 560 | NA | 67 | NA | NA | NA | NA |
USNM 6183 | 990 | 430 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
LACM 23845 | 900 | 305 | NA | NA | NA | NA | 465 | NA | NA | NA | NA | NA | NA | NA | NA |
LACM 23844 | NA | NA | NA | NA | NA | NA | 575 | NA | NA | NA | NA | 658 | 303 | 883 | 168 |
BHI 4100 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 789 | 164 |
BHI 6231 | NA | NA | 360 | 172 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
MOR 008 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 664 | 322 | 836 | 171 |
AMNH 5027 | NA | NA | NA | NA | 1448 | 470 | NA | NA | NA | NA | NA | 680 | 345 | 850 | 135 |
NHMUK R 7994 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 941 | 182 |
TCM 2001.90.1 | NA | NA | NA | NA | 1275 | NA | NA | NA | 565 | 263 | NA | NA | NA | NA | NA |
UCMP 118742 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 754 | 363 | NA | NA |
First, we analyze the known femur length data
For our simplest approach, we can just take the mean of all the available femur lengths and circumferences:
mean(rexes$fl, na.rm=T)
## [1] 1202.808
mean(rexes$fc, na.rm=T)
## [1] 513.9231
As we can see, our resulting average femur length is about 1203 (n=26) and femur circumference averages 514 (n=26).
If we are interested in the uncertainty that comes with those mean estimates, we can calculate the confidence interval (I am using the 90% interval here because I’m primarily interested in one-tailed comparisons, i.e. “bigger than” or “smaller than”):
t.test(rexes$fl, conf.level=0.9)
##
## One Sample t-test
##
## data: rexes$fl
## t = 57.812, df = 25, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 90 percent confidence interval:
## 1167.269 1238.346
## sample estimates:
## mean of x
## 1202.808
However, the data appear to be bordering significant non-normality non-normal (possibly because the best-preserved skeletons also tend to be the largest ones, and are hence overrepresented in datasets)
hist(rexes$fl)
shapiro.test(rexes$fl)
##
## Shapiro-Wilk normality test
##
## data: rexes$fl
## W = 0.92654, p-value = 0.06414
Hence, the t. test-confidence interval (which assumes normality) may be biased. While I cannot accurately account for the underlying bias (that might be the reason for the skew in the data, but might equally apply to other large theropods we might want to compare T. rex to), we can account for the lack of normality by calculating our confidence interval using a bootstrap.
source("confints.R")#load functions from script
set.seed(42)
bootCI(rexes$fl[!is.na(rexes$fl)], mean)
## 5% 95%
## 1167.931 1235.194
As you can see in the histogram above, there are also two femora in the sample (in rows 25 and 26) that are 90 and 99 cm long respectively, which might be from subadults. We can exclude those from the analysis if we want:
mean(rexes$fl[-c(25,26)], na.rm=T)
## [1] 1224.292
bootCI(rexes$fl[1:24], mean)
## 5% 95%
## 1197.331 1250.629
Doing the same for femur circumference
mean(rexes$fc[-c(25,26)], na.rm=T)
## [1] 526.125
bootCI(rexes$fc[1:24], mean)
## 5% 95%
## 513.2021 540.3979
These of course are only for the specimens with known femora. We can attempt to verify these findings by estimating femur sizes for the specimens in the dataset that do not have femora (n=8).
Adding non-femur data
For that, we fit predictive models for data with known femur lengths:
lm(fl~maxl,data=rexes[1:26,])->lm.max.rexes#maxilla length
lm(fl~dl,data=rexes[1:26,])->lm.dent.rexes#dentary length
lm(fl~hl,data=rexes[1:26,])->lm.hum.rexes#humerus length
lm(fl~m4l,data=rexes[1:26,])->lm.m4.rexes#metatarsal 4
Now we can make predictions for specimens without femora, but with preserved humeri, maxillae, dentaries or fourth metatarsals
preds<-matrix(NA,nrow=8, ncol=4)
predict(lm.max.rexes, rexes[27:34,])->preds[,1]
predict(lm.dent.rexes, rexes[27:34,])->preds[,2]
predict(lm.hum.rexes, rexes[27:34,])->preds[,3]
predict(lm.m4.rexes, rexes[27:34,])->preds[,4]
rownames(preds)<-rownames(rexes)[27:34]
The resulting estimates look like this:
LACM 23844 | 1227.626 | 1299.736 | NA | NA |
BHI 4100 | NA | 1264.772 | NA | NA |
BHI 6231 | NA | NA | 1255.062 | NA |
MOR 008 | 1231.603 | 1282.254 | NA | NA |
AMNH 5027 | 1242.209 | 1287.461 | NA | NA |
NHMUK R 7994 | NA | 1321.309 | NA | NA |
TCM 2001.90.1 | NA | NA | NA | 1170.634 |
UCMP 118742 | 1291.261 | NA | NA | NA |
So we now have at least one estimate of femur length for each of these specimens without femora. For simplicity, we will simply take the mean for each row, i.e. for all available estimates per specimen.
apply(preds,1,mean, na.rm=T)->predm#calculate means
c(rexes$fl[1:26],predm)->r_fl#combine all (measured and estimated) femur lengths
the histogram for the resulting dataset (n=34) looks like this:
hist(r_fl)
shapiro.test(r_fl)#testing normality
##
## Shapiro-Wilk normality test
##
## data: r_fl
## W = 0.90668, p-value = 0.006918
(and again the data are non-normal, this time significantly)
Finally, we can analyze the resulting dataset:
mean(r_fl[-c(25,26)])#mean femur length (without the two potential subadults)
## [1] 1233.484
bootCI(r_fl[-c(25,26)], mean)#bootstrap confidence interval
## 5% 95%
## 1212.604 1253.002
Based on the interval, it appears we can be fairly confident in our result (within the limits of fossil record incompleteness and biases, of course), at least within a couple of centimetres (average femur length likely 123±2 cm).
We can also repeat the same analysis with femur circumference. However, since the predictive equations for this metric tend to lack statistical significance (p>0.05), the resulting figures are only a rough indication (and I will not be using them in the size estimate below, only to demonstrate that the resulting femur circumference ends up similar to what we get when ignoring these specimens).
#fit predictive models for data with known femur circumferences
lm(fc~maxl,data=rexes[1:26,])->lm.max.rexes
lm(fc~dl,data=rexes[1:26,])->lm.dent.rexes
lm(fc~hl,data=rexes[1:26,])->lm.hum.rexes
lm(fc~m4l,data=rexes[1:26,])->lm.m4.rexes
#make predictions from models
preds<-matrix(NA,nrow=8, ncol=4)
predict(lm.max.rexes, rexes[27:34,])->preds[,1]
predict(lm.dent.rexes, rexes[27:34,])->preds[,2]
predict(lm.hum.rexes, rexes[27:34,])->preds[,3]
predict(lm.m4.rexes, rexes[27:34,])->preds[,4]
#calculate means for each specimen
apply(preds,1,mean, na.rm=T)->predm
#combine data
c(rexes$fc[1:26],predm)->r_fc
#femur circumference estimates:
mean(r_fc[-c(25,26)])#without…
## [1] 523.9586
mean(r_fc)#…and with potential subadults
## [1] 514.7551
Size estimates So as we just estimated, the mean femur length for 32 adult T. rex specimens based on Paul’s dataset is approx. 1233 mm, and the mean femur circumference is (at most) approx. 526 mm.
We can now try to estimate body size based on those metrics by comparing them to the respective measurements in sue (FMNH PR 2081), the most complete known specimen:
mean(r_fl[-c(25,26)])/1321*12.3#estimated TL (in m) for average-length of 32 adult T. rex specimens, based on Sue
## [1] 11.48513
(mean(r_fl[-c(25,26)])/1321)^3*8.4#mass based on Hartman’s GDI, scaling from femur length
## [1] 6.838662
(mean(r_fc[1:24])/580)^3*8.4#estimated mass (in tons) based on Hartman’s Sue GDI, scaling from femur circumference
## [1] 6.269922
Both mass and length estimates are based on the skeletal reconstruction by Scott Hartman, and his volumetric mass estimate based thereon (https://www.skeletaldrawing.com/home/mass-estimates-north-vs-south-redux772013).
So the average length for T. rex was likely around 11.5 m, and such an individual would have massed 6.3 to 6.8 t. Note that the estimate from femur circumference might be too conservative, as Sue is a “robust” specimen with a proportionately thick femur. The real value would likely fall somewhere between the two mass estimates.