hominin.data[1,4]<-hominin.data[1,2]-mean(preds$Australopithecus_afarensis)
hominin.data[2,4]<-hominin.data[2,2]-mean(preds$Paranthropus_boisei)
hominin.data[3,4]<-hominin.data[3,2]-mean(preds$Paranthropus_robustus)
hominin.data[4,4]<-hominin.data[4,2]-mean(preds$Australopithecus_africanus)
hominin.data[5,4]<-hominin.data[5,2]-mean(preds$Homo_rudolfensis)
hominin.data[6,4]<-hominin.data[6,2]-mean(preds$Homo_habilis)
hominin.data[7,4]<-hominin.data[7,2]-mean(preds$Homo_erectus)
hominin.data[8,4]<-hominin.data[8,2]-mean(preds$Homo_sapiens_neanderthalensis)
hominin.data[9,4]<-hominin.data[9,2]-mean(preds$Homo_sapiens)
hominin.comparative.data<-comparative.data(sub.tree,hominin.data,Species)
brownian.model<-pgls(ECV.deviation~1,hominin.comparative.data)
directional.model<-pgls(ECV.deviation~divergence.times,hominin.comparative.data)
acceleration.model<-pgls(ECV.deviation~1,hominin.comparative.data,delta = 'ML',bounds = list(delta=c(1e-6,20)))
directional.acceleration.model<-pgls(ECV.deviation~divergence.times,hominin.comparative.data,delta = 'ML',bounds = list(delta=c(1e-6,20)))
AICcs<-c(brownian.model$aicc,directional.model$aicc,acceleration.model$aicc,directional.acceleration.model$aicc)
names(AICcs)<-c("brownain","directional","acceleration","directional acceleration")
plot(hominin.comparative.data$data$divergence.times,hominin.comparative.data$data$residual,
xlab=expression(paste("branch length from ",italic(Pan),"-hominin split (10"^"6"*" years)",sep="")),
ylab=expression(paste("brain size deviaion (",log[10],"(mL))",sep="")),
pch=c(0,1,2,5,6,3,10,4,8))
point.x=floor(par()$usr[1])+.4
text.x=floor(par()$usr[1])+.45
line.x=floor(par()$usr[1])+1
points(rep(point.x,times=9),c(.6,.58,.56,.54,.52,.50,.48,.46,.44),col=c("black","black","black","black","black","black","black","black","black","grey","grey","grey"),pch=c(8,4,10,3,6,5,2,1,0))
text(text.x,.6,labels="H. sapiens",font=3,cex=.8,offset=0,pos=4)
text(text.x,.58,labels="H. neanderthalensis",font=3,cex=.8,offset=0,pos=4)
text(text.x,.56,labels="H. erectus",font=3,cex=.8,offset=0,pos=4)
text(text.x,.54,labels="H. habilis",font=3,cex=.8,offset=0,pos=4)
text(text.x,.52,labels="H. rudolfensis",font=3,cex=.8,offset=0,pos=4)
text(text.x,.50,labels="A. africanus",font=3,cex=.8,offset=0,pos=4)
text(text.x,.48,labels="P. robustus",font=3,cex=.8,offset=0,pos=4)
text(text.x,.46,labels="P. boisei",font=3,cex=.8,offset=0,pos=4)
text(text.x,.44,labels="A. afarensis",font=3,cex=.8,offset=0,pos=4)
print(AICcs)
hominin.data
mean(preds$Homo_sapiens)
hominin.data[9,2]
hominin.data[1,4]<-hominin.data[1,2]-mean(preds$Australopithecus_africanus)
hominin.data[2,4]<-hominin.data[2,2]-mean(preds$Homo_erectus)
hominin.data[3,4]<-hominin.data[3,2]-mean(preds$Homo_habilis)
hominin.data[4,4]<-hominin.data[4,2]-mean(preds$Homo_rudolfensis)
hominin.data[5,4]<-hominin.data[5,2]-mean(preds$Homo_sapiens)
hominin.data[6,4]<-hominin.data[6,2]-mean(preds$Homo_sapiens_neanderthalensis)
hominin.data[7,4]<-hominin.data[7,2]-mean(preds$Paranthropus_boisei)
hominin.data[8,4]<-hominin.data[8,2]-mean(preds$Paranthropus_robustus)
hominin.data[9,4]<-hominin.data[9,2]-mean(preds$Australopithecus_afarensis)
##setup packages###
library(caper)
require(devtools)
library(geiger)
library(adephylo)
tree = read.nexus("grafted.tree.txt")
tree<-drop.tip(tree,tip="Ardipithecus_ramidus")
data = read.csv("data set 1.csv", header=T)
#hominin data
sub.tree<-extract.clade(tree,getMRCA(tree,as.character(data[c(225,227:231,232,233:235),"Species"])))
divergence.times<-distRoot(sub.tree,as.character(data[c(225,227:231,233:235),1]))
hominin.data<-data.frame(data[c(225,227:231,233:235),c("Species","Log.ECV")],divergence.times,NA)
colnames(hominin.data)<-c("Species","ECV","divergence.times","ECV.deviation")
#run for distance between observed and mean BayesModelS prediction
preds<-read.csv("hominins.removed.log.ecv.log.body.mass.female.predictions.csv")
preds<-preds[,-1]
hominin.data[1,4]<-hominin.data[1,2]-mean(preds$Australopithecus_africanus)
hominin.data[2,4]<-hominin.data[2,2]-mean(preds$Homo_erectus)
hominin.data[3,4]<-hominin.data[3,2]-mean(preds$Homo_habilis)
hominin.data[4,4]<-hominin.data[4,2]-mean(preds$Homo_rudolfensis)
hominin.data[5,4]<-hominin.data[5,2]-mean(preds$Homo_sapiens)
hominin.data[6,4]<-hominin.data[6,2]-mean(preds$Homo_sapiens_neanderthalensis)
hominin.data[7,4]<-hominin.data[7,2]-mean(preds$Paranthropus_boisei)
hominin.data[8,4]<-hominin.data[8,2]-mean(preds$Paranthropus_robustus)
hominin.data[9,4]<-hominin.data[9,2]-mean(preds$Australopithecus_afarensis)
hominin.comparative.data<-comparative.data(sub.tree,hominin.data,Species)
brownian.model<-pgls(ECV.deviation~1,hominin.comparative.data)
directional.model<-pgls(ECV.deviation~divergence.times,hominin.comparative.data)
acceleration.model<-pgls(ECV.deviation~1,hominin.comparative.data,delta = 'ML',bounds = list(delta=c(1e-6,20)))
directional.acceleration.model<-pgls(ECV.deviation~divergence.times,hominin.comparative.data,delta = 'ML',bounds = list(delta=c(1e-6,20)))
AICcs<-c(brownian.model$aicc,directional.model$aicc,acceleration.model$aicc,directional.acceleration.model$aicc)
names(AICcs)<-c("brownain","directional","acceleration","directional acceleration")
plot(hominin.comparative.data$data$divergence.times,hominin.comparative.data$data$residual,
xlab=expression(paste("branch length from ",italic(Pan),"-hominin split (10"^"6"*" years)",sep="")),
ylab=expression(paste("brain size deviaion (",log[10],"(mL))",sep="")),
pch=c(0,1,2,5,6,3,10,4,8))
point.x=floor(par()$usr[1])+.4
text.x=floor(par()$usr[1])+.45
line.x=floor(par()$usr[1])+1
points(rep(point.x,times=9),c(.6,.58,.56,.54,.52,.50,.48,.46,.44),col=c("black","black","black","black","black","black","black","black","black","grey","grey","grey"),pch=c(8,4,10,3,6,5,2,1,0))
text(text.x,.6,labels="H. sapiens",font=3,cex=.8,offset=0,pos=4)
text(text.x,.58,labels="H. neanderthalensis",font=3,cex=.8,offset=0,pos=4)
text(text.x,.56,labels="H. erectus",font=3,cex=.8,offset=0,pos=4)
text(text.x,.54,labels="H. habilis",font=3,cex=.8,offset=0,pos=4)
text(text.x,.52,labels="H. rudolfensis",font=3,cex=.8,offset=0,pos=4)
text(text.x,.50,labels="A. africanus",font=3,cex=.8,offset=0,pos=4)
text(text.x,.48,labels="P. robustus",font=3,cex=.8,offset=0,pos=4)
text(text.x,.46,labels="P. boisei",font=3,cex=.8,offset=0,pos=4)
text(text.x,.44,labels="A. afarensis",font=3,cex=.8,offset=0,pos=4)
head(hominin.data)
##setup packages###
library(caper)
require(devtools)
library(geiger)
library(adephylo)
tree = read.nexus("grafted.tree.txt")
tree<-drop.tip(tree,tip="Ardipithecus_ramidus")
data = read.csv("data set 1.csv", header=T)
#hominin data
sub.tree<-extract.clade(tree,getMRCA(tree,as.character(data[c(225,227:231,232,233:235),"Species"])))
divergence.times<-distRoot(sub.tree,as.character(data[c(225,227:231,233:235),1]))
hominin.data<-data.frame(data[c(225,227:231,233:235),c("Species","Log.ECV")],divergence.times,NA)
colnames(hominin.data)<-c("Species","ECV","divergence.times","ECV.deviation")
#run for distance between observed and mean BayesModelS prediction
preds<-read.csv("hominins.removed.log.ecv.log.body.mass.female.predictions.csv")
preds<-preds[,-1]
hominin.data[1,4]<-hominin.data[1,2]-mean(preds$Australopithecus_africanus)
hominin.data[2,4]<-hominin.data[2,2]-mean(preds$Homo_erectus)
hominin.data[3,4]<-hominin.data[3,2]-mean(preds$Homo_habilis)
hominin.data[4,4]<-hominin.data[4,2]-mean(preds$Homo_rudolfensis)
hominin.data[5,4]<-hominin.data[5,2]-mean(preds$Homo_sapiens)
hominin.data[6,4]<-hominin.data[6,2]-mean(preds$Homo_sapiens_neanderthalensis)
hominin.data[7,4]<-hominin.data[7,2]-mean(preds$Paranthropus_boisei)
hominin.data[8,4]<-hominin.data[8,2]-mean(preds$Paranthropus_robustus)
hominin.data[9,4]<-hominin.data[9,2]-mean(preds$Australopithecus_afarensis)
hominin.comparative.data<-comparative.data(sub.tree,hominin.data,Species)
hominin.comparative.data$data
brownian.model<-pgls(ECV.deviation~1,hominin.comparative.data)
directional.model<-pgls(ECV.deviation~divergence.times,hominin.comparative.data)
acceleration.model<-pgls(ECV.deviation~1,hominin.comparative.data,delta = 'ML',bounds = list(delta=c(1e-6,20)))
directional.acceleration.model<-pgls(ECV.deviation~divergence.times,hominin.comparative.data,delta = 'ML',bounds = list(delta=c(1e-6,20)))
AICcs<-c(brownian.model$aicc,directional.model$aicc,acceleration.model$aicc,directional.acceleration.model$aicc)
names(AICcs)<-c("brownain","directional","acceleration","directional acceleration")
plot(hominin.comparative.data$data$divergence.times,hominin.comparative.data$data$residual,
xlab=expression(paste("branch length from ",italic(Pan),"-hominin split (10"^"6"*" years)",sep="")),
ylab=expression(paste("brain size deviaion (",log[10],"(mL))",sep="")),
pch=c(0,1,2,5,6,3,10,4,8))
##setup packages###
library(caper)
require(devtools)
library(geiger)
library(adephylo)
### Set inputs ###
setwd("/Volumes/IFM External Drive/Brain Uniqueness/cluster runs hominins removed/isler.fossil.graft.no.ardi")
dependent.var<- "Log.ECV"
independent.var<-"Log.Body.Mass.female"
Formula<-Log.ECV ~ Log.Body.Mass.female
tree = read.nexus("tree block.txt")[[1]]
data = read.csv("brain.data.csv", header=T)
data[,1]<-gsub(" ","_",data[,1])
data<-data[-241,]
{
### prep data###
yname<- dependent.var
y=which(colnames(data)==yname)  #column name of dependent variable
zname<-  independent.var
z=which(colnames(data)==zname)  #column name of independent variable
###remove NAs ###
if (sum(is.na(data[,y]))>0) {data<-data[-c(which(is.na(data[,y]))),]}
if (sum(is.na(data[,z]))>0) {data<-data[-c(which(is.na(data[,z]))),]}
###get rid of tips that don't correspond to data###
subtree<-c()
for (i in 1:length(tree$tip.label)) {if (! tree$tip.label[i] %in% data[,1]) {subtree<-c(subtree,i)}}
tree<-drop.tip(tree,subtree)
if (is.binary.tree(tree) != T) {tree<-multi2di(tree)}
zero.branches<-which(tree$edge.length==0)
tree$edge.length[zero.branches]<-rep(.0001,times=length(zero.branches))
##get rid of data that isn't in tree###
drop.dat<-which(! (data[,1] %in% tree$tip.label))
data<-data[-c(drop.dat),]
###set order of data to order of tips##
newdata<-matrix(NA,dim(data)[1],3)
colnames(newdata)<-c("species",yname,zname)
a<-c(match(tree$tip.label,as.vector(data[,1])))
for (i in 1:dim(newdata)[1])
{
newdata[i,1]<-paste(data[a[i],1])
newdata[i,2]<-as.numeric(data[a[i],y])
newdata[i,3]<-as.numeric(data[a[i],z])
}
a<-as.numeric(newdata[,2])
b<-as.numeric(newdata[,3])
newdata<-as.data.frame(newdata)
newdata[,2]<-a
newdata[,3]<-b
} #data cleaning
#make data vectors
dat<-as.vector(as.numeric(newdata[,2]))
pred<-as.vector(as.numeric(newdata[,3]))
primate.data<-data.frame(newdata[,1],dat,pred)
colnames(primate.data)<-c("names","ECV","body.mass")
#pgls all primates
primate.comparative.data<-comparative.data(tree,primate.data,names)
primate.pgls<-pgls(ECV~body.mass,primate.comparative.data)
#hominin data
sub.tree<-extract.clade(tree,getMRCA(tree,as.character(primate.data[142:151,"names"])))
divergence.times<-distRoot(sub.tree,as.character(newdata[143:151,1]))
hominin.data<-data.frame(primate.data[143:151,],primate.pgls$residuals[143:151],divergence.times)
colnames(hominin.data)<-c("names","ECV","body.mass","residual","divergence.times")
#run for distance between observed and mean BayesModelS prediction
preds<-read.csv("log.ecv.log.body.mass.female.predictions.csv")
preds<-preds[,-1]
hominin.data[1,4]<-hominin.data[1,2]-mean(preds$Australopithecus_afarensis)
hominin.data[2,4]<-hominin.data[2,2]-mean(preds$Paranthropus_boisei)
hominin.data[3,4]<-hominin.data[3,2]-mean(preds$Paranthropus_robustus)
hominin.data[4,4]<-hominin.data[4,2]-mean(preds$Australopithecus_africanus)
hominin.data[5,4]<-hominin.data[5,2]-mean(preds$Homo_rudolfensis)
hominin.data[6,4]<-hominin.data[6,2]-mean(preds$Homo_habilis)
hominin.data[7,4]<-hominin.data[7,2]-mean(preds$Homo_erectus)
hominin.data[8,4]<-hominin.data[8,2]-mean(preds$Homo_sapiens_neanderthalensis)
hominin.data[9,4]<-hominin.data[9,2]-mean(preds$Homo_sapiens)
hominin.data
hominin.comparative.data
hominin.comparative.data$data
plot(hominin.comparative.data$data$divergence.times,hominin.comparative.data$data$ECV.deviation,
xlab=expression(paste("branch length from ",italic(Pan),"-hominin split (10"^"6"*" years)",sep="")),
ylab=expression(paste("brain size deviaion (",log[10],"(mL))",sep="")),
pch=c(0,1,2,5,6,3,10,4,8))
point.x=floor(par()$usr[1])+.4
text.x=floor(par()$usr[1])+.45
##setup packages###
library(caper)
require(devtools)
library(geiger)
library(adephylo)
tree = read.nexus("grafted.tree.txt")
tree<-drop.tip(tree,tip="Ardipithecus_ramidus")
data = read.csv("data set 1.csv", header=T)
#hominin data
sub.tree<-extract.clade(tree,getMRCA(tree,as.character(data[c(225,227:231,232,233:235),"Species"])))
divergence.times<-distRoot(sub.tree,as.character(data[c(225,227:231,233:235),1]))
hominin.data<-data.frame(data[c(225,227:231,233:235),c("Species","Log.ECV")],divergence.times,NA)
colnames(hominin.data)<-c("Species","ECV","divergence.times","ECV.deviation")
#run for distance between observed and mean BayesModelS prediction
preds<-read.csv("hominins.removed.log.ecv.log.body.mass.female.predictions.csv")
preds<-preds[,-1]
hominin.data[1,4]<-hominin.data[1,2]-mean(preds$Australopithecus_africanus)
hominin.data[2,4]<-hominin.data[2,2]-mean(preds$Homo_erectus)
hominin.data[3,4]<-hominin.data[3,2]-mean(preds$Homo_habilis)
hominin.data[4,4]<-hominin.data[4,2]-mean(preds$Homo_rudolfensis)
hominin.data[5,4]<-hominin.data[5,2]-mean(preds$Homo_sapiens)
hominin.data[6,4]<-hominin.data[6,2]-mean(preds$Homo_sapiens_neanderthalensis)
hominin.data[7,4]<-hominin.data[7,2]-mean(preds$Paranthropus_boisei)
hominin.data[8,4]<-hominin.data[8,2]-mean(preds$Paranthropus_robustus)
hominin.data[9,4]<-hominin.data[9,2]-mean(preds$Australopithecus_afarensis)
hominin.comparative.data<-comparative.data(sub.tree,hominin.data,Species)
brownian.model<-pgls(ECV.deviation~1,hominin.comparative.data)
directional.model<-pgls(ECV.deviation~divergence.times,hominin.comparative.data)
acceleration.model<-pgls(ECV.deviation~1,hominin.comparative.data,delta = 'ML',bounds = list(delta=c(1e-6,20)))
directional.acceleration.model<-pgls(ECV.deviation~divergence.times,hominin.comparative.data,delta = 'ML',bounds = list(delta=c(1e-6,20)))
AICcs<-c(brownian.model$aicc,directional.model$aicc,acceleration.model$aicc,directional.acceleration.model$aicc)
names(AICcs)<-c("brownain","directional","acceleration","directional acceleration")
plot(hominin.comparative.data$data$divergence.times,hominin.comparative.data$data$ECV.deviation,
xlab=expression(paste("branch length from ",italic(Pan),"-hominin split (10"^"6"*" years)",sep="")),
ylab=expression(paste("brain size deviaion (",log[10],"(mL))",sep="")),
pch=c(0,1,2,5,6,3,10,4,8))
point.x=floor(par()$usr[1])+.4
text.x=floor(par()$usr[1])+.45
line.x=floor(par()$usr[1])+1
points(rep(point.x,times=9),c(.6,.58,.56,.54,.52,.50,.48,.46,.44),col=c("black","black","black","black","black","black","black","black","black","grey","grey","grey"),pch=c(8,4,10,3,6,5,2,1,0))
text(text.x,.6,labels="H. sapiens",font=3,cex=.8,offset=0,pos=4)
text(text.x,.58,labels="H. neanderthalensis",font=3,cex=.8,offset=0,pos=4)
text(text.x,.56,labels="H. erectus",font=3,cex=.8,offset=0,pos=4)
text(text.x,.54,labels="H. habilis",font=3,cex=.8,offset=0,pos=4)
text(text.x,.52,labels="H. rudolfensis",font=3,cex=.8,offset=0,pos=4)
text(text.x,.50,labels="A. africanus",font=3,cex=.8,offset=0,pos=4)
text(text.x,.48,labels="P. robustus",font=3,cex=.8,offset=0,pos=4)
text(text.x,.46,labels="P. boisei",font=3,cex=.8,offset=0,pos=4)
text(text.x,.44,labels="A. afarensis",font=3,cex=.8,offset=0,pos=4)
#curve(directional.model$model$coef[1]+directional.model$model$coef[2]*x,lty=2,add=T)
#curve(acceleration.model$model$coef[1]+x^acceleration.model$param[3],lty=3,add=T)
#curve(directional.acceleration.model$model$coef[1]+directional.acceleration.model$model$coef[2]*(x^directional.acceleration.model$param[3]),lty=4,add=T)
#segments(line.x,.6,line.x+.25,.6,lty=2)
#segments(line.x,.575,line.x+.25,.575,lty=3)
#segments(line.x,.55,line.x+.25,.55,lty=4)
#text(line.x+.3,.6,labels="directional model",pos=4,cex=.8,font = 1,offset = 0)
#text(line.x+.3,.575,labels="acceleration model",pos=4,cex=.8,font = 1,offset = 0)
#text(line.x+.3,.55,labels="directional acceleration model",pos=4,cex=.8,font = 1,offset = 0)
print(AICcs)
plot(rescale(drop.tip(sub.tree,"Pan_troglodytes"),model = "delta",directional.acceleration.model$param[3]))
setwd("~/Dropbox/brain manuscripts/large structures/eLife revision/supplementary materials/code")
##setup packages###
library(caper)
require(devtools)
library(geiger)
library(adephylo)
### Set inputs ###
setwd("/Volumes/IFM External Drive/Brain Uniqueness/cluster runs hominins removed/isler.fossil.graft.no.ardi")
dependent.var<- "Log.ECV"
independent.var<-"Log.Body.Mass.female"
Formula<-Log.ECV ~ Log.Body.Mass.female
tree = read.nexus("tree block.txt")[[1]]
data = read.csv("brain.data.csv", header=T)
data[,1]<-gsub(" ","_",data[,1])
data<-data[-241,]
{
### prep data###
yname<- dependent.var
y=which(colnames(data)==yname)  #column name of dependent variable
zname<-  independent.var
z=which(colnames(data)==zname)  #column name of independent variable
###remove NAs ###
if (sum(is.na(data[,y]))>0) {data<-data[-c(which(is.na(data[,y]))),]}
if (sum(is.na(data[,z]))>0) {data<-data[-c(which(is.na(data[,z]))),]}
###get rid of tips that don't correspond to data###
subtree<-c()
for (i in 1:length(tree$tip.label)) {if (! tree$tip.label[i] %in% data[,1]) {subtree<-c(subtree,i)}}
tree<-drop.tip(tree,subtree)
if (is.binary.tree(tree) != T) {tree<-multi2di(tree)}
zero.branches<-which(tree$edge.length==0)
tree$edge.length[zero.branches]<-rep(.0001,times=length(zero.branches))
##get rid of data that isn't in tree###
drop.dat<-which(! (data[,1] %in% tree$tip.label))
data<-data[-c(drop.dat),]
###set order of data to order of tips##
newdata<-matrix(NA,dim(data)[1],3)
colnames(newdata)<-c("species",yname,zname)
a<-c(match(tree$tip.label,as.vector(data[,1])))
for (i in 1:dim(newdata)[1])
{
newdata[i,1]<-paste(data[a[i],1])
newdata[i,2]<-as.numeric(data[a[i],y])
newdata[i,3]<-as.numeric(data[a[i],z])
}
a<-as.numeric(newdata[,2])
b<-as.numeric(newdata[,3])
newdata<-as.data.frame(newdata)
newdata[,2]<-a
newdata[,3]<-b
} #data cleaning
#make data vectors
dat<-as.vector(as.numeric(newdata[,2]))
pred<-as.vector(as.numeric(newdata[,3]))
primate.data<-data.frame(newdata[,1],dat,pred)
colnames(primate.data)<-c("names","ECV","body.mass")
#pgls all primates
primate.comparative.data<-comparative.data(tree,primate.data,names)
primate.pgls<-pgls(ECV~body.mass,primate.comparative.data)
#hominin data
sub.tree<-extract.clade(tree,getMRCA(tree,as.character(primate.data[142:151,"names"])))
divergence.times<-distRoot(sub.tree,as.character(newdata[143:151,1]))
hominin.data<-data.frame(primate.data[143:151,],primate.pgls$residuals[143:151],divergence.times)
colnames(hominin.data)<-c("names","ECV","body.mass","residual","divergence.times")
#run for distance between observed and mean BayesModelS prediction
preds<-read.csv("log.ecv.log.body.mass.female.predictions.csv")
preds<-preds[,-1]
hominin.data[1,4]<-hominin.data[1,2]-mean(preds$Australopithecus_afarensis)
hominin.data[2,4]<-hominin.data[2,2]-mean(preds$Paranthropus_boisei)
hominin.data[3,4]<-hominin.data[3,2]-mean(preds$Paranthropus_robustus)
hominin.data[4,4]<-hominin.data[4,2]-mean(preds$Australopithecus_africanus)
hominin.data[5,4]<-hominin.data[5,2]-mean(preds$Homo_rudolfensis)
hominin.data[6,4]<-hominin.data[6,2]-mean(preds$Homo_habilis)
hominin.data[7,4]<-hominin.data[7,2]-mean(preds$Homo_erectus)
hominin.data[8,4]<-hominin.data[8,2]-mean(preds$Homo_sapiens_neanderthalensis)
hominin.data[9,4]<-hominin.data[9,2]-mean(preds$Homo_sapiens)
#
hominin.comparative.data<-comparative.data(sub.tree,hominin.data,names)
##detecting directional drift
brownian.model<-pgls(residual~1,hominin.comparative.data)
directional.model<-pgls(residual~divergence.times,hominin.comparative.data)
#detecting phylogenetic signal
signal.model<-pgls(residual~1,hominin.comparative.data,lambda = 'ML')
#detecting accelerated evolution
acceleration.model<-pgls(residual~1,hominin.comparative.data,delta = 'ML',bounds = list(delta=c(1e-6,20)))
directional.acceleration.model<-pgls(residual~divergence.times,hominin.comparative.data,delta = 'ML',bounds = list(delta=c(1e-6,20)))
AICcs<-c(brownian.model$aicc,directional.model$aicc,acceleration.model$aicc,directional.acceleration.model$aicc,signal.model$aicc)
names(AICcs)<-c("brownain","directional","acceleration","directional acceleration","signal")
plot(hominin.comparative.data$data$divergence.times,hominin.comparative.data$data$residual,
xlab=expression(paste("branch length from ",italic(Pan),"-hominin split (10"^"6"*" years)",sep="")),
ylab=expression(paste("brain size deviaion (",log[10],"(mL))",sep="")),
pch=c(0,1,2,5,6,3,10,4,8))
point.x=floor(par()$usr[1])+.4
text.x=floor(par()$usr[1])+.45
line.x=floor(par()$usr[1])+1
points(rep(point.x,times=9),c(.6,.58,.56,.54,.52,.50,.48,.46,.44),col=c("black","black","black","black","black","black","black","black","black","grey","grey","grey"),pch=c(8,4,10,3,6,5,2,1,0))
text(text.x,.6,labels="H. sapiens",font=3,cex=.8,offset=0,pos=4)
text(text.x,.58,labels="H. neanderthalensis",font=3,cex=.8,offset=0,pos=4)
text(text.x,.56,labels="H. erectus",font=3,cex=.8,offset=0,pos=4)
text(text.x,.54,labels="H. habilis",font=3,cex=.8,offset=0,pos=4)
text(text.x,.52,labels="H. rudolfensis",font=3,cex=.8,offset=0,pos=4)
text(text.x,.50,labels="A. africanus",font=3,cex=.8,offset=0,pos=4)
text(text.x,.48,labels="P. robustus",font=3,cex=.8,offset=0,pos=4)
text(text.x,.46,labels="P. boisei",font=3,cex=.8,offset=0,pos=4)
text(text.x,.44,labels="A. afarensis",font=3,cex=.8,offset=0,pos=4)
#curve(directional.model$model$coef[1]+directional.model$model$coef[2]*x,lty=2,add=T)
#curve(acceleration.model$model$coef[1]+x^acceleration.model$param[3],lty=3,add=T)
#curve(directional.acceleration.model$model$coef[1]+directional.acceleration.model$model$coef[2]*(x^directional.acceleration.model$param[3]),lty=4,add=T)
#segments(line.x,.6,line.x+.25,.6,lty=2)
#segments(line.x,.575,line.x+.25,.575,lty=3)
#segments(line.x,.55,line.x+.25,.55,lty=4)
#text(line.x+.3,.6,labels="directional model",pos=4,cex=.8,font = 1,offset = 0)
#text(line.x+.3,.575,labels="acceleration model",pos=4,cex=.8,font = 1,offset = 0)
#text(line.x+.3,.55,labels="directional acceleration model",pos=4,cex=.8,font = 1,offset = 0)
print(AICcs)
plot(rescale(drop.tip(sub.tree,"Pan_troglodytes"),model = "delta",directional.acceleration.model$param[3]))
##setup packages###
library(caper)
require(devtools)
library(geiger)
library(adephylo)
tree = read.nexus("grafted.tree.txt")
tree<-drop.tip(tree,tip="Ardipithecus_ramidus")
data = read.csv("data set 1.csv", header=T)
#hominin data
sub.tree<-extract.clade(tree,getMRCA(tree,as.character(data[c(225,227:231,232,233:235),"Species"])))
divergence.times<-distRoot(sub.tree,as.character(data[c(225,227:231,233:235),1]))
hominin.data<-data.frame(data[c(225,227:231,233:235),c("Species","Log.ECV")],divergence.times,NA)
colnames(hominin.data)<-c("Species","ECV","divergence.times","ECV.deviation")
#run for distance between observed and mean BayesModelS prediction
preds<-read.csv("hominins.removed.log.ecv.log.body.mass.female.predictions.csv")
preds<-preds[,-1]
hominin.data[1,4]<-hominin.data[1,2]-mean(preds$Australopithecus_africanus)
hominin.data[2,4]<-hominin.data[2,2]-mean(preds$Homo_erectus)
hominin.data[3,4]<-hominin.data[3,2]-mean(preds$Homo_habilis)
hominin.data[4,4]<-hominin.data[4,2]-mean(preds$Homo_rudolfensis)
hominin.data[5,4]<-hominin.data[5,2]-mean(preds$Homo_sapiens)
hominin.data[6,4]<-hominin.data[6,2]-mean(preds$Homo_sapiens_neanderthalensis)
hominin.data[7,4]<-hominin.data[7,2]-mean(preds$Paranthropus_boisei)
hominin.data[8,4]<-hominin.data[8,2]-mean(preds$Paranthropus_robustus)
hominin.data[9,4]<-hominin.data[9,2]-mean(preds$Australopithecus_afarensis)
hominin.comparative.data<-comparative.data(sub.tree,hominin.data,Species)
brownian.model<-pgls(ECV.deviation~1,hominin.comparative.data)
directional.model<-pgls(ECV.deviation~divergence.times,hominin.comparative.data)
acceleration.model<-pgls(ECV.deviation~1,hominin.comparative.data,delta = 'ML',bounds = list(delta=c(1e-6,20)))
directional.acceleration.model<-pgls(ECV.deviation~divergence.times,hominin.comparative.data,delta = 'ML',bounds = list(delta=c(1e-6,20)))
AICcs<-c(brownian.model$aicc,directional.model$aicc,acceleration.model$aicc,directional.acceleration.model$aicc)
names(AICcs)<-c("brownain","directional","acceleration","directional acceleration")
plot(hominin.comparative.data$data$divergence.times,hominin.comparative.data$data$ECV.deviation,
xlab=expression(paste("branch length from ",italic(Pan),"-hominin split (10"^"6"*" years)",sep="")),
ylab=expression(paste("brain size deviaion (",log[10],"(mL))",sep="")),
pch=c(0,1,2,5,6,3,10,4,8))
point.x=floor(par()$usr[1])+.4
text.x=floor(par()$usr[1])+.45
line.x=floor(par()$usr[1])+1
points(rep(point.x,times=9),c(.6,.58,.56,.54,.52,.50,.48,.46,.44),col=c("black","black","black","black","black","black","black","black","black","grey","grey","grey"),pch=c(8,4,10,3,6,5,2,1,0))
text(text.x,.6,labels="H. sapiens",font=3,cex=.8,offset=0,pos=4)
text(text.x,.58,labels="H. neanderthalensis",font=3,cex=.8,offset=0,pos=4)
text(text.x,.56,labels="H. erectus",font=3,cex=.8,offset=0,pos=4)
text(text.x,.54,labels="H. habilis",font=3,cex=.8,offset=0,pos=4)
text(text.x,.52,labels="H. rudolfensis",font=3,cex=.8,offset=0,pos=4)
text(text.x,.50,labels="A. africanus",font=3,cex=.8,offset=0,pos=4)
text(text.x,.48,labels="P. robustus",font=3,cex=.8,offset=0,pos=4)
text(text.x,.46,labels="P. boisei",font=3,cex=.8,offset=0,pos=4)
text(text.x,.44,labels="A. afarensis",font=3,cex=.8,offset=0,pos=4)
#curve(directional.model$model$coef[1]+directional.model$model$coef[2]*x,lty=2,add=T)
#curve(acceleration.model$model$coef[1]+x^acceleration.model$param[3],lty=3,add=T)
#curve(directional.acceleration.model$model$coef[1]+directional.acceleration.model$model$coef[2]*(x^directional.acceleration.model$param[3]),lty=4,add=T)
#segments(line.x,.6,line.x+.25,.6,lty=2)
#segments(line.x,.575,line.x+.25,.575,lty=3)
#segments(line.x,.55,line.x+.25,.55,lty=4)
#text(line.x+.3,.6,labels="directional model",pos=4,cex=.8,font = 1,offset = 0)
#text(line.x+.3,.575,labels="acceleration model",pos=4,cex=.8,font = 1,offset = 0)
#text(line.x+.3,.55,labels="directional acceleration model",pos=4,cex=.8,font = 1,offset = 0)
print(AICcs)
plot(rescale(drop.tip(sub.tree,"Pan_troglodytes"),model = "delta",directional.acceleration.model$param[3]))
setwd("~/Dropbox/brain manuscripts/large structures/eLife revision/supplementary materials/code")
##setup packages###
library(caper)
require(devtools)
library(geiger)
library(adephylo)
tree = read.nexus("grafted.tree.txt")
tree<-drop.tip(tree,tip="Ardipithecus_ramidus")
data = read.csv("data set 1.csv", header=T)
#hominin data
sub.tree<-extract.clade(tree,getMRCA(tree,as.character(data[c(225,227:231,232,233:235),"Species"])))
divergence.times<-distRoot(sub.tree,as.character(data[c(225,227:231,233:235),1]))
hominin.data<-data.frame(data[c(225,227:231,233:235),c("Species","Log.ECV")],divergence.times,NA)
colnames(hominin.data)<-c("Species","ECV","divergence.times","ECV.deviation")
#run for distance between observed and mean BayesModelS prediction
preds<-read.csv("hominins.removed.log.ecv.log.body.mass.female.predictions.csv")
preds<-preds[,-1]
hominin.data[1,4]<-hominin.data[1,2]-mean(preds$Australopithecus_africanus)
hominin.data[2,4]<-hominin.data[2,2]-mean(preds$Homo_erectus)
hominin.data[3,4]<-hominin.data[3,2]-mean(preds$Homo_habilis)
hominin.data[4,4]<-hominin.data[4,2]-mean(preds$Homo_rudolfensis)
hominin.data[5,4]<-hominin.data[5,2]-mean(preds$Homo_sapiens)
hominin.data[6,4]<-hominin.data[6,2]-mean(preds$Homo_sapiens_neanderthalensis)
hominin.data[7,4]<-hominin.data[7,2]-mean(preds$Paranthropus_boisei)
hominin.data[8,4]<-hominin.data[8,2]-mean(preds$Paranthropus_robustus)
hominin.data[9,4]<-hominin.data[9,2]-mean(preds$Australopithecus_afarensis)
hominin.comparative.data<-comparative.data(sub.tree,hominin.data,Species)
brownian.model<-pgls(ECV.deviation~1,hominin.comparative.data)
directional.model<-pgls(ECV.deviation~divergence.times,hominin.comparative.data)
acceleration.model<-pgls(ECV.deviation~1,hominin.comparative.data,delta = 'ML',bounds = list(delta=c(1e-6,20)))
directional.acceleration.model<-pgls(ECV.deviation~divergence.times,hominin.comparative.data,delta = 'ML',bounds = list(delta=c(1e-6,20)))
AICcs<-c(brownian.model$aicc,directional.model$aicc,acceleration.model$aicc,directional.acceleration.model$aicc)
names(AICcs)<-c("brownain","directional","acceleration","directional acceleration")
plot(hominin.comparative.data$data$divergence.times,hominin.comparative.data$data$ECV.deviation,
xlab=expression(paste("branch length from ",italic(Pan),"-hominin split (10"^"6"*" years)",sep="")),
ylab=expression(paste("brain size deviaion (",log[10],"(mL))",sep="")),
pch=c(0,1,2,5,6,3,10,4,8))
point.x=floor(par()$usr[1])+.4
text.x=floor(par()$usr[1])+.45
line.x=floor(par()$usr[1])+1
points(rep(point.x,times=9),c(.6,.58,.56,.54,.52,.50,.48,.46,.44),col=c("black","black","black","black","black","black","black","black","black","grey","grey","grey"),pch=c(8,4,10,3,6,5,2,1,0))
text(text.x,.6,labels="H. sapiens",font=3,cex=.8,offset=0,pos=4)
text(text.x,.58,labels="H. neanderthalensis",font=3,cex=.8,offset=0,pos=4)
text(text.x,.56,labels="H. erectus",font=3,cex=.8,offset=0,pos=4)
text(text.x,.54,labels="H. habilis",font=3,cex=.8,offset=0,pos=4)
text(text.x,.52,labels="H. rudolfensis",font=3,cex=.8,offset=0,pos=4)
text(text.x,.50,labels="A. africanus",font=3,cex=.8,offset=0,pos=4)
text(text.x,.48,labels="P. robustus",font=3,cex=.8,offset=0,pos=4)
text(text.x,.46,labels="P. boisei",font=3,cex=.8,offset=0,pos=4)
text(text.x,.44,labels="A. afarensis",font=3,cex=.8,offset=0,pos=4)
#curve(directional.model$model$coef[1]+directional.model$model$coef[2]*x,lty=2,add=T)
#curve(acceleration.model$model$coef[1]+x^acceleration.model$param[3],lty=3,add=T)
#curve(directional.acceleration.model$model$coef[1]+directional.acceleration.model$model$coef[2]*(x^directional.acceleration.model$param[3]),lty=4,add=T)
#segments(line.x,.6,line.x+.25,.6,lty=2)
#segments(line.x,.575,line.x+.25,.575,lty=3)
#segments(line.x,.55,line.x+.25,.55,lty=4)
#text(line.x+.3,.6,labels="directional model",pos=4,cex=.8,font = 1,offset = 0)
#text(line.x+.3,.575,labels="acceleration model",pos=4,cex=.8,font = 1,offset = 0)
#text(line.x+.3,.55,labels="directional acceleration model",pos=4,cex=.8,font = 1,offset = 0)
print(AICcs)
plot(rescale(drop.tip(sub.tree,"Pan_troglodytes"),model = "delta",directional.acceleration.model$param[3]))
