rm(list=ls())


load("~/Dropbox/FCU/Teaching/Mentoring/2016Spring-2021Fall_AssociateProfessor/2020Fall/ChiYuWu/rcodeCYW/lizardyoboot.rda")

library(gridExtra)
library(phytools)
## Loading required package: ape
## Loading required package: maps
library(ape)
library(MASS)
library(ggplot2)
library(geepack)
library(geeM)
## Loading required package: Matrix
library(gee)
library(ggtree)
## ggtree v3.8.0 For help: https://yulab-smu.top/treedata-book/
## 
## If you use the ggtree package suite in published research, please cite
## the appropriate paper(s):
## 
## Guangchuang Yu, David Smith, Huachen Zhu, Yi Guan, Tommy Tsan-Yuk Lam.
## ggtree: an R package for visualization and annotation of phylogenetic
## trees with their covariates and other associated data. Methods in
## Ecology and Evolution. 2017, 8(1):28-36. doi:10.1111/2041-210X.12628
## 
## S Xu, Z Dai, P Guo, X Fu, S Liu, L Zhou, W Tang, T Feng, M Chen, L
## Zhan, T Wu, E Hu, Y Jiang, X Bo, G Yu. ggtreeExtra: Compact
## visualization of richly annotated phylogenetic data. Molecular Biology
## and Evolution. 2021, 38(9):4039-4042. doi: 10.1093/molbev/msab166
## 
## Guangchuang Yu. Using ggtree to visualize data on tree-like structures.
## Current Protocols in Bioinformatics. 2020, 69:e96. doi:10.1002/cpbi.96
## 
## Attaching package: 'ggtree'
## The following object is masked from 'package:Matrix':
## 
##     expand
## The following object is masked from 'package:ape':
## 
##     rotate
boot.poi.mean<-round(boot.poi.mean,3)
boot.poi.sd<-round(boot.poi.sd,3)

boot.nb2.mean<-round(boot.nb2.mean,3)
boot.nb2.sd<-round(boot.nb2.sd,3)

boot.phypoi.mean<-round(boot.phypoi.mean,3)
boot.phypoi.sd<-round(boot.phypoi.sd,3)

boot.phynb2.mean<-round(boot.phynb2.mean,3)
boot.phynb2.sd<-round(boot.phynb2.sd,3)


out.meansd.array<-array(NA,c(2,4))

#poi
out.meansd.array[1,1]<-paste(boot.poi.mean[1],"(",boot.poi.sd[1],")",sep="")
out.meansd.array[2,1]<-paste(boot.poi.mean[2],"(",boot.poi.sd[2],")",sep="")

#nb2
out.meansd.array[1,2]<-paste(boot.nb2.mean[1],"(",boot.nb2.sd[1],")",sep="")
out.meansd.array[2,2]<-paste(boot.nb2.mean[2],"(",boot.nb2.sd[2],")",sep="")

#phypoi
out.meansd.array[1,3]<-paste(boot.phypoi.mean[1],"(",boot.phypoi.sd[1],")",sep="")
out.meansd.array[2,3]<-paste(boot.phypoi.mean[2],"(",boot.phypoi.sd[2],")",sep="")

#phynb2
out.meansd.array[1,4]<-paste(boot.phynb2.mean[1],"(",boot.phynb2.sd[1],")",sep="")
out.meansd.array[2,4]<-paste(boot.phynb2.mean[2],"(",boot.phynb2.sd[2],")",sep="")

