http://marceloarayasalas.weebly.com/


## Warning: failed to assign RegisteredNativeSymbol for getData to getData
## since getData is already defined in the 'phangorn' namespace

plot of chunk unnamed-chunk-2plot of chunk unnamed-chunk-2

Phylogenetic signal

## character(0)
## character(0)
## [1] "OK"
## 
## 
## |Parameter  | Lambdas|  LogLs| LogL0s|     ps|
## |:----------|-------:|------:|------:|------:|
## |durs       |  0.7501| 147.99| 133.93| 0.0000|
## |peakfs     |  0.6095|  58.82|  51.84| 0.0002|
## |sds        |  0.2920| 139.05| 137.79| 0.1124|
## |kurts      |  0.8086| -33.58| -41.34| 0.0001|
## |sp.ents    |  0.9180| 209.35| 192.87| 0.0000|
## |fun.freqs  |  0.5803|  82.09|  74.29| 0.0001|
## |ffranges   |  0.2378|  68.98|  67.76| 0.1182|
## |cpeaktimes |  0.2221| 161.34| 159.83| 0.0826|
## |Evi        |  0.5821| 164.69| 160.86| 0.0056|
## |Mass       |  0.9772| -25.87| -65.64| 0.0000|
## |Culmen     |  0.9771|  10.92| -23.43| 0.0000|
## |randomshit |  0.0001| -67.73| -67.73| 1.0000|

Correlated evolution analysis

