rm(list=ls())

setwd("~/Dropbox/FCU/Teaching/Mentoring/2022Spring-Current_Professor/2022Fall/YourueiMin/rcode_dcj/empricaldataanalysis/matchedtreetraitTony/BodyMass")

source("~/Dropbox/FCU/Teaching/Mentoring/2022Spring-Current_Professor/2022Fall/YourueiMin/rcode_dcj/empricaldataanalysis/mainPhyarima.R")
## Loading required package: ape
## Loading required package: phytools
## Loading required package: maps
## 
## Attaching package: 'extraDistr'
## The following object is masked from 'package:geiger':
## 
##     dtpois
## 
## Attaching package: 'LaplacesDemon'
## The following objects are masked from 'package:extraDistr':
## 
##     dbern, dcat, ddirichlet, dgpd, dgpois, dinvchisq, dinvgamma,
##     dlaplace, dpareto, pbern, plaplace, ppareto, qbern, qcat, qlaplace,
##     qpareto, rbern, rcat, rdirichlet, rgpd, rinvchisq, rinvgamma,
##     rlaplace, rpareto
## The following object is masked from 'package:geiger':
## 
##     is.constrained
## Loading required package: emmeans
## 
## Attaching package: 'RRphylo'
## The following object is masked from 'package:geiger':
## 
##     tips
## The following object is masked from 'package:phytools':
## 
##     node.paths
## Loading required package: MASS
## Loading required package: minpack.lm
## Loading required package: rgl
## Loading required package: robustbase
## Loading required package: Matrix
###########################
##### diurnal_subtree #####
###########################

diurnal_subtree<-read.tree("diurnal_subtree.nwk")
tiplabel<-diurnal_subtree$tip.label
tiplabel
##  [1] "Propithecus_deckenii"    "Propithecus_verreauxi"  
##  [3] "Propithecus_candidus"    "Propithecus_coquereli"  
##  [5] "Propithecus_tattersalli" "Propithecus_edwardsi"   
##  [7] "Propithecus_diadema"     "Propithecus_perrieri"   
##  [9] "Varecia_variegata"       "Varecia_rubra"          
## [11] "Hapalemur_occidentalis"  "Hapalemur_aureus"       
## [13] "Lemur_catta"             "Eulemur_mongoz"         
## [15] "Pithecia_vanzolinii"     "Pithecia_hirsuta"       
## [17] "Cacajao_rubicundus"      "Cacajao_calvus"         
## [19] "Chiropotes_albinasus"    "Chiropotes_chiropotes"  
## [21] "Cebus_olivaceus"         "Cebus_kaapori"          
## [23] "Saimiri_ustus"           "Ateles_marginatus"      
## [25] "Brachyteles_arachnoides" "Lagothrix_lugens"       
## [27] "Alouatta_macconnelli"    "Papio_kindae"           
## [29] "Mandrillus_sphinx"       "Cercocebus_agilis"      
## [31] "Macaca_sylvanus"         "Semnopithecus_entellus" 
## [33] "Trachypithecus_johnii"   "Colobus_angolensis"
length(tiplabel)
## [1] 34
diurnal_BodyMass<-read.csv("diurnal_BodyMass.csv")
diurnal_BodyMass
##                    Species BodyMass_kg BodyMassMale_kg BodyMassFemale_kg
## 1     Alouatta_macconnelli      6.3700           7.200             5.550
## 2        Ateles_marginatus      6.9600          10.400             5.800
## 3  Brachyteles_arachnoides      8.8400           9.610             8.070
## 4           Cacajao_calvus      3.1700           3.450             2.880
## 5            Cebus_kaapori      2.4250           3.000             2.400
## 6          Cebus_olivaceus      2.8800           3.240             2.520
## 7        Cercocebus_agilis      7.5800           9.500             5.660
## 8     Chiropotes_albinasus      2.8200           3.150             2.490
## 9    Chiropotes_chiropotes      2.7400           2.900             2.580
## 10      Colobus_angolensis      8.6000           9.800             7.400
## 11          Eulemur_mongoz      1.3750           1.410             1.560
## 12        Hapalemur_aureus      1.5150           1.520             1.390
## 13  Hapalemur_occidentalis      0.9315           0.846             1.180
## 14             Lemur_catta      2.2100           2.210             2.210
## 15         Macaca_sylvanus     13.5000          16.000            11.000
## 16       Mandrillus_sphinx     23.6000          34.400            12.800
## 17            Papio_kindae     13.0000          16.000             9.900
## 18        Pithecia_hirsuta          NA              NA                NA
## 19     Pithecia_vanzolinii          NA              NA                NA
## 20    Propithecus_candidus      5.6850              NA                NA
## 21   Propithecus_coquereli      3.7850           3.703             3.756
## 22    Propithecus_deckenii      2.7800           2.930             2.630
## 23     Propithecus_diadema      6.1050           6.050             6.210
## 24    Propithecus_edwardsi      5.7400           5.590             5.895
## 25    Propithecus_perrieri      4.4100           4.220             4.440
## 26 Propithecus_tattersalli      3.5000           3.390             3.590
## 27   Propithecus_verreauxi      2.9100           2.885             2.870
## 28           Saimiri_ustus      0.8600           0.921             0.799
## 29  Semnopithecus_entellus     11.4400          13.000             9.890
## 30           Varecia_rubra      3.2650           3.550             3.470
## 31       Varecia_variegata      3.5500           3.630             3.520
length(diurnal_BodyMass$Species)
## [1] 31
same<-intersect(tiplabel,diurnal_BodyMass$Species)
diurnal_BodyMass$Species%in%same
##  [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [16] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [31] TRUE
# Get the names of the tips to drop
tips_to_drop <- setdiff(tiplabel, diurnal_BodyMass$Species)
tips_to_drop<-c(tips_to_drop,"Pithecia_hirsuta","Pithecia_vanzolinii","Propithecus_candidus")

