#save(sylvia.clus, taxa.sylvia, sylvia.eco, nj.est, file="D:\\OneDrive\\R packages\\Rcode\\sylvia.RData")
load(file="D:\\OneDrive\\R packages\\Rcode\\sylvia.RData")
library(ape)
nj.est$tip.label
##                 Z73494               AJ534526               AJ534527 
##   "Sylvia_atricapilla"     "Chamaea_fasciata"       "Sylvia_nisoria" 
##               AJ534528               AJ534529               AJ534530 
##       "Sylvia_layardi"  "Sylvia_subcaeruleum"        "Sylvia_boehmi" 
##               AJ534531               AJ534532               AJ534533 
##         "Sylvia_buryi"        "Sylvia_lugens"  "Sylvia_leucomelaena" 
##               AJ534534               AJ534535               AJ534536 
##     "Sylvia_hortensis" "Sylvia_crassirostris"       "Sylvia_curruca" 
##               AJ534537               AJ534538               AJ534539 
##          "Sylvia_nana"      "Sylvia_communis" "Sylvia_conspicillata" 
##               AJ534540               AJ534541               AJ534542 
##   "Sylvia_deserticola"     "Sylvia_balearica"        "Sylvia_undata" 
##               AJ534543               AJ534544               AJ534545 
##    "Sylvia_cantillans" "Sylvia_melanocephala"      "Sylvia_mystacea" 
##               AJ534546               AJ534547               AJ534548 
##  "Sylvia_melanothorax"     "Sylvia_rueppelli"    "Sylvia_abyssinica" 
##               AJ534549 
##         "Sylvia_borin"
nj.est <- drop.tip(nj.est, "Chamaea_fasciata")
nj.est$tip.label
##                 Z73494               AJ534527               AJ534528 
##   "Sylvia_atricapilla"       "Sylvia_nisoria"       "Sylvia_layardi" 
##               AJ534529               AJ534530               AJ534531 
##  "Sylvia_subcaeruleum"        "Sylvia_boehmi"         "Sylvia_buryi" 
##               AJ534532               AJ534533               AJ534534 
##        "Sylvia_lugens"  "Sylvia_leucomelaena"     "Sylvia_hortensis" 
##               AJ534535               AJ534536               AJ534537 
## "Sylvia_crassirostris"       "Sylvia_curruca"          "Sylvia_nana" 
##               AJ534538               AJ534539               AJ534540 
##      "Sylvia_communis" "Sylvia_conspicillata"   "Sylvia_deserticola" 
##               AJ534541               AJ534542               AJ534543 
##     "Sylvia_balearica"        "Sylvia_undata"    "Sylvia_cantillans" 
##               AJ534544               AJ534545               AJ534546 
## "Sylvia_melanocephala"      "Sylvia_mystacea"  "Sylvia_melanothorax" 
##               AJ534547               AJ534548               AJ534549 
##     "Sylvia_rueppelli"    "Sylvia_abyssinica"         "Sylvia_borin"

We drop the outgroup species(Chamaea fasciata) for which we have no ecological data.

sylvia.eco
##                      mig.dist mig.behav geo.range
## Sylvia_abyssinica           0     resid      trop
## Sylvia_atricapilla       5000     short  temptrop
## Sylvia_borin             7500      long  temptrop
## Sylvia_nisoria           5900      long  temptrop
## Sylvia_curruca           5500      long  temptrop
## Sylvia_hortensis         3400      long  temptrop
## Sylvia_crassirostris     2600      long  temptrop
## Sylvia_leucomelaena         0     resid      trop
## Sylvia_buryi                0     resid      trop
## Sylvia_lugens               0     resid      trop
## Sylvia_layardi              0     resid      trop
## Sylvia_subcaeruleum         0     resid      trop
## Sylvia_boehmi               0     resid      trop
## Sylvia_nana              2600     short  temptrop
## Sylvia_deserti              0     resid      temp
## Sylvia_communis          6500      long  temptrop
## Sylvia_conspicillata     1500     short  temptrop
## Sylvia_deserticola        500     resid      temp
## Sylvia_undata             300     resid      temp
## Sylvia_sarda              300     resid      temp
## Sylvia_balearica            0     resid      temp
## Sylvia_cantillans        3500      long  temptrop
## Sylvia_mystacea          2000      long  temptrop
## Sylvia_melanocephala      300     short  temptrop
## Sylvia_rueppelli         2400      long  temptrop
## Sylvia_melanothorax      1200     resid      temp
DF <- sylvia.eco[nj.est$tip.label,]
DF
##                      mig.dist mig.behav geo.range
## Sylvia_atricapilla       5000     short  temptrop
## Sylvia_nisoria           5900      long  temptrop
## Sylvia_layardi              0     resid      trop
## Sylvia_subcaeruleum         0     resid      trop
## Sylvia_boehmi               0     resid      trop
## Sylvia_buryi                0     resid      trop
## Sylvia_lugens               0     resid      trop
## Sylvia_leucomelaena         0     resid      trop
## Sylvia_hortensis         3400      long  temptrop
## Sylvia_crassirostris     2600      long  temptrop
## Sylvia_curruca           5500      long  temptrop
## Sylvia_nana              2600     short  temptrop
## Sylvia_communis          6500      long  temptrop
## Sylvia_conspicillata     1500     short  temptrop
## Sylvia_deserticola        500     resid      temp
## Sylvia_balearica            0     resid      temp
## Sylvia_undata             300     resid      temp
## Sylvia_cantillans        3500      long  temptrop
## Sylvia_melanocephala      300     short  temptrop
## Sylvia_mystacea          2000      long  temptrop
## Sylvia_melanothorax      1200     resid      temp
## Sylvia_rueppelli         2400      long  temptrop
## Sylvia_abyssinica           0     resid      trop
## Sylvia_borin             7500      long  temptrop