## 
## 
## |   |Acous.param |Evolution.mode |model  |   AICc| deltAICc| w_ic|    p1| p2| p3|
## |:--|:-----------|:--------------|:------|------:|--------:|----:|-----:|--:|--:|
## |5  |durs        |pa             |Mass   | -282.6|    0.000| 0.37| 0.000| NA| NA|
## |1  |durs        |br             |Mass   | -280.6|    1.958| 0.14| 0.260| NA| NA|
## |21 |durs        |ou             |Mass   | -279.9|    2.640| 0.10| 0.000| NA| NA|
## |7  |durs        |bl             |Mass   | -279.9|    2.645| 0.10| 0.260| NA| NA|
## |23 |durs        |pa             |Culmen | -279.6|    2.998| 0.08| 0.000| NA| NA|
## |17 |durs        |br             |Culmen | -279.1|    3.484| 0.06| 0.576| NA| NA|
## 
## 
## |    |Acous.param |Evolution.mode |model               |    AICc| deltAICc| w_ic|    p1|    p2|    p3|
## |:---|:-----------|:--------------|:-------------------|-------:|--------:|----:|-----:|-----:|-----:|
## |5   |durs        |pa             |Mass                | -282.58|   0.0000| 0.37| 0.000|    NA|    NA|
## |23  |durs        |pa             |Culmen              | -279.58|   2.9983| 0.08| 0.000|    NA|    NA|
## |9   |durs        |pa             |Evi                 | -277.53|   5.0549| 0.03| 0.661|    NA|    NA|
## |27  |durs        |pa             |Mass + Culmen       | -270.85|  11.7329| 0.00| 0.504| 0.383|    NA|
## |24  |durs        |pa             |Mass + Evi          | -249.14|  33.4455| 0.00| 0.000| 0.044|    NA|
## |6   |durs        |pa             |Evi + Culmen        | -243.59|  38.9911| 0.00| 0.150| 0.000|    NA|
## |8   |durs        |br             |Evi + Culmen        | -243.59|  38.9911| 0.00| 0.003| 0.655|    NA|
## |26  |durs        |pa             |Mass + Culmen + Evi | -241.48|  41.1037| 0.00| 0.245| 0.509| 0.061|
## |28  |durs        |br             |Mass + Culmen + Evi | -241.48|  41.1037| 0.00| 0.135| 0.144| 0.021|
## |51  |peakfs      |pa             |Mass                | -116.65|   0.0000| 0.23| 0.000|    NA|    NA|
## |110 |peakfs      |pa             |Culmen              | -114.44|   2.2107| 0.08| 0.000|    NA|    NA|
## |131 |peakfs      |pa             |Evi                 | -110.03|   6.6281| 0.01| 0.604|    NA|    NA|
## |91  |peakfs      |pa             |Mass + Culmen       | -105.99|  10.6648| 0.00| 0.540| 0.360|    NA|
## |181 |peakfs      |pa             |Mass + Evi          |  -90.29|  26.3621| 0.00| 0.000| 0.846|    NA|
## |201 |peakfs      |br             |Mass + Evi          |  -90.29|  26.3621| 0.00| 0.000| 0.786|    NA|
## |261 |peakfs      |pa             |Evi + Culmen        |  -89.21|  27.4430| 0.00| 0.620| 0.000|    NA|
## |281 |peakfs      |br             |Evi + Culmen        |  -89.21|  27.4430| 0.00| 0.228| 0.040|    NA|
## |221 |peakfs      |pa             |Mass + Culmen + Evi |  -78.58|  38.0700| 0.00| 0.564| 0.359| 0.691|
## |241 |peakfs      |br             |Mass + Culmen + Evi |  -78.58|  38.0700| 0.00| 0.000| 0.044| 0.668|
## |92  |sds         |pa             |Mass                | -262.19|   0.0000| 0.78| 0.034|    NA|    NA|
## |72  |sds         |pa             |Culmen              | -254.31|   7.8890| 0.02| 0.061|    NA|    NA|
## |232 |sds         |pa             |Evi                 | -252.63|   9.5651| 0.01| 0.085|    NA|    NA|
## |252 |sds         |pa             |Mass + Culmen       | -244.96|  17.2362| 0.00| 0.290| 0.632|    NA|
## |62  |sds         |pa             |Mass + Evi          | -227.06|  35.1325| 0.00| 0.078| 0.178|    NA|
## |82  |sds         |br             |Mass + Evi          | -227.06|  35.1325| 0.00| 0.441| 0.113|    NA|
## |210 |sds         |pa             |Evi + Culmen        | -225.34|  36.8542| 0.00| 0.146| 0.124|    NA|
## |42  |sds         |br             |Evi + Culmen        | -225.34|  36.8542| 0.00| 0.154| 0.580|    NA|
## |142 |sds         |pa             |Mass + Culmen + Evi | -217.60|  44.5983| 0.00| 0.398| 0.727| 0.196|
## |162 |sds         |br             |Mass + Culmen + Evi | -217.60|  44.5983| 0.00| 0.591| 0.927| 0.131|
## |93  |kurts       |pa             |Mass                |   71.43|   0.0000| 0.65| 0.910|    NA|    NA|
## |53  |kurts       |pa             |Culmen              |   77.54|   6.1077| 0.03| 0.973|    NA|    NA|
## |133 |kurts       |pa             |Evi                 |   80.23|   8.8036| 0.01| 0.950|    NA|    NA|
## |203 |kurts       |pa             |Mass + Culmen       |   82.55|  11.1188| 0.00| 0.752| 0.766|    NA|
## |163 |kurts       |pa             |Mass + Evi          |   86.68|  15.2563| 0.00| 0.921| 0.951|    NA|
## |83  |kurts       |pa             |Evi + Culmen        |   87.82|  16.3870| 0.00| 0.938| 0.970|    NA|
## |273 |kurts       |pa             |Mass + Culmen + Evi |   93.51|  22.0856| 0.00| 0.764| 0.775| 0.996|
## |94  |sp.ents     |pa             |Mass                | -395.84|   0.0000| 0.65| 0.686|    NA|    NA|
## |116 |sp.ents     |pa             |Culmen              | -388.36|   7.4835| 0.02| 0.524|    NA|    NA|
## |216 |sp.ents     |pa             |Evi                 | -382.87|  12.9699| 0.00| 0.603|    NA|    NA|
## |44  |sp.ents     |br             |Evi                 | -382.87|  12.9699| 0.00| 0.062|    NA|    NA|
## |244 |sp.ents     |pa             |Mass + Culmen       | -380.92|  14.9212| 0.00| 0.777| 0.574|    NA|
## |134 |sp.ents     |pa             |Mass + Evi          | -377.73|  18.1184| 0.00| 0.636| 0.562|    NA|
## |284 |sp.ents     |pa             |Evi + Culmen        | -369.34|  26.5086| 0.00| 0.599| 0.525|    NA|
## |234 |sp.ents     |pa             |Mass + Culmen + Evi | -348.13|  47.7100| 0.00| 0.369| 0.122| 0.296|
## |217 |fun.freqs   |pa             |Mass                | -163.35|   0.0000| 0.15| 0.000|    NA|    NA|
## |55  |fun.freqs   |pa             |Culmen              | -162.72|   0.6303| 0.11| 0.000|    NA|    NA|
## |255 |fun.freqs   |pa             |Evi                 | -156.99|   6.3625| 0.01| 0.033|    NA|    NA|
## |95  |fun.freqs   |pa             |Mass + Culmen       | -154.96|   8.3964| 0.00| 0.179| 0.759|    NA|
## |45  |fun.freqs   |pa             |Mass + Evi          | -142.29|  21.0650| 0.00| 0.000| 0.147|    NA|
## |245 |fun.freqs   |pa             |Evi + Culmen        | -139.76|  23.5910| 0.00| 0.110| 0.000|    NA|
## |145 |fun.freqs   |pa             |Mass + Culmen + Evi | -136.74|  26.6135| 0.00| 0.228| 0.711| 0.145|
## |165 |fun.freqs   |br             |Mass + Culmen + Evi | -136.74|  26.6135| 0.00| 0.027| 0.742| 0.174|
## |96  |ffranges    |pa             |Mass                | -124.39|   0.0000| 0.63| 0.163|    NA|    NA|
## |76  |ffranges    |pa             |Culmen              | -118.52|   5.8662| 0.03| 0.084|    NA|    NA|
## |36  |ffranges    |pa             |Evi                 | -115.99|   8.3997| 0.01| 0.986|    NA|    NA|
## |156 |ffranges    |pa             |Mass + Culmen       | -112.11|  12.2809| 0.00| 0.339| 0.161|    NA|
## |66  |ffranges    |pa             |Mass + Evi          | -103.09|  21.2963| 0.00| 0.150| 0.731|    NA|
## |86  |ffranges    |br             |Mass + Evi          | -103.09|  21.2963| 0.00| 0.711| 0.456|    NA|
## |266 |ffranges    |pa             |Evi + Culmen        | -102.02|  22.3697| 0.00| 0.727| 0.079|    NA|
## |286 |ffranges    |br             |Evi + Culmen        | -102.02|  22.3697| 0.00| 0.446| 0.178|    NA|
## |220 |ffranges    |pa             |Mass + Culmen + Evi |  -99.87|  24.5200| 0.00| 0.363| 0.172| 0.885|
## |46  |ffranges    |br             |Mass + Culmen + Evi |  -99.87|  24.5200| 0.00| 0.015| 0.006| 0.089|
## |97  |cpeaktimes  |pa             |Mass                | -301.95|   0.0000| 0.81| 0.376|    NA|    NA|
## |127 |cpeaktimes  |pa             |Culmen              | -293.91|   8.0338| 0.01| 0.312|    NA|    NA|
## |177 |cpeaktimes  |pa             |Evi                 | -289.78|  12.1682| 0.00| 0.703|    NA|    NA|
## |257 |cpeaktimes  |pa             |Mass + Culmen       | -281.19|  20.7571| 0.00| 0.748| 0.571|    NA|
## |227 |cpeaktimes  |pa             |Mass + Evi          | -262.91|  39.0338| 0.00| 0.360| 0.605|    NA|
## |47  |cpeaktimes  |br             |Mass + Evi          | -262.91|  39.0338| 0.00| 0.044| 0.999|    NA|
## |67  |cpeaktimes  |pa             |Evi + Culmen        | -260.07|  41.8828| 0.00| 0.612| 0.305|    NA|
## |87  |cpeaktimes  |br             |Evi + Culmen        | -260.07|  41.8828| 0.00| 0.668| 0.986|    NA|
## |267 |cpeaktimes  |pa             |Mass + Culmen + Evi | -258.06|  43.8868| 0.00| 0.796| 0.601| 0.645|
## |287 |cpeaktimes  |br             |Mass + Culmen + Evi | -258.06|  43.8868| 0.00| 0.001| 0.005| 0.328|