# Drop the tips
diurnal_subtree_with_bodymass <- drop.tip(diurnal_subtree, tips_to_drop)


plot(diurnal_subtree_with_bodymass)

diurnal_BodyMass <- diurnal_BodyMass[!(diurnal_BodyMass$Species %in% c("Pithecia_hirsuta", "Pithecia_vanzolinii", "Propithecus_candidus")), ]

dim(diurnal_BodyMass)  
## [1] 28  4
y<-diurnal_BodyMass$BodyMassFemale_kg
names(y)<-diurnal_BodyMass$Species

#######################################
############ diurnal Analysis #######
#######################################


mfit<-modelfit(trait=y, tree=diurnal_subtree_with_bodymass) 
diurnal.empmodelout<-empmodel(mfit)

diurnal.empmodelout$parammleset
##                          phi        phi2     theta      theta2      sigsq
## AR1                0.4207331          NA        NA          NA 0.03117165
## AR2                0.4524003 -0.06377864        NA          NA 0.03175290
## ARMA1             -0.1605595          NA 0.7353059          NA 0.03087015
## ARMA21             0.1340958 -0.29525485 0.7358054          NA 0.03087196
## ARMA22            -0.4133221  0.25222509 0.6718619 0.063899637 0.03087223
## Weighted Estimate  0.2232337 -0.02474626 0.2702048 0.001916989 0.03080092
diurnal.empmodelout$fitset
##   modelset paranumset loglikset aicset aicweightset rankset
## 1      AR1          2     16.71 -29.42         0.53       1
## 2      AR2          3     15.92 -25.84         0.09       4
## 3    ARMA1          3     16.98 -27.96         0.25       2
## 4   ARMA21          4     16.98 -25.96         0.09       3
## 5   ARMA22          5     16.98 -23.96         0.03       5
#empmodelout$parammleset[1,][c("phi","sigsq")]

xtable(diurnal.empmodelout$parammleset,digits=3)
## % latex table generated in R 4.4.0 by xtable 1.8-4 package
## % Sat May  4 14:19:44 2024
## \begin{table}[ht]
## \centering
## \begin{tabular}{rrrrrr}
##   \hline
##  & phi & phi2 & theta & theta2 & sigsq \\ 
##   \hline
## AR1 & 0.421 &  &  &  & 0.031 \\ 
##   AR2 & 0.452 & -0.064 &  &  & 0.032 \\ 
##   ARMA1 & -0.161 &  & 0.735 &  & 0.031 \\ 
##   ARMA21 & 0.134 & -0.295 & 0.736 &  & 0.031 \\ 
##   ARMA22 & -0.413 & 0.252 & 0.672 & 0.064 & 0.031 \\ 
##   Weighted Estimate & 0.223 & -0.025 & 0.270 & 0.002 & 0.031 \\ 
##    \hline
## \end{tabular}
## \end{table}
xtable(diurnal.empmodelout$fitset,digits=3)
## % latex table generated in R 4.4.0 by xtable 1.8-4 package
## % Sat May  4 14:19:44 2024
## \begin{table}[ht]
## \centering
## \begin{tabular}{rlrrrrr}
##   \hline
##  & modelset & paranumset & loglikset & aicset & aicweightset & rankset \\ 
##   \hline
## 1 & AR1 & 2.000 & 16.710 & -29.420 & 0.530 & 1.000 \\ 
##   2 & AR2 & 3.000 & 15.920 & -25.840 & 0.090 & 4.000 \\ 
##   3 & ARMA1 & 3.000 & 16.980 & -27.960 & 0.250 & 2.000 \\ 
##   4 & ARMA21 & 4.000 & 16.980 & -25.960 & 0.090 & 3.000 \\ 
##   5 & ARMA22 & 5.000 & 16.980 & -23.960 & 0.030 & 5.000 \\ 
##    \hline
## \end{tabular}
## \end{table}
## add up test.phi here 
diurnal_betas.rrphylo<-compute_betas_rrphylo(diurnal_subtree_with_bodymass, y)$betas.rrphylo
test.phi(param=diurnal.empmodelout$parammleset["AR1",][c("phi","sigsq")], betas.rrphylo=diurnal_betas.rrphylo,tree=diurnal_subtree_with_bodymass)
## $z
##      phi 
## 3.968701 
## 
## $pval
##         pval 
## 7.226562e-05
###########################
##### nocturnal_subtree ###
###########################