#install.packages("xtable")
library(xtable)
xtable(out.meansd.array)
## % latex table generated in R 4.3.1 by xtable 1.8-4 package
## % Mon Aug 14 16:04:08 2023
## \begin{table}[ht]
## \centering
## \begin{tabular}{rllll}
##   \hline
##  & 1 & 2 & 3 & 4 \\ 
##   \hline
## 1 & 3.397(0.237) & 3.411(0.344) & 3.88(0.172) & 3.753(0.176) \\ 
##   2 & -1.188(0.735) & -1.258(1.065) & -3.302(0.566) & -2.831(0.569) \\ 
##    \hline
## \end{tabular}
## \end{table}
boot.nb2.mean
##     b0     b1 
##  3.411 -1.258
boot.nb2.sd
##    b0    b1 
## 0.344 1.065
boot.phypoi.mean
##     b0     b1 
##  3.880 -3.302
boot.phypoi.sd
##    b0    b1 
## 0.172 0.566
boot.phynb2.mean
##     b0     b1 
##  3.753 -2.831
boot.phynb2.sd
##    b0    b1 
## 0.176 0.569
summary(fitPOIS)
## 
## Call:
## glm(formula = eggs_per_year ~ eggs_mass, family = poisson(link = "log"), 
##     data = data)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   3.3968     0.2334  14.553   <2e-16 ***
## eggs_mass    -1.1792     0.7276  -1.621    0.105    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 42.962  on 16  degrees of freedom
## Residual deviance: 40.280  on 15  degrees of freedom
## AIC: 126.01
## 
## Number of Fisher Scoring iterations: 4
summary(fitNB2)
## 
## Call:
## glm.nb(formula = eggs_per_year ~ eggs_mass, data = data, init.theta = 14.97916062, 
##     link = log)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   3.4256     0.3583   9.560   <2e-16 ***
## eggs_mass    -1.2707     1.1045  -1.151     0.25    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for Negative Binomial(14.9792) family taken to be 1)
## 
##     Null deviance: 18.319  on 16  degrees of freedom
## Residual deviance: 17.088  on 15  degrees of freedom
## AIC: 119.28
## 
## Number of Fisher Scoring iterations: 1
## 
## 
##               Theta:  14.98 
##           Std. Err.:  8.89 
## 
##  2 x log-likelihood:  -113.278
phyfitPOIS
## Call: compar.gee(formula = eggs_per_year ~ eggs_mass, family = "poisson", 
##     phy = tree, scale.fix = TRUE)
## Number of observations:  17 
## Model:
##                       Link: log 
##  Variance to Mean Relation: poisson 
## 
## QIC: -1393.149 
## 
## Summary of Residuals:
##        Min         1Q     Median         3Q        Max 
## -12.829250   3.055108   4.414483   6.225469  17.902768 
## 
## 
## Coefficients:
##              Estimate      S.E.         t  Pr(T > |t|)
## (Intercept)  3.877618 0.1661241 23.341700 4.529787e-06
## eggs_mass   -3.259023 0.5492056 -5.934068 2.335199e-03
## 
## Estimated Scale Parameter:  1
## "Phylogenetic" df (dfP):  6.733333
phyfitNB2
## geem(formula = eggs_per_year ~ eggs_mass, id = c(1, 1, 1, 1, 
## 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), data = <environment>, 
##     family = list(family = "Negative Binomial(14.9792)", link = "log", 
##         linkfun = function (mu) 
##         log(mu), linkinv = function (eta) 
##         pmax(exp(eta), .Machine$double.eps), variance = function (mu) 
##         mu + mu^2/.Theta, dev.resids = function (y, mu, wt) 
##         2 * wt * (y * log(pmax(1, y)/mu) - (y + .Theta) * log((y + 
##             .Theta)/(mu + .Theta))), aic = function (y, n, mu, 
##             wt, dev) 
##         {
##             term <- (y + .Theta) * log(mu + .Theta) - y * log(mu) + 
##                 lgamma(y + 1) - .Theta * log(.Theta) + lgamma(.Theta) - 
##                 lgamma(.Theta + y)
##             2 * sum(term * wt)
##         }, mu.eta = function (eta) 
##         pmax(exp(eta), .Machine$double.eps), initialize = expression(
##             {
##                 if (any(y < 0)) 
##                   stop("negative values not allowed for the negative binomial family")
##                 n <- rep(1, nobs)
##                 mustart <- y + (y == 0)/6
##             }), validmu = function (mu) 
##         all(mu > 0), valideta = function (eta) 
##         TRUE, simulate = function (object, nsim) 
##         {
##             ftd <- fitted(object)
##             rnegbin(nsim * length(ftd), ftd, .Theta)
##         }), corstr = "fixed", corr.mat = c(1, 0.933333333, 0.866666667, 
##     0.666666667, 0.666666667, 0.666666667, 0.6, 0.4, 0.4, 0.4, 
##     0.4, 0.266666667, 0.266666667, 0.133333333, 0.133333333, 
##     0.066666667, 0, 0.933333333, 1, 0.866666667, 0.666666667, 
##     0.666666667, 0.666666667, 0.6, 0.4, 0.4, 0.4, 0.4, 0.266666667, 
##     0.266666667, 0.133333333, 0.133333333, 0.066666667, 0, 0.866666667, 
##     0.866666667, 1, 0.666666667, 0.666666667, 0.666666667, 0.6, 
##     0.4, 0.4, 0.4, 0.4, 0.266666667, 0.266666667, 0.133333333, 
##     0.133333333, 0.066666667, 0, 0.666666667, 0.666666667, 0.666666667, 
##     1, 0.933333333, 0.866666667, 0.6, 0.4, 0.4, 0.4, 0.4, 0.266666667, 
##     0.266666667, 0.133333333, 0.133333333, 0.066666667, 0, 0.666666667, 
##     0.666666667, 0.666666667, 0.933333333, 1, 0.866666667, 0.6, 
##     0.4, 0.4, 0.4, 0.4, 0.266666667, 0.266666667, 0.133333333, 
##     0.133333333, 0.066666667, 0, 0.666666667, 0.666666667, 0.666666667, 
##     0.866666667, 0.866666667, 1, 0.6, 0.4, 0.4, 0.4, 0.4, 0.266666667, 
##     0.266666667, 0.133333333, 0.133333333, 0.066666667, 0, 0.6, 
##     0.6, 0.6, 0.6, 0.6, 0.6, 1, 0.4, 0.4, 0.4, 0.4, 0.266666667, 
##     0.266666667, 0.133333333, 0.133333333, 0.066666667, 0, 0.4, 
##     0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 1, 0.933333333, 0.8, 0.8, 0.266666667, 
##     0.266666667, 0.133333333, 0.133333333, 0.066666667, 0, 0.4, 
##     0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.933333333, 1, 0.8, 0.8, 0.266666667, 
##     0.266666667, 0.133333333, 0.133333333, 0.066666667, 0, 0.4, 
##     0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.8, 0.8, 1, 0.933333333, 0.266666667, 
##     0.266666667, 0.133333333, 0.133333333, 0.066666667, 0, 0.4, 
##     0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.8, 0.8, 0.933333333, 1, 0.266666667, 
##     0.266666667, 0.133333333, 0.133333333, 0.066666667, 0, 0.266666667, 
##     0.266666667, 0.266666667, 0.266666667, 0.266666667, 0.266666667, 
##     0.266666667, 0.266666667, 0.266666667, 0.266666667, 0.266666667, 
##     1, 0.933333333, 0.133333333, 0.133333333, 0.066666667, 0, 
##     0.266666667, 0.266666667, 0.266666667, 0.266666667, 0.266666667, 
##     0.266666667, 0.266666667, 0.266666667, 0.266666667, 0.266666667, 
##     0.266666667, 0.933333333, 1, 0.133333333, 0.133333333, 0.066666667, 
##     0, 0.133333333, 0.133333333, 0.133333333, 0.133333333, 0.133333333, 
##     0.133333333, 0.133333333, 0.133333333, 0.133333333, 0.133333333, 
##     0.133333333, 0.133333333, 0.133333333, 1, 0.933333333, 0.066666667, 
##     0, 0.133333333, 0.133333333, 0.133333333, 0.133333333, 0.133333333, 
##     0.133333333, 0.133333333, 0.133333333, 0.133333333, 0.133333333, 
##     0.133333333, 0.133333333, 0.133333333, 0.933333333, 1, 0.066666667, 
##     0, 0.066666667, 0.066666667, 0.066666667, 0.066666667, 0.066666667, 
##     0.066666667, 0.066666667, 0.066666667, 0.066666667, 0.066666667, 
##     0.066666667, 0.066666667, 0.066666667, 0.066666667, 0.066666667, 
##     1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1), 
##     maxit = 25, tol = 1e-04)
## 
##  Coefficients: 
##  (Intercept) eggs_mass
##        3.747    -2.784
## 
##  Scale Parameter:  1.566 
## 
##  Correlation Model:  fixed
##  Working Correlation[1:4,1:4]: 
##        GA     OH     AL     NJ
## GA 1.0000 0.9333 0.8667 0.6667
## OH 0.9333 1.0000 0.8667 0.6667
## AL 0.8667 0.8667 1.0000 0.6667
## NJ 0.6667 0.6667 0.6667 1.0000
## 
##  Number of clusters:  1   Maximum cluster size:  17 
##  Number of observations with nonzero weight:  17
# Now resampling