Migratory behavior is tightly linked with geographical range.

table(DF$geo.range, DF$mig.behav)
##           
##            long resid short
##   temp        0     4     0
##   temptrop    9     0     4
##   trop        0     7     0
syl.er <- ace(DF$geo.range, nj.est, type="d")
syl.er
## 
##     Ancestral Character Estimation
## 
## Call: ace(x = DF$geo.range, phy = nj.est, type = "d")
## 
##     Log-likelihood: -22.16276 
## 
## Rate index matrix:
##          temp temptrop trop
## temp        .        1    1
## temptrop    1        .    1
## trop        1        1    .
## 
## Parameter estimates:
##  rate index estimate std-err
##           1   5.4806  1.8448
## 
## Scaled likelihoods at the root (type '...$lik.anc' to get them for all nodes):
##       temp   temptrop       trop 
## 0.01809245 0.90972802 0.07217953
syl.sym <- ace(DF$geo.range, nj.est, type="d", model="SYM")
## Warning in sqrt(diag(solve(h))): NaNs produced
syl.sym
## 
##     Ancestral Character Estimation
## 
## Call: ace(x = DF$geo.range, phy = nj.est, type = "d", model = "SYM")
## 
##     Log-likelihood: -20.38674 
## 
## Rate index matrix:
##          temp temptrop trop
## temp        .        1    2
## temptrop    1        .    3
## trop        2        3    .
## 
## Parameter estimates:
##  rate index estimate std-err
##           1   3.4911  1.9330
##           2   0.0000     NaN
##           3  10.1228  4.3518
## 
## Scaled likelihoods at the root (type '...$lik.anc' to get them for all nodes):
##        temp    temptrop        trop 
## 0.001717209 0.777724754 0.220558038
anova(syl.er, syl.sym)
## Likelihood Ratio Test Table
##   Log lik. Df Df change Resid. Dev Pr(>|Chi|)
## 1  -22.163  1                                
## 2  -20.387  3         2      3.552     0.1693
co <- rep("grey", 24)
co[DF$geo.rang=="temp"] <- "black"
co[DF$geo.rang=="trop"] <- "white"
plot(nj.est, "c" , FALSE, no.margin=TRUE, label.offset=1)
tiplabels(pch=22, bg=co, cex=2, adj=1)
nodelabels(thermo=syl.er$lik.anc, cex=0.8, piecol=c("black","grey","white"))

syl.er$lik.anc
##              temp   temptrop         trop
##  [1,] 0.018092450 0.90972802 0.0721795346
##  [2,] 0.002827070 0.94648874 0.0506841935
##  [3,] 0.002947196 0.97695162 0.0201011864
##  [4,] 0.005444586 0.98932612 0.0052292921
##  [5,] 0.013922361 0.98475065 0.0013269915
##  [6,] 0.012157331 0.98698747 0.0008551975
##  [7,] 0.034829467 0.96014119 0.0050293437
##  [8,] 0.002124209 0.99730644 0.0005693477
##  [9,] 0.001710543 0.99723969 0.0010497684
## [10,] 0.090521686 0.90432522 0.0051530923
## [11,] 0.879786609 0.11406556 0.0061478306
## [12,] 0.985017601 0.01345206 0.0015303346
## [13,] 0.003522825 0.92142789 0.0750492821
## [14,] 0.003992921 0.61105246 0.3849546174
## [15,] 0.003342871 0.58904158 0.4076155530
## [16,] 0.010313012 0.48696744 0.5027195458
## [17,] 0.004415313 0.61121713 0.3843675593
## [18,] 0.002911273 0.56055168 0.4365370511
## [19,] 0.003647181 0.54939640 0.4469564223
## [20,] 0.006663643 0.09521884 0.8981175121
## [21,] 0.007375432 0.56153035 0.4310942181
## [22,] 0.026224038 0.87832504 0.0954509198
## [23,] 0.026870004 0.88059920 0.0925307967