nocturnal_subtree<-read.tree("nocturnal_subtree.nwk")
tiplabel<-nocturnal_subtree$tip.label
tiplabel
##  [1] "Perodicticus_potto"        "Arctocebus_calabarensis"  
##  [3] "Arctocebus_aureus"         "Nycticebus_pygmaeus"      
##  [5] "Nycticebus_bengalensis"    "Nycticebus_coucang"       
##  [7] "Nycticebus_javanicus"      "Nycticebus_menagensis"    
##  [9] "Loris_lydekkerianus"       "Euoticus_elegantulus"     
## [11] "Galagoides_demidoff"       "Galagoides_thomasi"       
## [13] "Galagoides_zanzibaricus"   "Galagoides_cocos"         
## [15] "Galago_granti"             "Galagoides_orinus"        
## [17] "Galagoides_rondoensis"     "Galago_senegalensis"      
## [19] "Galago_gallarum"           "Galago_moholi"            
## [21] "Galago_matschiei"          "Galago_alleni"            
## [23] "Galago_gabonensis"         "Otolemur_monteiri"        
## [25] "Otolemur_garnettii"        "Otolemur_crassicaudatus"  
## [27] "Microcebus_myoxinus"       "Cheirogaleus_major"       
## [29] "Cheirogaleus_medius"       "Lepilemur_otto"           
## [31] "Lepilemur_grewcockorum"    "Lepilemur_manasamody"     
## [33] "Lepilemur_edwardsi"        "Lepilemur_microdon"       
## [35] "Lepilemur_tymerlachsoni"   "Lepilemur_milanoii"       
## [37] "Lepilemur_ankaranensis"    "Lepilemur_ahmansonorum"   
## [39] "Lepilemur_sahamalazensis"  "Lepilemur_mittermeieri"   
## [41] "Lepilemur_dorsalis"        "Lepilemur_septentrionalis"
## [43] "Lepilemur_hubbardorum"     "Lepilemur_ruficaudatus"   
## [45] "Lepilemur_randrianasoloi"  "Lepilemur_aeeclis"        
## [47] "Lepilemur_petteri"         "Lepilemur_leucopus"       
## [49] "Lepilemur_betsileo"        "Lepilemur_jamesorum"      
## [51] "Lepilemur_mustelinus"      "Lepilemur_fleuretae"      
## [53] "Lepilemur_wrightae"        "Lepilemur_seali"
length(tiplabel)
## [1] 54
nocturnal_BodyMass<-read.csv("nocturnal_BodyMass.csv")

length(nocturnal_BodyMass$Species)
## [1] 47
same<-intersect(tiplabel,nocturnal_BodyMass$Species)
nocturnal_BodyMass$Species%in%same
##  [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [16] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [31] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [46] TRUE TRUE
# Get the names of the tips to drop
tips_to_drop <- setdiff(tiplabel, nocturnal_BodyMass$Species)

tips_to_drop
## [1] "Galagoides_demidoff"   "Galago_granti"         "Galago_alleni"        
## [4] "Galago_gabonensis"     "Otolemur_monteiri"     "Lepilemur_manasamody" 
## [7] "Lepilemur_hubbardorum"
# Drop the tips
nocturnal_subtree_with_bodymass <- drop.tip(nocturnal_subtree, tips_to_drop)

plot(nocturnal_subtree_with_bodymass)