Compare evolutionary rates

fevicallmass<-read.csv("/home/m/Dropbox/Projects-Manuscripts/Manuscripts/Parrot Calls-Phylo paper/Results/call mass and fevi parrot phylo 9.9.14.csv",row.names=1,header=T)
# str(fevicallmass)
callparam2<-fevicallmass[,c(1,4:9,13:15)]

Arini51sp<-read.tree("/home/m/Dropbox/Projects-Manuscripts/Manuscripts/Parrot Calls-Phylo paper/Trees/Arini51spsep14.tre")

library(phytools)

#######################
  #modified by DCA

library(ape)

###DCA:  Read csv this way, and is already a matrix
        #callparam<-read.csv("Call parameters parrots.csv")
# callparammat<-read.csv("Call parameters parrots.csv",header=TRUE,row.names=1)

  #make it a matrix with species names in rows
  #callparammat<-as.matrix(callparam[,2:9])
  #rownames(callparammat)<-callparam$X

#scale due to different units
  #scaledcallparam<-scale(callparammat)

#Note: In my paper, I recommend log transformation for scale issues (see also Felsenstein)
scaledcallparam<-log(callparam2)

Arini51sp<-read.tree("/home/m/Dropbox/Projects-Manuscripts/Manuscripts/Parrot Calls-Phylo paper/Trees/Arini51spsep14.tre")