# ordsamplep.nb2(n=sims,r=r,mu=mu,Sigma=C)


# bootstrp normal

X<-rnorm(100,mean=3,sd=2)

m.X<-mean(X)
sd.X<-sd(X)
bt.X<-apply(replicate(1000,rnorm(100,mean=m.X,sd=sd.X) ),2,mean)

c(mean(X) - 1.96*sd(X)/10,mean(X) + 1.96*sd(X)/10)
## [1] 2.776969 3.530315
quantile(bt.X,probs = c(0.025,0.975))
##     2.5%    97.5% 
## 2.776617 3.526464
library(ggplot2)

# Poisson regression plot

newdat <- data.frame(eggs_mass = sort(eggs_mass))
predPOISSE<-predict(fitPOIS, newdata = newdat, type = "response", se.fit = TRUE)
newdat$predPOIS <-predPOISSE$fit 
newdat$predPOISse <-predPOISSE$se 
newdat$predPOISucl <-newdat$predPOIS + 1.96*newdat$predPOISse
newdat$predPOISlcl <-newdat$predPOIS - 1.96*newdat$predPOISse




p.poi<-ggplot(data=newdat, mapping=aes(x=eggs_mass, y=eggs_per_year)) + 
  geom_point() +  
  geom_line(mapping=aes(y=predPOIS)) +
  geom_ribbon(data=newdat, aes(ymin = predPOISlcl, ymax = predPOISucl), alpha=0.2)+ggtitle("Poisson  regression")