nocturnal_BodyMass
##                      Species BodyMass_kg BodyMassMale_kg BodyMassFemale_kg
## 1          Arctocebus_aureus   0.2100000              NA                NA
## 2    Arctocebus_calabarensis   0.3100000          0.3120            0.3060
## 3         Cheirogaleus_major   0.5050000          0.5740            0.4430
## 4        Cheirogaleus_medius   0.1766667          0.1640            0.1560
## 5       Euoticus_elegantulus   0.2700000          0.2870            0.2610
## 6            Galago_gallarum   0.2000000          0.2350            0.2000
## 7           Galago_matschiei   0.2100000          0.2070            0.2120
## 8              Galago_moholi   0.2000000          0.2140            0.1940
## 9        Galago_senegalensis   0.2500000          0.2710            0.2250
## 10          Galagoides_cocos   0.1400000          0.1500            0.1300
## 11         Galagoides_orinus   0.0900000              NA                NA
## 12     Galagoides_rondoensis   0.6750000          0.6900            0.6600
## 13        Galagoides_thomasi   0.1200000          0.1030            0.1300
## 14   Galagoides_zanzibaricus   0.1400000          0.1500            0.1370
## 15         Lepilemur_aeeclis   0.8600000          0.8680            0.9090
## 16    Lepilemur_ahmansonorum   0.5950000              NA                NA
## 17    Lepilemur_ankaranensis   0.7600000              NA                NA
## 18        Lepilemur_betsileo   1.1400000              NA                NA
## 19        Lepilemur_dorsalis   0.7950000              NA                NA
## 20        Lepilemur_edwardsi   0.9750000          0.9280            0.9340
## 21       Lepilemur_fleuretae   0.8900000              NA                NA
## 22    Lepilemur_grewcockorum   0.8200000              NA                NA
## 23       Lepilemur_jamesorum   0.8250000              NA                NA
## 24        Lepilemur_leucopus   0.5850000          0.6170            0.5940
## 25        Lepilemur_microdon   1.0350000          0.9700                NA
## 26        Lepilemur_milanoii   0.7150000              NA                NA
## 27    Lepilemur_mittermeieri   0.8600000              NA                NA
## 28      Lepilemur_mustelinus   0.9800000              NA                NA
## 29            Lepilemur_otto   0.9390000              NA                NA
## 30         Lepilemur_petteri   0.6200000          0.6550            0.5850
## 31  Lepilemur_randrianasoloi   0.8550000              NA                NA
## 32    Lepilemur_ruficaudatus   0.7800000          0.7290            0.7185
## 33  Lepilemur_sahamalazensis   0.6900000          0.7100            0.6780
## 34           Lepilemur_seali   0.9500000              NA                NA
## 35 Lepilemur_septentrionalis   0.6275000              NA                NA
## 36   Lepilemur_tymerlachsoni   0.8800000              NA                NA
## 37        Lepilemur_wrightae   1.4350000          1.8000            1.8500
## 38       Loris_lydekkerianus   0.2700000          0.2640            0.2690
## 39       Microcebus_myoxinus   0.0400000          0.0307            0.0307
## 40    Nycticebus_bengalensis   1.2600000          1.1300            1.4000
## 41        Nycticebus_coucang   0.6500000          0.6790            0.6260
## 42      Nycticebus_javanicus   0.7300000          0.6860            0.6260
## 43     Nycticebus_menagensis   0.2850000          0.2850                NA
## 44       Nycticebus_pygmaeus   0.4200000          0.4620            0.3760
## 45   Otolemur_crassicaudatus   1.1500000          1.1900            1.1100
## 46        Otolemur_garnettii   0.7600000          0.7940            0.7340
## 47        Perodicticus_potto   0.8300000          0.8300            0.8360
nocturnal_subtree_with_bodymass
## 
## Phylogenetic tree with 47 tips and 46 internal nodes.
## 
## Tip labels:
##   Perodicticus_potto, Arctocebus_calabarensis, Arctocebus_aureus, Nycticebus_pygmaeus, Nycticebus_bengalensis, Nycticebus_coucang, ...
## Node labels:
##   '204', '82', '43', '13', '14', '34', ...
## 
## Rooted; includes branch lengths.
y<-nocturnal_BodyMass$BodyMassFemale_kg
names(y)<-nocturnal_BodyMass$Species
tips_to_drop<-names(y)[is.na(y)]
tips_to_drop
##  [1] "Arctocebus_aureus"         "Galagoides_orinus"        
##  [3] "Lepilemur_ahmansonorum"    "Lepilemur_ankaranensis"   
##  [5] "Lepilemur_betsileo"        "Lepilemur_dorsalis"       
##  [7] "Lepilemur_fleuretae"       "Lepilemur_grewcockorum"   
##  [9] "Lepilemur_jamesorum"       "Lepilemur_microdon"       
## [11] "Lepilemur_milanoii"        "Lepilemur_mittermeieri"   
## [13] "Lepilemur_mustelinus"      "Lepilemur_otto"           
## [15] "Lepilemur_randrianasoloi"  "Lepilemur_seali"          
## [17] "Lepilemur_septentrionalis" "Lepilemur_tymerlachsoni"  
## [19] "Nycticebus_menagensis"
# Drop the tips
nocturnal_subtree_with_bodymass <- drop.tip(nocturnal_subtree_with_bodymass, tips_to_drop)