#read tree
# Arini51sp<-read.tree("Arini51spsep14.tre")
#   plot(Arini51sp)

#check match among data and tree
library(geiger)
name.check(Arini51sp, scaledcallparam)
## [1] "OK"
#compare evo rates
source('/home/m/Dropbox/Documentos R/CompareRates.multTrait function.R')
cr<-CompareRates.multTrait(Arini51sp,scaledcallparam,TraitCov=F)
colnames(cr$Robs)<-rownames(cr$Robs)<-colnames(scaledcallparam)

findCI<-function(phy,x){
  library(numDeriv)
  x<-as.matrix(x)
  N<-nrow(x)
  p<-ncol(x)
  C<-vcv.phylo(phy)
  C<-C[rownames(x),rownames(x)]
  a.obs<-colSums(solve(C))%*%x/sum(solve(C))   
  D<-matrix(0,N*p,p)
  for(i in 1:(N*p)) for(j in 1:p) if((j-1)*N<i&&i<=j*N) D[i,j]=1.0
  y<-as.matrix(as.vector(x))
  one<-matrix(1,N,1)
  R.obs<-t(x-one%*%a.obs)%*%solve(C)%*%(x-one%*%a.obs)/N
  lik<-function(R.obs,y,D,a.obs,C,N,p){
    logL1<--t(y-D%*%t(a.obs))%*%solve(kronecker(R.obs,C))%*%(y-D%*%t(a.obs))/2-N*p*log(2*pi)/2-determinant(kronecker(R.obs,C))$modulus[1]/2
  }
  H<-hessian(lik,R.obs,y=y,D=D,a.obs=a.obs,C=C,N=N,p=p)   #Hessian of likelihood fxn with parameters
  std.err.all<-sqrt(diag(solve(-H)))    #standard errors for parameters (NOTE: from full R matrix)
    std.err.all[is.na(std.err.all)]<-0.0
  std.err<-diag(matrix(std.err.all,nrow=p))/sqrt(N)    #divide sqrt(N) for std. err
  R.val<-diag(R.obs)
  error <- qnorm(0.975)*std.err  #Compute 95% CI and compare across traits
  CI.l <- R.val-error; CI.u <- R.val+error  #lower and upper CI
  return(list(R=R.obs,CI.Lo=CI.l,CI.Hi=CI.u))
}

