######################## #### R script for Hewison et al. Article DOI: 10.1098/rspb.xxxx.xxxx data_disp=read.table("data_dispersal.txt",sep=" ",header=T) ######## dispersal propensity library(visreg) library(mgcv) library(MuMIn) options(na.action = "na.fail") library(chngpt) library(lme4) library(AICcmodavg) library(nlme) data_disp$Dispersal=0 data_disp$Dispersal[data_disp$Dispersal_yes_no=="yes"]=1 essai <- glm(Dispersal~Body_mass_1_February_kg*Sex,data=data_disp,family="binomial") dd <- dredge(essai) subset(dd, delta < 10) summary(get.models(dd, 1)[[1]]) mod=get.models(dd, 1)[[1]] visreg(mod,"Body_mass_1_February_kg",by="Sex",scale="response",ylab="Dispersal probability",xlab="Body mass on 1 February (kg)",overlay=FALSE, fill.par=list(col=adjustcolor("dodgerblue1", alpha.f = 0.25)),ylim=c(0,1), line.par=list(col=c("navy"))) dev.print(jpeg,filename="Figure 1.jpg",quality=100,units="px",width=2000,res=300) chngpt.test(formula.null=Dispersal~1, formula.chngpt=~Body_mass_1_February_kg, subset(data_disp,Sex=="F"), type="hinge", family="binomial") chngpt.test(formula.null=Dispersal~1, formula.chngpt=~Body_mass_1_February_kg, subset(data_disp,Sex=="M"), type="hinge", family="binomial") voir=visreg(mod,"Body_mass_1_February_kg",by="Sex",scale="response",ylab="Dispersal probability of females",xlab="Body mass on 1 February (kg)",overlay=FALSE, fill.par=list(col=adjustcolor("dodgerblue1", alpha.f = 0.25)),ylim=c(0,1), rug=0, line.par=list(col=c("navy"))) par(mfrow=c(1,3)) fem=subset(voir$fit,Sex=="F") plot(visregFit~Body_mass_1_February_kg,data=fem,ylim=c(0,1),type="l",lwd=2,col="navy", ylab="Dispersal probability of females",xlab="Body mass on 1 February (kg)") polygon(c(fem$Body_mass_1_February_kg,rev(fem$Body_mass_1_February_kg)),c(fem$visregLwr, rev(fem$visregUpr)), col=adjustcolor("dodgerblue1", alpha.f = 0.25), border="white") Axis(side = 1, at = voir$res$Body_mass_1_February_kg[voir$res$visregPos=="FALSE" & voir$res$Sex=="F"], labels = FALSE, tck = 0.03, lwd = 0.5, col.ticks = "black") Axis(side = 3, at = voir$res$Body_mass_1_February_kg[voir$res$visregPos=="TRUE" & voir$res$Sex=="F"], labels = FALSE, tck = 0.03, lwd = 0.5, col.ticks = "black") mal=subset(voir$fit,Sex=="M") plot(visregFit~Body_mass_1_February_kg,data=mal,ylim=c(0,1),type="l",lwd=2,col="turquoise", ylab="Dispersal probability of males",xlab="Body mass on 1 February (kg)") polygon(c(mal$Body_mass_1_February_kg,rev(mal$Body_mass_1_February_kg)),c(mal$visregLwr, rev(mal$visregUpr)), col=adjustcolor("turquoise", alpha.f = 0.25), border="white") Axis(side = 1, at = voir$res$Body_mass_1_February_kg[voir$res$visregPos=="FALSE" & voir$res$Sex=="M"], labels = FALSE, tck = 0.03, lwd = 0.5, col.ticks = "black") Axis(side = 3, at = voir$res$Body_mass_1_February_kg[voir$res$visregPos=="TRUE" & voir$res$Sex=="M"], labels = FALSE, tck = 0.03, lwd = 0.5, col.ticks = "black") mal=subset(data_disp,Sex=="M") mod <- gam(Dispersal~I((Body_mass_1_February_kg-18.105)*(Body_mass_1_February_kg>18.105)),data=mal,family="binomial") visreg(mod,"Body_mass_1_February_kg",scale="response", ylab="Dispersal probability of males",xlab="Body mass on 1 February (kg)",overlay=FALSE, fill.par=list(col=adjustcolor("turquoise", alpha.f = 0.25)),ylim=c(0,1), line.par=list(col=c("turquoise"))) dev.print(jpeg,filename="Figure 1bis.jpg",quality=100,units="px",width=2000,res=300) ###### dispersal propensity with the year as a random effect on the intercept essai <- glmer(Dispersal~Body_mass_1_February_kg*Sex+(1|Year),data=data_disp,family="binomial") dd <- dredge(essai) subset(dd, delta < 10) summary(get.models(dd, 1)[[1]]) mod=get.models(dd, 1)[[1]] new=expand.grid(Sex=levels(data_disp$Sex), Body_mass_1_February_kg=seq(min(data_disp$Body_mass_1_February_kg,na.rm=TRUE),max(data_disp$Body_mass_1_February_kg,na.rm=TRUE),0.5)) pred=predictSE(mod,new) new=cbind(new,pred) new$lwr=new$fit-1.96*new$se.fit new$upr=new$fit+1.96*new$se.fit par(mfrow=c(1,3)) fem=subset(new,Sex=="F") plot(fit~Body_mass_1_February_kg,data=fem,ylim=c(0,1),type="l",lwd=2,col="navy", ylab="Dispersal probability of females",xlab="Body mass on 1 February (kg)") polygon(c(fem$Body_mass_1_February_kg,rev(fem$Body_mass_1_February_kg)),c(fem$lwr, rev(fem$upr)), col=adjustcolor("dodgerblue1", alpha.f = 0.25), border="white") Axis(side = 1, at = data_disp$Body_mass_1_February_kg[data_disp$Dispersal==0 & data_disp$Sex=="F"], labels = FALSE, tck = 0.03, lwd = 0.5, col.ticks = "black") Axis(side = 3, at = data_disp$Body_mass_1_February_kg[data_disp$Dispersal==1 & data_disp$Sex=="F"], labels = FALSE, tck = 0.03, lwd = 0.5, col.ticks = "black") mal=subset(new,Sex=="M") plot(fit~Body_mass_1_February_kg,data=mal,ylim=c(0,1),type="l",lwd=2,col="turquoise", ylab="Dispersal probability of females",xlab="Body mass on 1 February (kg)") polygon(c(mal$Body_mass_1_February_kg,rev(mal$Body_mass_1_February_kg)),c(mal$lwr, rev(mal$upr)), col=adjustcolor("turquoise", alpha.f = 0.25), border="white") Axis(side = 1, at = data_disp$Body_mass_1_February_kg[data_disp$Dispersal==0 & data_disp$Sex=="M"], labels = FALSE, tck = 0.03, lwd = 0.5, col.ticks = "black") Axis(side = 3, at = data_disp$Body_mass_1_February_kg[data_disp$Dispersal==1 & data_disp$Sex=="M"], labels = FALSE, tck = 0.03, lwd = 0.5, col.ticks = "black") mal=subset(data_disp,Sex=="M") mod <- gam(Dispersal~I((Body_mass_1_February_kg-18.105)*(Body_mass_1_February_kg>18.105))+s(Year,bs="re"),data=mal,family="binomial") visreg(mod,"Body_mass_1_February_kg",scale="response", ylab="Dispersal probability of males",xlab="Body mass on 1 February (kg)",overlay=FALSE, fill.par=list(col=adjustcolor("turquoise", alpha.f = 0.25)),ylim=c(0,1), line.par=list(col=c("turquoise"))) dev.print(jpeg,filename="Figure 1 random.jpg",quality=100,units="px",width=2000,res=300) ######## dispersal distance disperseur=subset(data_disp,Dispersal_Status %in% c("CD: classic disperser","PD: progressive disperser","AD: aborted disperser")) disperseur=subset(disperseur,is.na(Body_mass_at_capture_kg)=="FALSE") disperseur=droplevels(disperseur) ######## gls models for dispersal distance glsControl(maxIter = 50000, msMaxIter=20000, returnObject = TRUE, msVerbose = TRUE) fm1 <- gls(Dispersal_Distance_km~Body_mass_1_February_kg*Sex, data=disperseur,method="ML") fm2 <- update(fm1, weights = varPower(form = ~ fitted(.))) dd <- dredge(fm2) subset(dd) summary(get.models(dd, 1)[[1]]) mod=get.models(dd, 3)[[1]] summary(get.models(dd, 3)[[1]]) pred=visreg(mod,"Body_mass_1_February_kg",by="Sex",ylab="Dispersal distance",xlab="Body mass on 1 February (kg)",overlay=TRUE, fill.par=list(col=adjustcolor("dodgerblue1", alpha.f = 0.25)), line.par=list(col=c("navy"))) plot(Dispersal_Distance_km~Body_mass_1_February_kg,data=disperseur,ylab="Dispersal distance (km)",xlab="Body mass on 1 February (kg)", type="n",xlim=c(12,21),ylim=c(0,60)) points(Dispersal_Distance_km~Body_mass_1_February_kg,data=subset(disperseur,Sex=="F"),col="navy",pch=16) points(Dispersal_Distance_km~Body_mass_1_February_kg,data=subset(disperseur,Sex=="M"),col="turquoise",pch=16) lines((visregFit)~Body_mass_1_February_kg,data=subset(pred$fit,Sex=="F"),col="navy",lwd=2) lines((visregUpr)~Body_mass_1_February_kg,data=subset(pred$fit,Sex=="F"),col="navy",lwd=2,lty=2) lines((visregLwr)~Body_mass_1_February_kg,data=subset(pred$fit,Sex=="F"),col="navy",lwd=2,lty=2) lines((visregFit)~Body_mass_1_February_kg,data=subset(pred$fit,Sex=="M"),col="turquoise",lwd=2) lines((visregUpr)~Body_mass_1_February_kg,data=subset(pred$fit,Sex=="M"),col="turquoise",lwd=2,lty=2) lines((visregLwr)~Body_mass_1_February_kg,data=subset(pred$fit,Sex=="M"),col="turquoise",lwd=2,lty=2) legend(12,60, bty="n", legend=c("Female","Male"),lty=c(1),lwd=5,col=c("navy","turquoise"),text.font=2,cex=1) dev.print(jpeg,filename="Figure 3.jpg",quality=100,units="px",width=2000,res=300) ######## lme models for dispersal distance with the year as a random effect on the intercept glsControl(maxIter = 50000, msMaxIter=20000, returnObject = TRUE, msVerbose = TRUE) fm3 <- lme(Dispersal_Distance_km~Body_mass_1_February_kg*Sex,random = ~ 1|Year, data=disperseur,method="ML") fm4 <- update(fm3, weights = varPower(form = ~ fitted(.))) dd <- dredge(fm4) subset(dd) summary(get.models(dd, 1)[[1]]) mod=get.models(dd, 3)[[1]] summary(get.models(dd, 3)[[1]]) pred=visreg(mod,"Body_mass_1_February_kg",by="Sex",ylab="Dispersal distance",xlab="Body mass on 1 February (kg)",overlay=TRUE, fill.par=list(col=adjustcolor("dodgerblue1", alpha.f = 0.25)), line.par=list(col=c("navy"))) plot(Dispersal_Distance_km~Body_mass_1_February_kg,data=disperseur,ylab="Dispersal distance (km)",xlab="Body mass on 1 February (kg)", type="n",xlim=c(12,21),ylim=c(0,60)) points(Dispersal_Distance_km~Body_mass_1_February_kg,data=subset(disperseur,Sex=="F"),col="navy",pch=16) points(Dispersal_Distance_km~Body_mass_1_February_kg,data=subset(disperseur,Sex=="M"),col="turquoise",pch=16) lines((visregFit)~Body_mass_1_February_kg,data=subset(pred$fit,Sex=="F"),col="navy",lwd=2) lines((visregUpr)~Body_mass_1_February_kg,data=subset(pred$fit,Sex=="F"),col="navy",lwd=2,lty=2) lines((visregLwr)~Body_mass_1_February_kg,data=subset(pred$fit,Sex=="F"),col="navy",lwd=2,lty=2) lines((visregFit)~Body_mass_1_February_kg,data=subset(pred$fit,Sex=="M"),col="turquoise",lwd=2) lines((visregUpr)~Body_mass_1_February_kg,data=subset(pred$fit,Sex=="M"),col="turquoise",lwd=2,lty=2) lines((visregLwr)~Body_mass_1_February_kg,data=subset(pred$fit,Sex=="M"),col="turquoise",lwd=2,lty=2) legend(12,60, bty="n", legend=c("Female","Male"),lty=c(1),lwd=5,col=c("navy","turquoise"),text.font=2,cex=1) dev.print(jpeg,filename="Figure 3 random.jpg",quality=100,units="px",width=2000,res=300)