nocturnal_subtree_with_bodymass
## 
## Phylogenetic tree with 28 tips and 27 internal nodes.
## 
## Tip labels:
##   Perodicticus_potto, Arctocebus_calabarensis, Nycticebus_pygmaeus, Nycticebus_bengalensis, Nycticebus_coucang, Nycticebus_javanicus, ...
## Node labels:
##   '204', '82', '43', '13', '34', '35', ...
## 
## Rooted; includes branch lengths.
length(y)
## [1] 47
y
##         Arctocebus_aureus   Arctocebus_calabarensis        Cheirogaleus_major 
##                        NA                    0.3060                    0.4430 
##       Cheirogaleus_medius      Euoticus_elegantulus           Galago_gallarum 
##                    0.1560                    0.2610                    0.2000 
##          Galago_matschiei             Galago_moholi       Galago_senegalensis 
##                    0.2120                    0.1940                    0.2250 
##          Galagoides_cocos         Galagoides_orinus     Galagoides_rondoensis 
##                    0.1300                        NA                    0.6600 
##        Galagoides_thomasi   Galagoides_zanzibaricus         Lepilemur_aeeclis 
##                    0.1300                    0.1370                    0.9090 
##    Lepilemur_ahmansonorum    Lepilemur_ankaranensis        Lepilemur_betsileo 
##                        NA                        NA                        NA 
##        Lepilemur_dorsalis        Lepilemur_edwardsi       Lepilemur_fleuretae 
##                        NA                    0.9340                        NA 
##    Lepilemur_grewcockorum       Lepilemur_jamesorum        Lepilemur_leucopus 
##                        NA                        NA                    0.5940 
##        Lepilemur_microdon        Lepilemur_milanoii    Lepilemur_mittermeieri 
##                        NA                        NA                        NA 
##      Lepilemur_mustelinus            Lepilemur_otto         Lepilemur_petteri 
##                        NA                        NA                    0.5850 
##  Lepilemur_randrianasoloi    Lepilemur_ruficaudatus  Lepilemur_sahamalazensis 
##                        NA                    0.7185                    0.6780 
##           Lepilemur_seali Lepilemur_septentrionalis   Lepilemur_tymerlachsoni 
##                        NA                        NA                        NA 
##        Lepilemur_wrightae       Loris_lydekkerianus       Microcebus_myoxinus 
##                    1.8500                    0.2690                    0.0307 
##    Nycticebus_bengalensis        Nycticebus_coucang      Nycticebus_javanicus 
##                    1.4000                    0.6260                    0.6260 
##     Nycticebus_menagensis       Nycticebus_pygmaeus   Otolemur_crassicaudatus 
##                        NA                    0.3760                    1.1100 
##        Otolemur_garnettii        Perodicticus_potto 
##                    0.7340                    0.8360
y<-y[!is.na(y)]
y
##  Arctocebus_calabarensis       Cheirogaleus_major      Cheirogaleus_medius 
##                   0.3060                   0.4430                   0.1560 
##     Euoticus_elegantulus          Galago_gallarum         Galago_matschiei 
##                   0.2610                   0.2000                   0.2120 
##            Galago_moholi      Galago_senegalensis         Galagoides_cocos 
##                   0.1940                   0.2250                   0.1300 
##    Galagoides_rondoensis       Galagoides_thomasi  Galagoides_zanzibaricus 
##                   0.6600                   0.1300                   0.1370 
##        Lepilemur_aeeclis       Lepilemur_edwardsi       Lepilemur_leucopus 
##                   0.9090                   0.9340                   0.5940 
##        Lepilemur_petteri   Lepilemur_ruficaudatus Lepilemur_sahamalazensis 
##                   0.5850                   0.7185                   0.6780 
##       Lepilemur_wrightae      Loris_lydekkerianus      Microcebus_myoxinus 
##                   1.8500                   0.2690                   0.0307 
##   Nycticebus_bengalensis       Nycticebus_coucang     Nycticebus_javanicus 
##                   1.4000                   0.6260                   0.6260 
##      Nycticebus_pygmaeus  Otolemur_crassicaudatus       Otolemur_garnettii 
##                   0.3760                   1.1100                   0.7340 
##       Perodicticus_potto 
##                   0.8360
length(y)
## [1] 28
#######################################
############ nocturnal Analysis #######
#######################################

#compute_betas_rrphylo(nocturnal_subtree_with_bodymass, y)$betas.rrphylo

mfit<-modelfit(trait=y, tree=nocturnal_subtree_with_bodymass) 
nocturnal.empmodelout<-empmodel(mfit)

nocturnal.empmodelout$parammleset
##                          phi        phi2       theta       theta2       sigsq
## AR1               0.30078711          NA          NA           NA 0.006945290
## AR2               0.39367210  0.22040630          NA           NA 0.007010080
## ARMA1             0.43457561          NA -0.99991393           NA 0.007331100
## ARMA21            0.47066231 -0.09348048 -0.99991863           NA 0.007474127
## ARMA22            0.05428971  0.37455739  0.07855326 -0.221988872 0.006931994
## Weighted Estimate 0.30751609  0.02854113 -0.06685194 -0.008879555 0.006979161
nocturnal.empmodelout$fitset
##   modelset paranumset loglikset  aicset aicweightset rankset
## 1      AR1          2     56.82 -109.65         0.82       1
## 2      AR2          3     55.34 -104.69         0.07       2
## 3    ARMA1          3     55.10 -104.19         0.05       3
## 4   ARMA21          4     54.84 -101.68         0.02       5
## 5   ARMA22          5     56.85 -103.69         0.04       4
xtable(nocturnal.empmodelout$parammleset,digits=3)
## % latex table generated in R 4.4.0 by xtable 1.8-4 package
## % Sat May  4 14:19:47 2024
## \begin{table}[ht]
## \centering
## \begin{tabular}{rrrrrr}
##   \hline
##  & phi & phi2 & theta & theta2 & sigsq \\ 
##   \hline
## AR1 & 0.301 &  &  &  & 0.007 \\ 
##   AR2 & 0.394 & 0.220 &  &  & 0.007 \\ 
##   ARMA1 & 0.435 &  & -1.000 &  & 0.007 \\ 
##   ARMA21 & 0.471 & -0.093 & -1.000 &  & 0.007 \\ 
##   ARMA22 & 0.054 & 0.375 & 0.079 & -0.222 & 0.007 \\ 
##   Weighted Estimate & 0.308 & 0.029 & -0.067 & -0.009 & 0.007 \\ 
##    \hline
## \end{tabular}
## \end{table}
xtable(nocturnal.empmodelout$fitset,digits=3)
## % latex table generated in R 4.4.0 by xtable 1.8-4 package
## % Sat May  4 14:19:47 2024
## \begin{table}[ht]
## \centering
## \begin{tabular}{rlrrrrr}
##   \hline
##  & modelset & paranumset & loglikset & aicset & aicweightset & rankset \\ 
##   \hline
## 1 & AR1 & 2.000 & 56.820 & -109.650 & 0.820 & 1.000 \\ 
##   2 & AR2 & 3.000 & 55.340 & -104.690 & 0.070 & 2.000 \\ 
##   3 & ARMA1 & 3.000 & 55.100 & -104.190 & 0.050 & 3.000 \\ 
##   4 & ARMA21 & 4.000 & 54.840 & -101.680 & 0.020 & 5.000 \\ 
##   5 & ARMA22 & 5.000 & 56.850 & -103.690 & 0.040 & 4.000 \\ 
##    \hline
## \end{tabular}
## \end{table}
## add up test.phi here 
nocturnal_betas.rrphylo<-compute_betas_rrphylo(nocturnal_subtree_with_bodymass, y)$betas.rrphylo
test.phi(param=nocturnal.empmodelout$parammleset["AR1",][c("phi","sigsq")], betas.rrphylo=nocturnal_betas.rrphylo,tree=nocturnal_subtree_with_bodymass)
## $z
##      phi 
## 3.053179 
## 
## $pval
##       pval 
## 0.00226431
####################################
#########Combined tree##############
####################################