# NB2 regression plot

newdat$predNB2 <- predict(fitNB2, newdata = newdat, type = "response")
predNB2SE<-predict(fitNB2, newdata = newdat, type = "response", se.fit = TRUE)
newdat$predNB2 <-predNB2SE$fit 
newdat$predNB2se <-predNB2SE$se 
newdat$predNB2ucl <-newdat$predNB2 + 1.96*newdat$predNB2se
newdat$predNB2lcl <-newdat$predNB2 - 1.96*newdat$predNB2se


p.nb2<-ggplot(data=newdat, mapping=aes(x=eggs_mass, y=eggs_per_year)) + 
  geom_point() +  
  geom_line(mapping=aes(y=predNB2)) +
  geom_ribbon(data=newdat, aes(ymin = predNB2lcl, ymax = predNB2ucl), alpha=0.2)+ggtitle("Negative Binomial regression")


# phy poisson regression plot

subfitPOIS<-fitPOIS
subfitPOIS$coefficients<-phyfitPOIS$coefficients
subfitPOIS$fitted.values<-phyfitPOIS$fitted.values
phyfitPOIS<-subfitPOIS
predphyPOISSE<-predict(phyfitPOIS, newdata = newdat, type = "response", se.fit = TRUE)
newdat$predphyPOIS <-predphyPOISSE$fit 
newdat$predphyPOISse <-predphyPOISSE$se 
newdat$predphyPOISucl <-newdat$predphyPOIS + 1.96*newdat$predphyPOISse
newdat$predphyPOISlcl <-newdat$predphyPOIS - 1.96*newdat$predphyPOISse

p.phypoi<-ggplot(data=newdat, mapping=aes(x=eggs_mass, y=eggs_per_year)) + 
  geom_point() +  
  geom_line(mapping=aes(y=predphyPOIS)) +
  geom_ribbon(data=newdat, aes(ymin = predphyPOISlcl, ymax = predphyPOISucl), alpha=0.2)+ggtitle("PhyPoisson regression")


# phy NB2 regression plot

phyfitNB2<-compar.gee.nb2(eggs_per_year ~ eggs_mass,phy=tree,theta=theta)