a<-findCI(Arini51sp,scaledcallparam[,1:5])
b<-findCI(Arini51sp,scaledcallparam[,6:10])
# c<-findCI(Arini51sp,scaledcallparam[,1:10])

sigma2<-c(diag(a$R),diag(b$R))
upsig<-c(a$CI.Lo,b$CI.Lo)
losig<-c(a$CI.Hi,b$CI.Hi)
sigma<-data.frame(names(sigma2),sigma2,upsig,losig)



combs<-combn(c(1:ncol(scaledcallparam)),2)
ahi<-list()
vars<-numeric()
Robs1<-numeric()
Robs2<-numeric()
P<-numeric()
AICobs<-numeric()
AICcon<-numeric()
messa<-numeric()
mat<-data.frame(matrix(nrow=ncol(scaledcallparam),ncol=ncol(scaledcallparam)))

for(i in 1:ncol(combs))
{  ahi<-CompareRates.multTrait2(Arini51sp,scaledcallparam[combs[,i]],TraitCov=T)
  vars[i]<-paste(names(diag(ahi$Robs)),collapse ="-")
  Robs1[i]<-diag(ahi$Robs)[1]
  Robs2[i]<-diag(ahi$Robs)[2]
  P[i]<-ahi$Prob
  AICobs[i]<-ahi$AICc.obs
  AICcon[i]<-ahi$AICc.constrained
  messa[i]<-ahi$optimmessage
  mat[combs[1,i],combs[2,i]]<-ahi$Prob
  mat[combs[2,i],combs[1,i]]<-ahi$Prob
  }
mat<-as.matrix(mat)
diag(mat)<-rep(0,ncol(mat))
mat<-as.data.frame(mat)
mat[mat>.05]<-NA
colnames(mat)<-rownames(mat)<-colnames(scaledcallparam)
# mat

# results<-data.frame(vars,Robs1,Robs2,P,AICobs,AICcon,messa)
# results[results$P<.05,]

rates<-data.frame(colnames(scaledcallparam)[which(colnames(scaledcallparam) %in% rownames(cr$Robs))],diag(cr$Robs))

colnames(rates)[1]<-"vars"
# 
# #calcuate Confidence intervals for sigma2 (evolutionary rate)
# CIsigma2<-as.data.frame(matrix(nrow=ncol(scaledcallparam),ncol=3))
# 
# for(i in 1:ncol(scaledcallparam))
# {aa<-ace(scaledcallparam[,i],Arini51sp)
# CIsigma2[i,2:3]<-aa$sigma2
# CIsigma2[i,1]<-colnames(scaledcallparam)[i]}

rates<-merge(rates,sigma,by.x="vars",by.y="names.sigma2.")
rates<-rates[,c(1,3:5)]
rates$vars=as.character(rates$vars)
rates$vars[grep("evi",rates$vars)]<-"Evi"
rates<-merge(rates,physigres[,c(1,5)],by.x="vars",by.y="Parameter",all=F)
colnames(rates)[3:5]<-c("Uplim","Lowlim","phylosig")

rates$phylosig[rates$phylosig<0.05]<-"yes"
rates$phylosig[rates$phylosig!="yes"]<-"no"

# rates[order(-rates[,2]),]
# rates<-rates[c(1,5,4,2,3,6,7),]
rates<-rates[c(9,6,3,7,5,1,10,8,2,4),]
rownames(rates)<-1:10

library(RColorBrewer)
# dev.off()
plot(rownames(rates),rates[,2],xaxt ="n",pch=20,cex=2,col="white",xlab="Acoustic parameters or predictors",ylab="Evolutionary rate",ylim=c(0,0.052))