tree_with_bodymass<-bind.tree(diurnal_subtree_with_bodymass, nocturnal_subtree_with_bodymass, where = "root", position = 0, interactive = FALSE)

tree_with_bodymass<-chronopl(tree_with_bodymass, 0, age.min = 1, age.max = NULL,node = "root", S = 1, tol = 1e-8,CV = FALSE, eval.max = 500, iter.max = 500)
## Warning in chronopl(tree_with_bodymass, 0, age.min = 1, age.max = NULL, : at least one internal branch is of length zero:
##   it was collapsed and some nodes have been deleted.
plot(tree_with_bodymass, show.tip.label = FALSE)

BodyMass<-rbind(diurnal_BodyMass,nocturnal_BodyMass)

y<-BodyMass$BodyMassFemale_kg
names(y)<-BodyMass$Species
y
##      Alouatta_macconnelli         Ateles_marginatus   Brachyteles_arachnoides 
##                    5.5500                    5.8000                    8.0700 
##            Cacajao_calvus             Cebus_kaapori           Cebus_olivaceus 
##                    2.8800                    2.4000                    2.5200 
##         Cercocebus_agilis      Chiropotes_albinasus     Chiropotes_chiropotes 
##                    5.6600                    2.4900                    2.5800 
##        Colobus_angolensis            Eulemur_mongoz          Hapalemur_aureus 
##                    7.4000                    1.5600                    1.3900 
##    Hapalemur_occidentalis               Lemur_catta           Macaca_sylvanus 
##                    1.1800                    2.2100                   11.0000 
##         Mandrillus_sphinx              Papio_kindae     Propithecus_coquereli 
##                   12.8000                    9.9000                    3.7560 
##      Propithecus_deckenii       Propithecus_diadema      Propithecus_edwardsi 
##                    2.6300                    6.2100                    5.8950 
##      Propithecus_perrieri   Propithecus_tattersalli     Propithecus_verreauxi 
##                    4.4400                    3.5900                    2.8700 
##             Saimiri_ustus    Semnopithecus_entellus             Varecia_rubra 
##                    0.7990                    9.8900                    3.4700 
##         Varecia_variegata         Arctocebus_aureus   Arctocebus_calabarensis 
##                    3.5200                        NA                    0.3060 
##        Cheirogaleus_major       Cheirogaleus_medius      Euoticus_elegantulus 
##                    0.4430                    0.1560                    0.2610 
##           Galago_gallarum          Galago_matschiei             Galago_moholi 
##                    0.2000                    0.2120                    0.1940 
##       Galago_senegalensis          Galagoides_cocos         Galagoides_orinus 
##                    0.2250                    0.1300                        NA 
##     Galagoides_rondoensis        Galagoides_thomasi   Galagoides_zanzibaricus 
##                    0.6600                    0.1300                    0.1370 
##         Lepilemur_aeeclis    Lepilemur_ahmansonorum    Lepilemur_ankaranensis 
##                    0.9090                        NA                        NA 
##        Lepilemur_betsileo        Lepilemur_dorsalis        Lepilemur_edwardsi 
##                        NA                        NA                    0.9340 
##       Lepilemur_fleuretae    Lepilemur_grewcockorum       Lepilemur_jamesorum 
##                        NA                        NA                        NA 
##        Lepilemur_leucopus        Lepilemur_microdon        Lepilemur_milanoii 
##                    0.5940                        NA                        NA 
##    Lepilemur_mittermeieri      Lepilemur_mustelinus            Lepilemur_otto 
##                        NA                        NA                        NA 
##         Lepilemur_petteri  Lepilemur_randrianasoloi    Lepilemur_ruficaudatus 
##                    0.5850                        NA                    0.7185 
##  Lepilemur_sahamalazensis           Lepilemur_seali Lepilemur_septentrionalis 
##                    0.6780                        NA                        NA 
##   Lepilemur_tymerlachsoni        Lepilemur_wrightae       Loris_lydekkerianus 
##                        NA                    1.8500                    0.2690 
##       Microcebus_myoxinus    Nycticebus_bengalensis        Nycticebus_coucang 
##                    0.0307                    1.4000                    0.6260 
##      Nycticebus_javanicus     Nycticebus_menagensis       Nycticebus_pygmaeus 
##                    0.6260                        NA                    0.3760 
##   Otolemur_crassicaudatus        Otolemur_garnettii        Perodicticus_potto 
##                    1.1100                    0.7340                    0.8360
length(y)
## [1] 75
names(y)%in% tree_with_bodymass$tip.label
##  [1]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [13]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [25]  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [37]  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE
## [49] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE
## [61]  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE
## [73]  TRUE  TRUE  TRUE
tree_with_bodymass$tip.label %in%names(y)
##  [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [16] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [31] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [46] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#######################################
############ Full Analysis ##########
#######################################