phyfitNB2
## geem(formula = eggs_per_year ~ eggs_mass, id = c(1, 1, 1, 1, 
## 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), data = <environment>, 
##     family = list(family = "Negative Binomial(14.9792)", link = "log", 
##         linkfun = function (mu) 
##         log(mu), linkinv = function (eta) 
##         pmax(exp(eta), .Machine$double.eps), variance = function (mu) 
##         mu + mu^2/.Theta, dev.resids = function (y, mu, wt) 
##         2 * wt * (y * log(pmax(1, y)/mu) - (y + .Theta) * log((y + 
##             .Theta)/(mu + .Theta))), aic = function (y, n, mu, 
##             wt, dev) 
##         {
##             term <- (y + .Theta) * log(mu + .Theta) - y * log(mu) + 
##                 lgamma(y + 1) - .Theta * log(.Theta) + lgamma(.Theta) - 
##                 lgamma(.Theta + y)
##             2 * sum(term * wt)
##         }, mu.eta = function (eta) 
##         pmax(exp(eta), .Machine$double.eps), initialize = expression(
##             {
##                 if (any(y < 0)) 
##                   stop("negative values not allowed for the negative binomial family")
##                 n <- rep(1, nobs)
##                 mustart <- y + (y == 0)/6
##             }), validmu = function (mu) 
##         all(mu > 0), valideta = function (eta) 
##         TRUE, simulate = function (object, nsim) 
##         {
##             ftd <- fitted(object)
##             rnegbin(nsim * length(ftd), ftd, .Theta)
##         }), corstr = "fixed", corr.mat = c(1, 0.933333333, 0.866666667, 
##     0.666666667, 0.666666667, 0.666666667, 0.6, 0.4, 0.4, 0.4, 
##     0.4, 0.266666667, 0.266666667, 0.133333333, 0.133333333, 
##     0.066666667, 0, 0.933333333, 1, 0.866666667, 0.666666667, 
##     0.666666667, 0.666666667, 0.6, 0.4, 0.4, 0.4, 0.4, 0.266666667, 
##     0.266666667, 0.133333333, 0.133333333, 0.066666667, 0, 0.866666667, 
##     0.866666667, 1, 0.666666667, 0.666666667, 0.666666667, 0.6, 
##     0.4, 0.4, 0.4, 0.4, 0.266666667, 0.266666667, 0.133333333, 
##     0.133333333, 0.066666667, 0, 0.666666667, 0.666666667, 0.666666667, 
##     1, 0.933333333, 0.866666667, 0.6, 0.4, 0.4, 0.4, 0.4, 0.266666667, 
##     0.266666667, 0.133333333, 0.133333333, 0.066666667, 0, 0.666666667, 
##     0.666666667, 0.666666667, 0.933333333, 1, 0.866666667, 0.6, 
##     0.4, 0.4, 0.4, 0.4, 0.266666667, 0.266666667, 0.133333333, 
##     0.133333333, 0.066666667, 0, 0.666666667, 0.666666667, 0.666666667, 
##     0.866666667, 0.866666667, 1, 0.6, 0.4, 0.4, 0.4, 0.4, 0.266666667, 
##     0.266666667, 0.133333333, 0.133333333, 0.066666667, 0, 0.6, 
##     0.6, 0.6, 0.6, 0.6, 0.6, 1, 0.4, 0.4, 0.4, 0.4, 0.266666667, 
##     0.266666667, 0.133333333, 0.133333333, 0.066666667, 0, 0.4, 
##     0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 1, 0.933333333, 0.8, 0.8, 0.266666667, 
##     0.266666667, 0.133333333, 0.133333333, 0.066666667, 0, 0.4, 
##     0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.933333333, 1, 0.8, 0.8, 0.266666667, 
##     0.266666667, 0.133333333, 0.133333333, 0.066666667, 0, 0.4, 
##     0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.8, 0.8, 1, 0.933333333, 0.266666667, 
##     0.266666667, 0.133333333, 0.133333333, 0.066666667, 0, 0.4, 
##     0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.8, 0.8, 0.933333333, 1, 0.266666667, 
##     0.266666667, 0.133333333, 0.133333333, 0.066666667, 0, 0.266666667, 
##     0.266666667, 0.266666667, 0.266666667, 0.266666667, 0.266666667, 
##     0.266666667, 0.266666667, 0.266666667, 0.266666667, 0.266666667, 
##     1, 0.933333333, 0.133333333, 0.133333333, 0.066666667, 0, 
##     0.266666667, 0.266666667, 0.266666667, 0.266666667, 0.266666667, 
##     0.266666667, 0.266666667, 0.266666667, 0.266666667, 0.266666667, 
##     0.266666667, 0.933333333, 1, 0.133333333, 0.133333333, 0.066666667, 
##     0, 0.133333333, 0.133333333, 0.133333333, 0.133333333, 0.133333333, 
##     0.133333333, 0.133333333, 0.133333333, 0.133333333, 0.133333333, 
##     0.133333333, 0.133333333, 0.133333333, 1, 0.933333333, 0.066666667, 
##     0, 0.133333333, 0.133333333, 0.133333333, 0.133333333, 0.133333333, 
##     0.133333333, 0.133333333, 0.133333333, 0.133333333, 0.133333333, 
##     0.133333333, 0.133333333, 0.133333333, 0.933333333, 1, 0.066666667, 
##     0, 0.066666667, 0.066666667, 0.066666667, 0.066666667, 0.066666667, 
##     0.066666667, 0.066666667, 0.066666667, 0.066666667, 0.066666667, 
##     0.066666667, 0.066666667, 0.066666667, 0.066666667, 0.066666667, 
##     1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1), 
##     maxit = 25, tol = 1e-04)
## 
##  Coefficients: 
##  (Intercept) eggs_mass
##        3.747    -2.784
## 
##  Scale Parameter:  1.566 
## 
##  Correlation Model:  fixed
##  Working Correlation[1:4,1:4]: 
##        GA     OH     AL     NJ
## GA 1.0000 0.9333 0.8667 0.6667
## OH 0.9333 1.0000 0.8667 0.6667
## AL 0.8667 0.8667 1.0000 0.6667
## NJ 0.6667 0.6667 0.6667 1.0000
## 
##  Number of clusters:  1   Maximum cluster size:  17 
##  Number of observations with nonzero weight:  17
subfitNB2<-fitNB2
subfitNB2$coefficients<-phyfitNB2$coefficients
subfitNB2$fitted.values<-c(sort(fitted(phyfitNB2), decreasing = T))#phyfitNB2$fitted.values
phyfitNB2<-subfitNB2
predphyNB2SE<-predict(phyfitNB2, newdata = newdat, type = "response", se.fit = TRUE)
newdat$predphyNB2 <-predphyNB2SE$fit 
newdat$predphyNB2se <-predphyNB2SE$se 
newdat$predphyNB2ucl <-newdat$predphyNB2 + 1.96*newdat$predphyNB2se
newdat$predphyNB2lcl <-newdat$predphyNB2 - 1.96*newdat$predphyNB2se