for(i in 1:nrow(rates)){
lines(rep(i,2),rates[i,3:4])
lines(c(i+.1,i-.1),rep(rates[i,3],2))
lines(c(i+.1,i-.1),rep(rates[i,4],2))
points(1:nrow(rates),rates[,2],pch=20,cex=1)
if(rates$phylosig[i]=="yes") points(i,rates[i,2],pch=20,cex=0.5)}

axis(1,at=c(1:nrow(rates)),adj=1, tick=T,labels=rates[,1]) 

# rates[order(rates[,2]),]
# mat[order(rates[,2]),order(rates[,2])]

ley<-c("a","b","bc","c","c","cd","d","d","de","e")

ley<-data.frame(rates$vars[order(rates[,2])],ley)

rates<-merge(rates,ley,by.x="vars",by.y="rates.vars.order.rates...2...",sort = F)


# rates2<-data.frame(rates[order(rates[,2]),],ley)
# rates2<-rates2[order(as.numeric(rownames(rates2))),]

# rates2<-rates2[c(1,5,4,2,3,6:10),]
# str(rates)
text(1:nrow(rates),rates[,3]+0.006,labels=rates[,6])


points(1.02,0.059,pch=20)
text(1,0.059,"=phylogenetic signal",cex=0.8,pos=4)
abline(v=c(3.5,7.5))
text(c(2,5.5,9),rep(0.04,3),labels=c("Correlated evolution to morphology","Not correlated","Eco/morpho pedictors"))

plot of chunk unnamed-chunk-5

# leye<-data.frame(rates[order(rates[,2]),1]
# ,character(nrow(rates)))


# CompareRates.multTrait(Arini51sp,scaledcallparam[,c(1,3)],TraitCov=T)
# CompareRates.multTrait(Arini51sp,scaledcallparam[,3:4],TraitCov=T)

# #Here it blows up.  Try different optimization
# CompareRates.multTrait(Arini51sp,scaledcallparam[,1:4],TraitCov=T)
# 
#    source('CompareRatesAmongTraits2.r')
# CompareRates.multTrait2(Arini51sp,scaledcallparam[,1:4],TraitCov=T)
# #TAKES A LONG TIME to converge. BUT, results were gibberish. (Rconstrained matrix wasn't constrained...) 
# 
# 
# CompareRates.multTrait2(Arini51sp,scaledcallparam,TraitCov=T)
# 


# write.csv(callparam2,"/home/m/Dropbox/Projects-Manuscripts/Manuscripts/Parrot Calls-Phylo paper/Results/Call parameters parrots.csv")
# 
# 
# #read data
# callparam<-read.csv("Call parameters parrots.csv")
# 
# #make it a matrix with species names in rows
# callparammat<-as.matrix(callparam[,2:9])
# rownames(callparammat)<-callparam$X
# 
# #scale due to different units
# scaledcallparam<-scale(callparammat)
# 
# #read tree
#  Arini51sp<-read.tree("Arini51spsep14.tre")
# 
# #check match among data and tree
# library(geiger)
# name.check(Arini51sp, scaledcallparam)
# 
# #compare evo rates
# CompareRates.multTrait2(Arini51sp,scaledcallparam)
# 
# 
# CompareRates.multTrait(Arini51sp,as.matrix(sortedvars[,c(1:8)]*100))
# 
# CompareRates.multTrait(Arini51sp,as.matrix(sortedvars[,c(9:11)]*10))
# 
# CompareRates.multTrait(Arini51sp,as.matrix(sortedvars[,c(9:10)]*10))
# CompareRates.multTrait(Arini51sp,as.matrix(sortedvars[,c(10:11)]*10))
# CompareRates.multTrait(Arini51sp,as.matrix(sortedvars[,c(9,11)]*10))

Divergence times??

Sympatric species (overlap of smallest range species >20%)

## [1] 2

Allopatric species (overlap of smallest range species <20%)

## [1] 15