#compute_betas_rrphylo(tree_with_bodymass, y)$betas.rrphylo

mfit<-modelfit(trait=y, tree=tree_with_bodymass) 
comb.empmodelout<-empmodel(mfit)

comb.empmodelout$parammleset
##                           phi         phi2      theta      theta2    sigsq
## AR1                0.37239902           NA         NA          NA 1.065007
## AR2                0.30392716  0.211847665         NA          NA 1.037273
## ARMA1              0.74939706           NA -0.4197426          NA 1.034466
## ARMA21             0.75069148 -0.001296982 -0.4197400          NA 1.034466
## ARMA22            -0.01971449  0.769109963  0.1875373 -0.60727814 1.034465
## Weighted Estimate  0.40379798  0.150886886 -0.0927899 -0.01214556 1.028972
comb.empmodelout$fitset
##   modelset paranumset loglikset aicset aicweightset rankset
## 1      AR1          2   -152.30 308.59         0.10       3
## 2      AR2          3   -149.47 304.94         0.64       1
## 3    ARMA1          3   -150.77 307.54         0.17       2
## 4   ARMA21          4   -150.77 309.54         0.06       4
## 5   ARMA22          5   -150.77 311.54         0.02       5
xtable(comb.empmodelout$parammleset,digits=3)
## % latex table generated in R 4.4.0 by xtable 1.8-4 package
## % Sat May  4 14:19:50 2024
## \begin{table}[ht]
## \centering
## \begin{tabular}{rrrrrr}
##   \hline
##  & phi & phi2 & theta & theta2 & sigsq \\ 
##   \hline
## AR1 & 0.372 &  &  &  & 1.065 \\ 
##   AR2 & 0.304 & 0.212 &  &  & 1.037 \\ 
##   ARMA1 & 0.749 &  & -0.420 &  & 1.034 \\ 
##   ARMA21 & 0.751 & -0.001 & -0.420 &  & 1.034 \\ 
##   ARMA22 & -0.020 & 0.769 & 0.188 & -0.607 & 1.034 \\ 
##   Weighted Estimate & 0.404 & 0.151 & -0.093 & -0.012 & 1.029 \\ 
##    \hline
## \end{tabular}
## \end{table}
xtable(comb.empmodelout$fitset,digits=3)
## % latex table generated in R 4.4.0 by xtable 1.8-4 package
## % Sat May  4 14:19:50 2024
## \begin{table}[ht]
## \centering
## \begin{tabular}{rlrrrrr}
##   \hline
##  & modelset & paranumset & loglikset & aicset & aicweightset & rankset \\ 
##   \hline
## 1 & AR1 & 2.000 & -152.300 & 308.590 & 0.100 & 3.000 \\ 
##   2 & AR2 & 3.000 & -149.470 & 304.940 & 0.640 & 1.000 \\ 
##   3 & ARMA1 & 3.000 & -150.770 & 307.540 & 0.170 & 2.000 \\ 
##   4 & ARMA21 & 4.000 & -150.770 & 309.540 & 0.060 & 4.000 \\ 
##   5 & ARMA22 & 5.000 & -150.770 & 311.540 & 0.020 & 5.000 \\ 
##    \hline
## \end{tabular}
## \end{table}
## add up test.phi here 
comb_betas.rrphylo<-compute_betas_rrphylo(tree_with_bodymass, y)$betas.rrphylo
test.phi(param=comb.empmodelout$parammleset["AR1",][c("phi","sigsq")], betas.rrphylo=comb_betas.rrphylo,tree=tree_with_bodymass)
## $z
##      phi 
## 3.395437 
## 
## $pval
##         pval 
## 0.0006851917
##############
####AR1 test##
##############

#########Combined tree##############
comb_betas.rrphylo<-compute_betas_rrphylo(tree_with_bodymass, y)$betas.rrphylo
combAr1test <- test.phi(param=comb.empmodelout$parammleset["AR1",][c("phi","sigsq")], betas.rrphylo=comb_betas.rrphylo,tree=tree_with_bodymass)


#########diurnal tree##############
diurnal_betas.rrphylo<-compute_betas_rrphylo(diurnal_subtree_with_bodymass, y)$betas.rrphylo
diurnalAr1test <- test.phi(param=diurnal.empmodelout$parammleset["AR1",][c("phi","sigsq")], betas.rrphylo=diurnal_betas.rrphylo,tree=diurnal_subtree_with_bodymass)

#########nocturnal tree##############
nocturnal_betas.rrphylo<-compute_betas_rrphylo(nocturnal_subtree_with_bodymass, y)$betas.rrphylo
nocturnalAr1test <- test.phi(param=nocturnal.empmodelout$parammleset["AR1",][c("phi","sigsq")], betas.rrphylo=nocturnal_betas.rrphylo,tree=nocturnal_subtree_with_bodymass)

