# Article: FUNCTIONAL GROUP-DEPENDENT EFFECTS OF BIRD COMMUNITIES ON A GRADIENT OF WEEVIL-CAUSED DAMAGE IN EUCALYPTUS PLANTATIONS # Analyses: Functional diversity indices and weevil-caused damage # Author: Ricardo Ceia # Date: 2021-11-04 rm(list = ls()) # Clear environment # Setting working directory #### setwd("C:/Associations between weevil damage and birds/Data") getwd() # Functional diverstity indices analyses #### library(openxlsx) FD <- read.xlsx("Dataset.xlsx",sheet=4,colNames=T) # Importing functional diversity indices data str(FD) # Checking the original column type # and then adjusting columns type to categorical, or ordered FD$quadrat <- as.factor(FD$quadrat) FD$abs_dam_1 = factor(FD$abs_dam_1, levels = c("0","1","2","3","4","5","6"), ordered = TRUE) FD$abs_dam_2 = factor(FD$abs_dam_2, levels = c("0","1","2","3","4","5","6"), ordered = TRUE) str(FD) # Making sure all trait categories have changed as desired, and all cells still contain values. # Functional diversity indices and weevil-caused damage: Cumulative linear mixed models #### # Weevil-caused damage in spring library("ordinal") summary(clmm_sprFRic <- clmm(abs_dam_1 ~ FRic + (1|quadrat), data=FD, nAGQ = 1, Hess=TRUE, threshold = "flexible")) summary(clmm_sprFEve <- clmm(abs_dam_1 ~ FEve + (1|quadrat), data=FD, nAGQ = 1, Hess=TRUE, threshold = "flexible")) summary(clmm_sprFDiv <- clmm(abs_dam_1 ~ FDiv + (1|quadrat), data=FD, nAGQ = 1, Hess=TRUE, threshold = "flexible")) summary(clmm_sprFDis <- clmm(abs_dam_1 ~ FDis + (1|quadrat), data=FD, nAGQ = 1, Hess=TRUE, threshold = "flexible")) summary(clmm_sprRaoQ <- clmm(abs_dam_1 ~ RaoQ + (1|quadrat), data=FD, nAGQ = 1, Hess=TRUE, threshold = "flexible")) summary(clmm_sprFI_S <- clmm(abs_dam_1 ~ FI_S + (1|quadrat), data=FD, nAGQ = 1, Hess=TRUE, threshold = "flexible")) summary(clmm_sprFI_N <- clmm(abs_dam_1 ~ FI_N + (1|quadrat), data=FD, nAGQ = 1, Hess=TRUE, threshold = "flexible")) # Weevil-caused damage in autumn summary(clmm_autFRic <- clmm(abs_dam_2 ~ FRic + (1|quadrat), data=FD, nAGQ = 1, Hess=TRUE, threshold = "flexible")) summary(clmm_autFEve <- clmm(abs_dam_2 ~ FEve + (1|quadrat), data=FD, nAGQ = 1, Hess=TRUE, threshold = "flexible")) summary(clmm_autFDiv <- clmm(abs_dam_2 ~ FDiv + (1|quadrat), data=FD, nAGQ = 1, Hess=TRUE, threshold = "flexible")) summary(clmm_autFDis <- clmm(abs_dam_2 ~ FDis + (1|quadrat), data=FD, nAGQ = 1, Hess=TRUE, threshold = "flexible")) summary(clmm_autRaoQ <- clmm(abs_dam_2 ~ RaoQ + (1|quadrat), data=FD, nAGQ = 1, Hess=TRUE, threshold = "flexible")) summary(clmm_autFI_S <- clmm(abs_dam_2 ~ FI_S + (1|quadrat), data=FD, nAGQ = 1, Hess=TRUE, threshold = "flexible")) summary(clmm_autFI_N <- clmm(abs_dam_2 ~ FI_N + (1|quadrat), data=FD, nAGQ = 1, Hess=TRUE, threshold = "flexible")) # Calculating null models for FDis, RaoQ, FI_S, and FI_N (208 observations) summary(clmm_spr0 <- clmm(abs_dam_1 ~ 1 + (1|quadrat), data=FD, nAGQ = 1, Hess=TRUE, threshold = "flexible")) summary(clmm_aut0 <- clmm(abs_dam_2 ~ 1 + (1|quadrat), data=FD, nAGQ = 1, Hess=TRUE, threshold = "flexible")) # Calculating null models for FRic, FEve, and FDiv (161 observations) library(tidyr) FD_drop <- FD %>% drop_na(FRic) # Exclude the missing observations summary(clmm_spr0_drop <- clmm(abs_dam_1 ~ 1 + (1|quadrat), data=FD_drop, nAGQ = 1, Hess=TRUE, threshold = "flexible")) summary(clmm_aut0_drop <- clmm(abs_dam_2 ~ 1 + (1|quadrat), data=FD_drop, nAGQ = 1, Hess=TRUE, threshold = "flexible")) # Extracting AICc and confidence intervals library("MuMIn") AICc(clmm_sprFRic, clmm_sprFEve, clmm_sprFDiv, clmm_sprFDis, clmm_sprRaoQ, clmm_sprFI_S, clmm_sprFI_N, clmm_spr0, clmm_spr0_drop) confint(clmm_sprFRic) confint(clmm_sprFEve) confint(clmm_sprFDiv) confint(clmm_sprFDis) confint(clmm_sprRaoQ) confint(clmm_sprFI_S) confint(clmm_sprFI_N) AICc(clmm_autFRic, clmm_autFEve, clmm_autFDiv, clmm_autFDis, clmm_autRaoQ, clmm_autFI_S, clmm_autFI_N, clmm_aut0, clmm_aut0_drop) confint(clmm_autFRic) confint(clmm_autFEve) confint(clmm_autFDiv) confint(clmm_autFDis) confint(clmm_autRaoQ) confint(clmm_autFI_S) confint(clmm_autFI_N) # Plotting results #### FD_coef <- read.xlsx("Dataset.xlsx",sheet=5,colNames=T) # Importing FD analyses' coefficients table binded in Excel for plotting FD_coef_spr <- subset(FD_coef, season == "1",) # subsetting matrix for spring FD_coef_aut <- subset(FD_coef, season == "2",) # subsetting matrix for autumn # Model coefficients in spring library("ggplot2") ggplot(data=FD_coef_spr[1:7,], aes(x = factor(index, level = c('FI_N','FI_S','RaoQ','FDis','FDiv','FEve','FRic')), y=Estimate))+ geom_hline(yintercept=0, colour = "#696969",linetype="dashed", lwd=1.5)+ #add dashed line at zero geom_errorbar(aes(ymin=CI.min, ymax=CI.max), colour="grey", width=0, lwd=1.5) + coord_flip()+ # flipping x and y axes geom_point(size=8)+theme_classic(base_size = 30)+ labs(title = "", caption = "", x = "", y = "coefficient", tag = "A")+ theme(plot.title = element_text(hjust=0,vjust=3.5,size=18, face='bold'), plot.tag = element_text(hjust=0,size=30,)) # Model coefficients in autumn ggplot(data=FD_coef_aut[1:7,], aes(x = factor(index, level = c('FI_N','FI_S','RaoQ','FDis','FDiv','FEve','FRic')), y=Estimate))+ geom_hline(yintercept=0, colour = "#696969",linetype="dashed", lwd=1.5)+ #add dashed line at zero geom_errorbar(aes(ymin=CI.min, ymax=CI.max), colour="grey", width=0, lwd=1.5) + coord_flip()+ # flipping x and y axes geom_point(size=8)+theme_classic(base_size = 30)+ labs(title = "", caption = "", x = "", y = "coefficient", tag = "B")+ theme(plot.title = element_text(hjust=0,vjust=3.5,size=18, face='bold'), plot.tag = element_text(hjust=0,size=30,)) rm(list = ls()) # Clear environment dev.off() # Clear plots