p.phynb2<-ggplot(data=newdat, mapping=aes(x=eggs_mass, y=eggs_per_year)) + 
  geom_point() +  
  geom_line(mapping=aes(y=predphyNB2)) +
  geom_ribbon(data=newdat, aes(ymin = predphyNB2lcl, ymax = predphyNB2ucl), alpha=0.2)+ggtitle("PhyNB2 regression")


# Poisson Regression
p.poi <- ggplot(data=newdat, mapping=aes(x=eggs_mass, y=eggs_per_year)) + 
  geom_point(color="blue") +  
  geom_line(mapping=aes(y=predPOIS), color="blue") +
  geom_ribbon(data=newdat, aes(ymin=predPOISlcl, ymax=predPOISucl), alpha=0.2, fill="blue") +
  ggtitle("Poisson Regression")+xlab("Egg Mass") + ylab("Egg Per year")

# Negative Binomial Regression
p.nb2 <- ggplot(data=newdat, mapping=aes(x=eggs_mass, y=eggs_per_year)) + 
  geom_point(color="blue") +  
  geom_line(mapping=aes(y=predNB2), color="blue") +
  geom_ribbon(data=newdat, aes(ymin=predNB2lcl, ymax=predNB2ucl), alpha=0.2, fill="blue") +
  ggtitle("Negative Binomial Regression")+xlab("Egg Mass") + ylab("Egg Per year")

# PhyPoisson Regression
p.phypoi <- ggplot(data=newdat, mapping=aes(x=eggs_mass, y=eggs_per_year)) + 
  geom_point(color="purple") +  
  geom_line(mapping=aes(y=predphyPOIS), color="purple") +
  geom_ribbon(data=newdat, aes(ymin=predphyPOISlcl, ymax=predphyPOISucl), alpha=0.2, fill="purple") +
  ggtitle("Phylogenetic Poisson Regression")+xlab("Egg Mass") + ylab("Egg Per year")

# PhyNB2 Regression
p.phynb2 <- ggplot(data=newdat, mapping=aes(x=eggs_mass, y=eggs_per_year)) + 
  geom_point(color="purple") +  
  geom_line(mapping=aes(y=predphyNB2), color="purple") +
  geom_ribbon(data=newdat, aes(ymin=predphyNB2lcl, ymax=predphyNB2ucl), alpha=0.2, fill="purple") +
  ggtitle("Phylogenetic Negative Binomial Regression")+xlab("Egg Mass") + ylab("Egg Per year")

grid.arrange(p.poi, p.nb2, p.phypoi, p.phynb2, nrow=2)