treecase<-c("combined tree", "diurnal tree", "nocturnal tree")
zval<-c(combAr1test$z,diurnalAr1test$z,nocturnalAr1test$z)
pval<-c(combAr1test$pval,diurnalAr1test$pval,nocturnalAr1test$pval)
sig<-ifelse(pval<0.05,"Y","N")
ar1testtb<-data.frame(zval=zval,pval=pval,sig=sig)
rownames(ar1testtb)<-treecase
ar1testtb
##                    zval         pval sig
## combined tree  3.395437 6.851917e-04   Y
## diurnal tree   3.968701 7.226562e-05   Y
## nocturnal tree 3.053179 2.264310e-03   Y
xtable(ar1testtb,digits=3)
## % latex table generated in R 4.4.0 by xtable 1.8-4 package
## % Sat May  4 14:19:52 2024
## \begin{table}[ht]
## \centering
## \begin{tabular}{rrrl}
##   \hline
##  & zval & pval & sig \\ 
##   \hline
## combined tree & 3.395 & 0.001 & Y \\ 
##   diurnal tree & 3.969 & 0.000 & Y \\ 
##   nocturnal tree & 3.053 & 0.002 & Y \\ 
##    \hline
## \end{tabular}
## \end{table}
#################################
#### LRT across models ##
#################################

LL_diurnal <- diurnal.empmodelout$fitset
LL_nocturnal <- nocturnal.empmodelout$fitset
LL_comb <- comb.empmodelout$fitset

# Compute the test statistic
test_statistic <- 2 * ((LL_diurnal$loglikset + LL_nocturnal$loglikset)-LL_comb$loglikset)
test_statistic
## [1] 451.66 441.46 445.70 445.18 449.20
#names(test_statistic)<-c(paste(LL_comb$modelset,".chi2",sep=""))
test_statistic
## [1] 451.66 441.46 445.70 445.18 449.20
# Perform the chi-square test
p_value.array <- 1 - pchisq(test_statistic, df=LL_comb$paranumset) # two AR(1) - one AR(1)
#names(p_value.array)<-c(paste(LL_comb$modelset,".pal",sep=""))
p_value.array # zero seems make sense as the rate is from the y simulated from 
## [1] 0 0 0 0 0
tworates<-ifelse(p_value.array<0.05,"Y","N")
#names(tworates)<-rep("two rates?",5)
tworates
## [1] "Y" "Y" "Y" "Y" "Y"
LL_diurnal$loglikset  
## [1] 16.71 15.92 16.98 16.98 16.98
LL_nocturnal$loglikset
## [1] 56.82 55.34 55.10 54.84 56.85
LL_comb$loglikset
## [1] -152.30 -149.47 -150.77 -150.77 -150.77
mset<-LL_comb$modelset
diurnallikeset<-LL_diurnal$loglikset  
nocturnallikeset<-LL_nocturnal$loglikset  
comblikeset<-LL_comb$loglikset

df2rates1rate<-data.frame(
  diurnallikeset=diurnallikeset,
  nocturnallikeset=nocturnallikeset,
  comblikeset=comblikeset,
  test_statistic=test_statistic,
  p_value.array=p_value.array,tworates=tworates
)

rownames(df2rates1rate)<-LL_diurnal$modelset
colnames(df2rates1rate)<-c("log L_di","log L_no","log L_dino","chi2","pval")
df2rates1rate
##        log L_di log L_no log L_dino   chi2 pval NA
## AR1       16.71    56.82    -152.30 451.66    0  Y
## AR2       15.92    55.34    -149.47 441.46    0  Y
## ARMA1     16.98    55.10    -150.77 445.70    0  Y
## ARMA21    16.98    54.84    -150.77 445.18    0  Y
## ARMA22    16.98    56.85    -150.77 449.20    0  Y
xtable(df2rates1rate)
## % latex table generated in R 4.4.0 by xtable 1.8-4 package
## % Sat May  4 14:19:52 2024
## \begin{table}[ht]
## \centering
## \begin{tabular}{rrrrrrl}
##   \hline
##  & log L\_di & log L\_no & log L\_dino & chi2 & pval & NA \\ 
##   \hline
## AR1 & 16.71 & 56.82 & -152.30 & 451.66 & 0.00 & Y \\ 
##   AR2 & 15.92 & 55.34 & -149.47 & 441.46 & 0.00 & Y \\ 
##   ARMA1 & 16.98 & 55.10 & -150.77 & 445.70 & 0.00 & Y \\ 
##   ARMA21 & 16.98 & 54.84 & -150.77 & 445.18 & 0.00 & Y \\ 
##   ARMA22 & 16.98 & 56.85 & -150.77 & 449.20 & 0.00 & Y \\ 
##    \hline
## \end{tabular}
## \end{table}
# Do it separately, just call from the previous diurnal case and nocturnal case.
# testrate2subtrees_output <- testrate2subtrees(tree=tree_with_bodymass, y=BodyMass) 
# tworatedf<- treeARanova(testrate2subtrees_output)
# tworatedf
# xtable(tworatedf,digits=3)